KR20150129808A - 메모리 노드를 포함하는 분산형 메모리 시스템을 위한 방법 및 장치 - Google Patents

메모리 노드를 포함하는 분산형 메모리 시스템을 위한 방법 및 장치 Download PDF

Info

Publication number
KR20150129808A
KR20150129808A KR1020157028640A KR20157028640A KR20150129808A KR 20150129808 A KR20150129808 A KR 20150129808A KR 1020157028640 A KR1020157028640 A KR 1020157028640A KR 20157028640 A KR20157028640 A KR 20157028640A KR 20150129808 A KR20150129808 A KR 20150129808A
Authority
KR
South Korea
Prior art keywords
memory
node
memory node
message
information
Prior art date
Application number
KR1020157028640A
Other languages
English (en)
Inventor
케네스 엠. 큐어위츠
션 에스. 에일럴트
Original Assignee
마이크론 테크놀로지, 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크론 테크놀로지, 인크. filed Critical 마이크론 테크놀로지, 인크.
Publication of KR20150129808A publication Critical patent/KR20150129808A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1684Details of memory controller using multiple buses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/35Switches specially adapted for specific applications
    • H04L49/356Switches specially adapted for specific applications for storage area networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Multi Processors (AREA)
  • Signal Processing (AREA)
  • Advance Control (AREA)

Abstract

메모리 노드를 포함하는 분산형 메모리 시스템을 위한 방법 및 장치가 개시된다. 일례의 장치는 프로세서 및 프로세서에 결합된 메모리 시스템을 포함한다. 메모리 시스템은 메모리 시스템에 의해 저장된 정보에 액세스하기 위한 명령어를 프로세서로부터 수신한다. 메모리 시스템은 복수의 메모리 노드를 포함하되, 복수의 메모리 노드의 각각의 메모리 노드는 복수의 메모리 노드의 적어도 하나의 다른 메모리 노드에 결합되고, 복수의 메모리 노드의 각각의 메모리 노드는 연산을 위한 명령어를 포함하는 내부 메시지로서 연산을 수행할 복수의 메모리 노드의 다른 메모리 노드에 제공될 내부 메시지를 발생시키도록 구성된다.

Description

메모리 노드를 포함하는 분산형 메모리 시스템을 위한 방법 및 장치{APPARATUS AND METHODS FOR A DISTRIBUTED MEMORY SYSTEM INCLUDING MEMORY NODES}
상호-참조
본 출원은 2013년 3월 15일자로 출원된 미국 정규 출원 제13/842,984호에 대한 우선권을 주장하며, 이 출원은, 다목적으로, 그 전체가, 참고로 본 명세서에 편입되는 것이다.
컴퓨팅 플랫폼의 처리력은 컴퓨팅 플랫폼 상의 스레드(thread)의 수 및 코어의 수가 증가함에 따라 증가하고 있다. 이러한 처리력 증가는 시스템 메모리 상에 놓이는 대응하는 수요 증가를 초래한다. 예를 들어, 시스템 메모리로의 판독 및 기록 연산은 코어 및 스레드 카운트가 증가함에 따라 증가한다. 메모리 액세스가 컴퓨팅 플랫폼에 대한 상당한 성능 병목이 될 위험이 있다. 예를 들어, 전통적 컴퓨터 아키텍처에 있어서, CPU 대 메모리 인터페이스는, 벌크 메모리 연산에 대해서와 같이, 유의미한 병목을 제기할 수 있다. 즉, 병목은 CPU가 메모리 시스템에 의해 저장된 정보 상에 연산을 수행하도록 메모리 시스템으로의, 그로부터의 그리고 그 내부에서의 모든 트랜잭션을 제어하는 결과로서 생성될 수 있다.
본 발명의 일 실시예에 있어서, 장치는 프로세서 및 프로세서에 결합된 메모리 시스템을 포함한다. 메모리 시스템은 메모리 시스템에 의해 저장된 정보에 액세스하기 위한 명령어를 프로세서로부터 수신한다. 메모리 시스템은 복수의 메모리 노드를 포함하되, 복수의 메모리 노드의 각각의 메모리 노드는 복수의 메모리 노드의 적어도 하나의 다른 메모리 노드에 결합되고 복수의 메모리 노드의 각각의 메모리 노드는 연산을 위한 명령어를 포함하는 내부 메시지를 발생시키도록 구성된다. 내부 메시지는 연산을 수행할 복수의 메모리 노드의 다른 메모리 노드에 제공되게 된다.
본 발명의 다른 일 실시예에 있어서, 장치는 로컬 메모리에 정보를 저장하도록 구성된 제1 메모리 노드를 포함하고 제1 메모리 노드에 결합되어 제1 명령어를 포함하는 제1 메시지를 수신하도록 구성된 제2 메모리 노드를 더 포함한다. 제2 메모리 노드는 제1 메시지에 포함되지 않은 제2 명령어를 포함하는 제2 메시지를 발생시키고 제2 메시지를 제1 메모리 노드에 제공하도록 더 구성된다. 제1 메모리 노드는 제2 명령어에 따라 메모리 연산을 수행하도록 더 구성된다.
본 발명의 다른 일 실시예에 있어서, 장치는 함께 통신 결합된 복수의 메모리 노드를 포함하되, 복수의 메모리 노드의 각각의 메모리 노드는 버스, 버스에 결합되고 정보를 저장하도록 구성된 로컬 메모리, 계산 로직, 통신 인터페이스 및 노드 컨트롤러를 포함한다. 계산 로직은 버스에 결합되고 로컬 메모리에 의해 저장된 정보 상에 계산 연산을 수행하도록 구성된다. 통신 인터페이스는 버스에 결합되고 메모리 노드와의 통신을 제공하도록 구성된다. 노드 컨트롤러는 버스에 결합되고 메모리 연산을 수행하도록 로컬 메모리를 제어하기 위한 명령어를 제공하도록 구성되고 계산 연산을 수행하도록 계산 로직을 제어하기 위한 명령어를 제공하도록 구성된다. 노드 컨트롤러는 메모리 노드로부터 외부에 제공되도록 통신 인터페이스에 제공되는 명령어를 포함하는 메시지를 발생시키도록 더 구성된다.
본 발명의 다른 일 실시예에 있어서, 방법은 메모리 시스템의 제1 메모리 노드에서 외부 메시지를 수신하는 단계를 포함하고, 외부 메시지는 제1 메모리 연산을 수행하기 위한 제1 명령어를 포함한다. 제1 명령어에 응답하여, 제2 메모리 연산을 위한 제2 명령어를 포함하는 내부 메시지가 제1 메모리 노드에서 발생된다. 제2 명령어는 외부 메시지에 포함되지 않는다. 제2 메시지는 메모리 시스템의 제2 메모리 노드에 제공되고 제2 메모리 연산은 제2 메시지에 응답하여 제2 메모리 노드에서 수행된다.
본 발명의 다른 일 실시예에 있어서, 방법은 메모리 시스템의 제1 메모리 노드에서 제1 외부 메시지를 수신하는 단계를 포함한다. 제1 외부 메시지는 검색 키와 관련된 정보를 찾도록 검색하기 위한 제1 명령어를 포함한다. 제1 메모리 노드의 로컬 메모리는 검색 키와 관련된 정보를 찾도록 검색하기 위해 액세스된다. 검색 키와 관련된 정보를 찾도록 검색하기 위한 제2 명령어를 포함하는 제1 내부 메시지가 제1 메모리 노드에서 발생된다. 제1 내부 메시지는 메모리 시스템의 제2 메모리 노드에 제공된다. 제1 내부 메시지에 응답하여, 제2 메모리 노드의 로컬 메모리는 검색 키와 관련된 정보를 찾도록 검색하기 위해 액세스된다. 검색 키와 관련되는 제1 메모리 노드의 로컬 메모리로부터의 정보를 포함하는 제2 내부 메시지가 제1 메모리 노드에서 발생되고, 제2 내부 메시지는 메모리 시스템의 제3 메모리 노드에 제공된다. 검색 키와 관련되는 제2 메모리 노드의 로컬 메모리로부터의 정보를 포함하는 제3 내부 메시지가 제2 메모리 노드에서 발생되고, 제3 내부 메시지는 메모리 시스템의 제3 메모리 노드에 제공된다.
도 1은 본 발명의 일 실시예에 따른 메모리 시스템을 포함하는 장치의 블록 선도;
도 2는 본 발명의 일 실시예에 따른 메모리 시스템의 블록 선도;
도 3은 본 발명의 일 실시예에 따른 메모리 노드의 블록 선도;
도 4는 본 발명의 일 실시예에 따른 메모리 시스템의 일례의 연산의 블록 선도;
도 5는 링크된 데이터 구조의 선도; 및
도 6은 본 발명의 일 실시예에 따른 메모리 시스템의 일례의 연산의 순서도.
본 발명의 실시예의 충분한 이해를 제공하도록 소정 상세가 아래에 제시된다. 그렇지만, 본 발명의 실시예가 이들 특정 상세 없이 실시될 수 있음은 당업자에게 명확할 것이다. 더욱, 여기에서 설명되는 본 발명의 특정 실시예는 예로서 제공되며 본 발명의 범위를 이들 특정 실시예로 한정하는데 사용되어서는 아니된다. 다른 경우에서, 주지의 회로, 제어 신호, 타이밍 프로토콜 및 소프트웨어 연산은 본 발명을 불필요하게 모호하게 하는 것을 피하기 위하여 상세히 보여주지는 않았다.
도 1은 본 발명의 일 실시예에 따른 처리 시스템(100)을 포함하는 장치를 예시하고 있다. 처리 시스템(100)은 로컬 메모리 버스(130)를 통해 메모리(120)에 결합된 프로세서(110)를 포함한다. 여기에서 사용될 때, "프로세서"는 중앙 처리 장치(CPU), 그래픽 처리 장치(GPU), 시스템 컨트롤러, 메모리 컨트롤러 등을 지칭할 수 있다. 프로세서(110)는 하나 이상의 프로세서를 표현할 수 있다. 프로세서(110)는 프로세서(110)가 신속하게 액세스하도록 소망될 수 있는 정보, 예를 들어, 프로그램, 명령어 및/또는 데이터를 저장하도록 메모리(120)를 사용할 수 있다. 처리 시스템(100)은 프로세서(110)가 메모리 버스(150)를 통하여 통신하는 메모리 시스템(140)을 더 포함한다. 메모리 시스템(140)은 비교적 대량의 정보, 예를 들어, 대량 세트의 프로그램, 명령어 및/또는 다른 정보를 저장하도록 사용될 수 있다.
메모리 시스템(140)에 의해 저장된 정보는 메모리 시스템(140)에 의해 수신되는 메시지를 제공하는 프로세서(110)에 의해 액세스될 수 있다. 메시지는 메모리 시스템(140)을 위한 정보, 예를 들어, 명령어 및/또는 데이터를 포함할 수 있다. 부가적으로 또는 대안으로 메시지는 소스 메모리 노드, 수신지 메모리는 물론, 수행될 연산도 관련된 정보를 포함할 수 있다. 메모리 시스템(140)은 프로세서(110)에 의해 제공된 메시지에 포함된 명령어에 따라 연산을 수행할 수 있다. 메모리 시스템(140)은 프로세서(110)로부터 수신된 메시지에 응답하여 프로세서(110)에 메시지를 제공할 수 있다. 예를 들어, 메모리 시스템(140)은 메모리 시스템(140)으로부터 정보를 판독하기 위한 명령어를 포함하는 메시지를 프로세서(110)로부터 수신할 수 있다. 프로세서(110)로부터의 메시지에 응답하여, 메모리 시스템(140)은 판독 연산을 수행하고 판독된 정보를 포함하는 메시지를 프로세서(110)에 제공할 수 있다. 다른 일례에 있어서, 메모리 시스템(140)은 메모리 시스템(140)에 정보를 기록하기 위한 명령어를 포함하는 그리고 기록될 정보를 더 포함하는 메시지를 프로세서(110)로부터 수신할 수 있다. 프로세서(110)로부터의 메시지에 응답하여, 메모리 시스템(140)은 메모리에 정보를 기록하도록 기록 연산을 수행할 수 있다. 메모리 시스템(140)은 기록 명령의 완료의 확인 응답을 포함하는 메시지를 프로세서(110)에 제공할 수 있다. 다양한 다른 유형의 명령어, 데이터 및/또는 다른 정보를 포함하는 메시지가 또한 메모리 시스템(140) 및 프로세서(110)에 의해 수신 및 제공될 수 있다.
일부 실시예에 있어서, 메모리 시스템(140)은 복수의 메모리 노드를 포함하는 메모리 시스템이거나 포함할 수 있다. 메모리 노드는 메모리 노드 간 정보(예를 들어, 명령어, 데이터 등)를 제공하도록, 예를 들어, 프로세서(110)로부터 메시지를 수신하는 것에 응답하여 연산을 수행하도록 구성될 수 있다. 메모리 시스템(140)은 통신 네트워크를 통해 함께 통신 결합된 복수의 메모리 노드를 갖는 분산형 메모리 시스템을 표현할 수 있다. 그러한 메모리 시스템으로는, 더 높은 레벨 메모리 연산을 위한 명령어가 이용가능할 수 있다. 그러한 연산은 프로세서(110)에 의한 관여가 거의 내지 전혀 없이 메모리 시스템(140)의 노드 간에 관리될 수 있다. 설명되는 바와 같은 메모리 시스템(140)의 이점은, 처리 시스템(100)의 운용성에 대한 "병목"으로 생각될 수 있는, 메모리 버스(150)를 통한 프로세서(110)와 메모리 시스템(140) 간 트랜잭션을 감축시키는 것일 수 있다. 메모리 시스템(140)과 프로세서(110) 간 트랜잭션을 감축시키는 것은, 프로세서(110)가 메모리 연산을 관리하는 시간을 덜 들일 수 있고 프로세서(110)가 메모리 시스템(140)에 의해 제공된 정보 상에 계산 연산을 수행하는 시간을 덜 허비할 수 있기 때문에, 처리 시스템(100)의 성능 개선을 초래할 수 있다.
도 2는 본 발명의 일 실시예에 따른 메모리 시스템(200)을 예시하고 있다. 메모리 시스템(200)은 도 1의 처리 시스템(100)의 메모리 시스템(140)에 포함될 수 있다. 메모리 시스템(200)은 복수의 메모리 노드(210(1)-(N))를 포함한다. 메모리 노드(210(1)-(N))는 메모리 노드가 메모리 시스템(200)의 적어도 하나의 다른 메모리 노드와 통신할 수 있도록 함께 통신 결합될 수 있다. 예를 들어, 통신 네트워크(220)는 메모리 노드(210(1)-(N))를 함께 통신 결합시키도록 사용될 수 있다. 일부 실시예에 있어서, 메모리 노드(210(1)-(N))는 통신 네트워크(220)를 통하여 다른 메모리 노드(210(1)-(N))와 메시지(예를 들어, 패킷)를 교환함으로써 통신하도록 구성될 수 있다. 메모리 노드(210(1)-(N)) 간 교환되는 메시지는 다양한 기지의 또는 추후 개발되는 메시징 기술을 사용하여 구현될 수 있다. 예를 들어, 메모리 노드(210(1))는 메모리 시스템(200)의 다른 메모리 노드(210(2)-(N)) 중 하나, 수개 또는 어느 것에라도 패킷을 제공할 수 있을 수 있다. 이러한 방식으로, 패킷은 메모리 시스템(200)의 메모리 노드(210) 간에 효율적으로 제공 및 수신될 수 있다. 여기에서 설명되는 바와 같은 노드 간 통신은 패킷에 관하여 이루어지기는 하지만, 본 발명의 범위로부터 벗어남이 없이 다른 형태의 메시지가 사용될 수 있음을 인식할 것이다.
메모리 노드(210)는 유선 및/또는 무선 통신 매체를 통해 통신 결합될 수 있다. 메모리 노드(210) 간 통신은 기지의 통신 프로토콜, 예를 들어, 전송 제어 프로토콜/인터넷 프로토콜(TCP/IP)을 이용할 수 있다. 무선 통신이 이용되는 경우, 메모리 노드(210)는 메모리 노드(210) 간 통신하기에 적합한 무선 통신 회로를 포함한다. 마찬가지로, 유선 통신이 이용되는 경우, 메모리 노드(210)는 메모리 노드(210) 간 통신하기에 적합한 유선 통신 회로를 포함한다.
명령어 및/또는 데이터를 포함하는 패킷은 메모리 시스템(200)의 밖으로부터, 예를 들어, 도 1을 참조하여 설명된 바와 같이 프로세서(110)로부터 수신될 수 있다. 패킷은, 명령어 및/또는 데이터에 기반하여 연산을 수행하는, 메모리 노드(210(1)-(N)) 중 하나 이상에 제공된다. 예를 들어, 연산은 판독 연산, 기록 연산, 키 검색, 데이터 구조의 정보의 부가 및/또는 삭제, 데이터 구조 내 필드의 업데이트 등을 포함할 수 있다.
아래에 더 상세히 설명될 바와 같이, 메모리 노드(210)는 정보(예를 들어, 데이터, 명령어 등)를 저장하기 위한 로컬 메모리를 포함할 수 있고, 그것이 수신하는 패킷에 응답하여 계산 연산을 수행하도록 구성된 로직 및/또는 처리 능력을 포함할 수 있다. 계산 연산의 예는 불 논리 연산, 산술 연산, 비교 연산은 물론, 다른 계산 연산도 포함할 수 있다. 메모리 노드(210)는 로컬 메모리의 연산을 제어함은 물론, 다른 메모리 노드(210)에 제공되거나 메모리 시스템(200)으로부터 외부에, 예를 들어, 프로세서(110)에 제공될 수 있는 패킷을 발생도 시키도록 구성된 로직 및/또는 메모리 제어 능력을 더 포함할 수 있다. 메모리 노드(210)에 의해 발생된 패킷은, 수신 메모리 노드(210)로 하여금 명령어 및/또는 데이터에 기반하여 연산을 수행하게 할 수 있는, 명령어 및/또는 데이터를 포함할 수 있다. 패킷은 메모리 노드에 대한 소스 및 수신지 정보를 더 포함할 수 있다.
아래에 더 상세히 설명될 바와 같이, 메모리 노드가 패킷을 수신할 때, 메모리 노드는 메모리 노드의 로컬 메모리에 의해 저장된 정보 상에 로컬 연산(예를 들어, 메모리 연산, 계산 연산 등)을 수행할 수 있다. 로컬 연산의 결과에 기반하여, 연산은 완료될 수도 있고, 어떤 경우에서는, 미완료될 수도 있다. 연산이 메모리 노드 밖 부가적 정보 및/또는 처리를 필요로 할 때, 메모리 노드는 부가적 정보 및/또는 처리를 위해 메모리 시스템의 다른 메모리 노드에 의존할 수 있다. 예를 들어, 메모리 노드는 다음 연산 또는 연산들을 위한 수신지 메모리 노드를 결정하고, 다음 연산 또는 연산들을 위한 소스를 결정하고, 소스 메모리 노드, 수신지 메모리, 연산 및/또는 데이터와 관련된 정보와 같은, 다양한 정보를 포함할 수 있는 패킷 또는 패킷들을 발생시킬 수 있다. 패킷은 메모리 노드로부터 다른 메모리 노드 또는 메모리 노드들에 제공된다.
통신할 메모리 노드 간 패킷을 교환함으로써, 메모리 시스템(200)과 프로세서(110) 간 트랜잭션은, 앞서 논의된 바와 같이, 메모리 노드(210(1)-(N))에 의한 연산이 메모리 시스템(200) 내 메모리 노드에 의해 발생된 패킷에 포함된 명령어 및/또는 데이터에 기반하여 수행될 때, 감축될 수 있다. 여기에서 설명될 때, ("외부" 메시지의 예인) "외부" 패킷은 메모리 시스템에 의해 수신되거나 메모리 시스템에 의해 제공될 수 있고, ("내부 메시지"의 예인) "내부" 패킷은 메모리 노드 간에 제공될 수 있다. 내부 패킷은 외부 패킷과 동일 또는 유사할 수 있다. 예를 들어, 내부 패킷과 외부 패킷의 포맷은 유사할 수 있다. 일부 실시예에 있어서, 내부 패킷은 외부 패킷과는 다를 수 있다, 예를 들어, 내부 패킷은 메모리 노드 간 통신할 부가적 정보를 포함할 수도 있고, 외부 패킷과는 다른 포맷을 가질 수도 있고 등등이다.
도 3은 본 발명의 일 실시예에 따른 메모리 노드(300)를 예시하고 있다. 메모리 노드(300)는 버스(320)에 결합된 로컬 메모리(310)를 포함한다. 버스(320)는 메모리 노드(300)에 포함된 블록 간 통신을 제공하도록 구성된다. 로컬 메모리(310)는 여러 다른 유형의 메모리를 포함할 수 있다, 예를 들어, 로컬 메모리(310)는 휘발성 메모리(310(1)) 및 비-휘발성 메모리(310(2))를 포함할 수 있다. 로컬 메모리(310)는 메모리 노드(300)와 연관된 정보를 저장 및 제공하도록 구성될 수 있다.
버스(320)에 결합된 노드 컨트롤러(330)는 메모리 노드(300)의 연산을 제어하도록 구성될 수 있다. 노드 컨트롤러(330)는, 예를 들어, 메모리로부터 정보를 판독하거나 메모리에 정보를 저장하는 등 다양한 메모리 연산을 수행하도록 로컬 메모리(310)를 제어하기 위한 명령어를 버스(320)를 통하여 제공할 수 있다. 노드 컨트롤러(330)는, 로컬 메모리(310)에 저장되고 그리고/또는 메모리 노드(300)에 제공되는 정보와 같은, 정보 상에 계산을 수행하도록 구성될 수 있는 계산 로직을 제어할 수 있다. 노드 컨트롤러(330)는 다른 메모리 노드 및/또는 프로세서(예를 들어, 프로세서(110))와 통신하는 것과 같이, 메모리 노드(300)와의 통신을 제공하도록 구성될 수 있는 통신 인터페이스(340)를 제어할 수 있다. 통신 인터페이스(340)는 버스(320)에 더 결합되어, 로컬 메모리(310)와의 통신에 대해서도 허용한다. 메모리 노드(300)는 유선 및/또는 무선 매체를 통하여 통신하도록 구성될 수 있으며, 그러한 통신을 위한 회로를 포함한다. 예를 들어, 통신 인터페이스(340)는 다른 메모리 노드와의 유선 통신을 위해 구성되는 회로를 포함할 수 있고, 대안으로 또는 부가적으로 통신 인터페이스는 다른 메모리 노드와의 무선 통신을 위해 구성되는 회로를 포함할 수 있다.
앞서 논의된 바와 같이, 메모리 노드에 제공되는 패킷은 명령어 및 데이터와 같은 정보를 포함할 수 있다. 패킷을 수신하는 것에 응답하여, 노드 컨트롤러(330)는 메모리 연산 및 계산 연산을 수행하도록 로컬 메모리(310) 및/또는 계산 로직(350)을 제어할 수 있다. 예를 들어, 메모리 노드(300)에 의해 수신된 패킷은 기록 연산을 수행하기 위한 명령어를 포함할 수 있고, 기록 연산에 따라 로컬 메모리(310)에 저장될 정보를 더 포함할 수 있다. 노드 컨트롤러(330)는 패킷과 포함된 정보를 저장하도록 로컬 메모리(310)에 대한 제어 신호를 발생시킬 수 있다. 다른 예에 있어서, 메모리 노드(300)에 의해 수신된 패킷은 로컬 메모리(310)에 의해 저장된 정보 상에 계산 연산을 수행하기 위한 명령어를 포함할 수 있다. 노드 컨트롤러(330)는 로컬 메모리(310)에 저장된 정보에 액세스하고 계산 연산을 수행하도록 로컬 메모리(310) 및 계산 로직(350)에 대한 제어 신호를 발생시킬 수 있다. 계산 연산의 예는 불 논리 연산, 산술 연산, 비교 연산은 물론, 다른 계산 연산도 포함할 수 있다.
아래에 더 설명될 바와 같이, 노드 컨트롤러(330)는 다른 메모리에 제공될 수 있는 패킷은 물론, 메모리 노드(300)를 포함하는 메모리 시스템 외부에 제공될 수 있는 패킷도 발생시키도록 더 구성될 수 있다. 노드 컨트롤러(330)는 패킷에 대한 수신지(예를 들어, 수신 메모리 노드 또는 수신 메모리 노드들)를 결정할 수 있다. 수신지는, 예를 들어, 정보, 메모리 연산 또는 양자의 조합에 기반하여 결정될 수 있다. 노드 컨트롤러(330)에 의해 발생된 패킷은 다른 메모리 노드가 연산을 수행하기 위한 명령어를 포함할 수 있다. 대안으로 또는 부가적으로 패킷은 다른 메모리 노드에 대한 정보를 포함할 수 있다. 그리하여, 메모리 노드는 메모리 시스템 내부에서 발생되는 패킷에 대한 수신지 노드를 로컬 결정할 수 있고, 발생되는 패킷은 메모리 노드에서의 로컬 처리 결과에 기반할 수 있다.
메모리 시스템(200)과 같은 메모리 시스템에 메모리 노드(300)를 포함하는 것은 메모리 시스템과의 메모리 트랜잭션의 수를 감축시킬 수 있다. 프로세서에 의해 발행된 명령어는 사실상, 정보가 프로세서에 오게 하기보다는, (메모리 시스템에 저장된) 정보에 가서, 프로세서에 상당한 연산 부담을 주는 한편 메모리 시스템 대역폭이 미활용되게 놔둘 수 있다. 메모리 노드 간에 내부에서 그리고 프로세서에 의한 더 적은 개입으로 연산을 제어하도록 구성될 수 있는 메모리 시스템을 갖는 결과로서, 처리 시스템의 연산 효율이 개선될 수 있다.
도 4는 본 발명의 일 실시예에 따른 메모리 시스템의 일례의 연산의 선도를 예시하고 있다. 도 4의 예는 메모리 요청을 포함하는 패킷의 본 발명의 일 실시예에 따른 메모리 시스템(예를 들어, 도 2의 메모리 시스템(200))에 의한 수신과 관련된다. 패킷은, 예를 들어, 도 1의 프로세서(110)와 같은 프로세서로부터 수신될 수 있고, "외부" 패킷이라고 지칭될 것이다. 도 4의 예에 있어서, 메모리 요청은 수신 메모리 시스템이 외부 패킷 내 식별된 "키"와 관련된 정보를 찾아내 제공하는 것이다.
키와 관련된 정보를 요청하기 위한 외부 패킷은, 화살표(402)에 의해 도 4에 예시된 바와 같이, 메모리 노드(210(1))에 의해 수신된다. 메모리 노드(210(1))의 노드 컨트롤러는 외부 패킷에 응답하여 연산, 예를 들어, 로컬 메모리에 저장된 정보에 액세스하고 키와 관련된 정보가 메모리 노드(210(1))의 로컬 메모리 내 존재하는지 결정하기 위한 연산을 수행할 수 있다. 예를 들어, 메모리 노드(210(1))의 노드 컨트롤러는 요청을 충족시키는 어느 정보가 메모리 노드(210(1))의 로컬 메모리에 저장되어 있는지, 즉, 어느 저장된 정보가 키와 매칭하는지 결정하도록 계산 로직에 의한 비교를 위해 로컬 메모리로부터 저장된 정보를 제공하기 위한 메모리 커맨드를 메모리 노드(210(1))의 로컬 메모리에 제공할 수 있다.
메모리 노드(210(1))의 노드 컨트롤러 및 계산 로직에 의해 수행된 연산에 부가하여, 메모리 노드(210(1))(예를 들어, "송신" 메모리 노드)는 패킷(예를 들어, "내부 패킷)이 메모리 시스템(200)의 다른 메모리 노드(예를 들어, "수신" 메모리 노드)에 제공되어야 하는지 결정한다. 메모리 노드(210(1))의 노드 컨트롤러는 내부 패킷에 대한 수신 노드를 결정하고, 도 4에 도시된 바와 같이, 메모리 노드(210(1))는 정보에 대한 요청을 계속하도록, 화살표(410, 412, 414)에 의해 도 4에 예시된 바와 같이, 내부 패킷을 메모리 노드(210(3), 210(5), 210(10))에 제공한다.
메모리 노드(210(1))에 의해 제공된 내부 패킷은, 예를 들어, 다른 메모리 노드의 로컬 메모리에 의해 저장될 수 있는 키와 매칭하는 정보를 찾기를 계속하도록 정보에 대한 요청을 위한 명령어를 포함할 수 있다. 대안으로 또는 부가적으로 내부 패킷은 정보, 예를 들어, 송신 메모리 노드에 의해 수행되는 연산 동안 키와 매칭한다고 식별된 정보를 포함할 수 있다. 메모리 노드(210(1))에 의해 제공된 내부 패킷은 그것이 수신한 외부 패킷(예를 들어, 화살표(402)에 의해 표현됨)으로부터의 정보(예를 들어, 명령어, 데이터 등) 중 일부 또는 전부를 포함할 수 있다. 메모리 노드(210(1))에 의해 제공된 내부 패킷은 메모리 노드(210(1))가 수신한 외부 패킷에 포함되지 않은 정보를 포함할 수 있다. 예를 들어, 내부 패킷은 외부 패킷에 포함되지 않았던 메모리 노드(210(1))의 노드 컨트롤러 및 계산 로직에 의해 발생된 정보를 포함할 수 있다. 정보는, 예를 들어, 외부 패킷과 연관된 정보에 대한 요청을 충족시키도록 수신 메모리 노드가 연산을 수행하는데 도움을 줄 수 있다.
송신 메모리 노드로부터의 내부 패킷의 수신, 내부 패킷에 응답하여 연산의 수행, 및/또는 다른 메모리 노드에 수신 메모리 노드에 의한 내부 패킷 제공(예를 들어, "수신" 메모리 노드는 새로운 "송신" 메모리 노드가 됨)은 메모리 시스템(200) 내내 계속될 수 있다. 예를 들어, 메모리 노드(210(3))에 메모리 노드(210(1))에 의해 제공된 내부 패킷(예를 들어, 화살표(410))에 응답하여, 메모리 노드(210(3))의 노드 컨트롤러 및 계산 로직은 메모리(200)로의 최초 요청을 충족시키는 정보를 찾도록 그 로컬 메모리를 검색하는 것과 같은 연산을 수행할 수 있다. 메모리 노드(210(3))의 노드 컨트롤러는 부가적으로는, 정보, 예를 들어, 메모리(200)로의 최초 요청과 관련된 명령어 및/또는 최초 요청을 충족시키는 메모리 노드(210(3))의 로컬 메모리 내 식별된 데이터를 포함할 수 있는, 부가적 내부 패킷을 발생시킬 수 있다. 내부 패킷은 (예를 들어, 각각 화살표(416, 418)에 의해 표현된 바와 같이) 메모리 노드(210(3))에 의해 메모리 노드(210(4), 210(6))에 제공된다.
도 4에 더 예시된 바와 같이, 메모리 노드(210(3))로부터 메모리 노드(210(4))로의 내부 패킷은 (화살표(424)에 의해 표현된 바와 같이) 메모리 노드(210(7))에 제공되는 메모리 노드(210(4))에 의한 다른 내부 패킷의 발생을 초래하고, 응답하여, 메모리 노드(210(7))는 (화살표(426)에 의해 표현된 바와 같이) 내부 패킷을 발생시키고 메모리 노드(210(6))에 제공한다. 마찬가지로, (화살표(414)에 의해 표현된 바와 같이) 메모리 노드(210(1))로부터 내부 패킷을 수신한 메모리 노드(210(10))는 (화살표(422)에 의해 표현된 바와 같이) 메모리 노드(210(6))에 제공되는 내부 패킷을 발생 및 제공한다. (화살표(412)에 의해 표현된 바와 같이) 메모리 노드(210(1))로부터 내부 패킷을 수신한 메모리 노드(210(5))는 (화살표(420)에 의해 표현된 바와 같이) 메모리 노드(210(6))에 제공되는 내부 패킷을 발생 및 제공한다.
앞서 논의된 바와 같이, 송신 메모리 노드로부터의 내부 패킷의 수신은 수신 메모리 노드로 하여금 수신된 내부 패킷에 포함된 명령어 및/또는 데이터와 관련된 연산, 예를 들어, 정보를 찾도록 수신 메모리 노드의 로컬 메모리를 검색하는 것을 수행하게 할 수 있다. 부가적으로, 수신 메모리 노드는 다른 메모리 노드에 제공될 명령어 및/또는 데이터를 포함하는 내부 패킷을 발생시킬 수 있다. 수신 메모리 노드(그 후 송신 메모리 노드가 됨)에 의해 발생되는 내부 패킷은 새로운 수신 메모리 노드에 대한 명령어 및/또는 데이터를 포함할 수 있다.
메모리 노드(210(6))는, 화살표(418, 420, 426, 422)에 의해 도 4에 예시된 바와 같이, 각각, 메모리 노드(210(3), 210(5), 210(7), 210(10))로부터 내부 패킷을 수신한다. 메모리 노드로부터의 내부 패킷은 메모리 노드가 송신 메모리 노드로부터 수신한 각각의 내부 패킷에 포함된 메모리 요청을 충족시키는 각각의 메모리 노드의 노드 컨트롤러 및 계산 로직에 의해 식별된 정보를 포함할 수 있다. 예를 들어, 메모리 노드(예를 들어, 210(3), 210(5), 210(7), 210(10))로부터의 내부 패킷은 메모리 노드가, 예를 들어, (예를 들어, 화살표(402)에 의해 도 4에 표현된) 메모리 시스템(200)에 의해 수신된 외부 패킷과 연관된 정보에 대한 최초 요청과 관련된 연산을 수행하기 위한 명령어를 포함할 수 있다. 도 4의 예에 있어서, 메모리 노드(210(6))는, 키와 매칭하는 메모리 노드에 의해 식별된 데이터와 같이, 정보에 대한 최초 요청을 충족시킨다고 각각의 메모리 노드에 의해 식별된 다른 메모리 노드(예를 들어, 송신 메모리 노드)로부터의 정보를 취합할 수 있다.
도 4의 예에 있어서, 송신 메모리 노드로부터 수신된 내부 패킷에 기반하여, 메모리 노드(210(6))의 노드 컨트롤러는 다른 메모리 노드로부터 그것에 제공된 정보를 포함하는 내부 패킷을 발생시킨다. 내부 패킷은 (화살표(428)에 의해 표현된 바와 같이) 메모리 시스템(200) 외부에, 예를 들어, 메모리 시스템(200)이 화살표(402)에 의해 표현된 외부 패킷을 수신한 프로세서에 제공된다. 메모리 노드(210(6))에 의해 제공된 내부 패킷은 정보에 대한 요청을 일괄하여 충족시키는 메모리 시스템(200)으로부터의 정보, 즉, (210(1))에 의해 최초로 수신된 외부 패킷의 키와 관련된 정보를 포함할 수 있다.
도 4의 예에 의해 예시된 바와 같이, 메모리 시스템(200)은 메모리 시스템(200)에 의해 수신된 외부 패킷에 응답하여 내부에서 연산을 관리할 수 있다. 예를 들어, 메모리 시스템(200)의 메모리 노드(210(1)-(N))는 송신 메모리 노드의 노드 컨트롤러에 의해 발생된 내부 패킷을 메모리 시스템(200)의 다른 메모리 노드에 제공할 수 있다. 내부 패킷은 수신 메모리 노드가 메모리 시스템(200)에 의해 수신된 외부 패킷에 연관된 연산을 충족시키도록 연산을 수행하기 위한 정보(예를 들어, 명령어 및/또는 데이터)를 포함할 수 있다. 외부 패킷과 연관된 연산의 메모리 시스템(200)에 의한 완료시, 외부 패킷은 메모리 시스템(200)에 의해 제공될 수 있다.
도 5는 본 발명의 일 실시예에 따라 검색될 수 있는 링크된 리스트 데이터 세트에 대한 데이터 구조(500)를 예시하고 있다. 데이터 구조(500)는 키 "A", "B", "C", "D", "E", "F" 및 "G"와 연관된 정보를 포함하는 더 큰 데이터 세트를 형성하도록 함께 링크된 정보를 표현한다. 구체적으로, 데이터 구조(500)는 더 큰 데이터 세트를 형성하도록 포인터에 의해 함께 링크된 데이터 서브세트(510-570)를 포함한다. 데이터 서브세트(510-570)의 각각은 각각의 키와 연관된 정보를 포함한다. 데이터 구조(500)의 "헤드"는, 주소 0x1000에 위치하고 키 "A"와 연관된 정보를 포함하는, 데이터 서브세트(510)와 연관된다. 데이터 서브세트(510)에서의 포인터(512)는, 주소 0x1080에 위치하고 키 "B"와 연관된 정보를 포함하는, 데이터 서브세트(520)를 가리키고, 그로써 데이터 서브세트(510, 520)를 링크한다. 마찬가지로, 주소 0x2000에 위치하고 키 "C"와 연관된 정보를 포함하는 서브세트(530)는 포인터(522)에 의해 데이터 서브세트(520)에 링크된다. 주소 0x0800, 0x3000, 0x4080 및 01100에 있고 키 "D", "E", "F" 및 "G"와 연관된 정보를 포함하는 데이터 서브세트(540, 550, 560, 570)는, 모두 각각, 유사하게 하나의 데이터 서브세트로부터 다른 하나로 가리키는 포인터(532, 542, 552, 562)에 의해 데이터 서브세트(530)에 그리고 서로 링크된다.
관용적 시스템에 있어서, 검색 키 "E"와 매칭하는 정보를 찾도록 데이터 구조(500)를 검색하기 위하여, CPU는, 예를 들어, 주소 0x1000에서의 데이터 서브세트(510)와 연관된 데이터 구조(500)의 헤드로 현재 검색 포인터를 설정한다. CPU는 포인터에 의해 식별된 현재 위치로부터 정보를 판독하기 위한 메모리 판독 명령어를 발행하고 현재 위치로부터 판독된 정보를 검색 키 "E"에 비교한다. 현재 위치로부터 판독된 정보가 검색 키 "E"와 매칭하면, 그때 검색은 완료 및 종료된다. 그렇지만, 현재 위치로부터의 정보가 검색 키 "E"와 매칭하지 않으면, CPU는 검색 포인터를, 그 후 현재 위치가 되는, 다음 위치로 전진시킨다.
앞서와 같이, CPU는 포인터에 의해 식별된 (새로운) 현재 위치로부터 정보를 판독하기 위한 메모리 판독 명령어를 발행하고 현재 위치로부터 판독된 정보를 비교한다. 새로운 현재 위치를 가리키는 단계, 현재 위치로부터 정보를 판독하는 단계, 및 정보를 검색 키 "E"에 비교하는 단계는 정보가 발견되거나, 데이터 구조(500) 전체가 검색되었지만 정보가 발견되지 않을 때까지 반복되며, 그때 검색이 종료된다. 도 5의 예의 데이터 구조(500)에 있어서, 데이터 서브세트(550)는 검색 키 "E"와 매칭하는 정보를 포함한다. 결과로서, CPU는, (포인터(542)에 의해 링크된) 데이터 서브세트(550)로부터 정보를 판독하고 정보가 검색 키 "E"와 매칭한다고 결정할 때까지, 포인터(512, 522, 532)에 의해 함께 링크된 데이터 서브세트(510, 520, 530, 540)에서 정보를 판독할 것이며, 그때 CPU는 검색을 종료한다.
관용적 시스템에 대한 예에 있어서, CPU는 메모리 판독 명령어를 발행하는 것, 현재 위치로부터 판독된 정보를 검색 키에 비교하는 것, 및 완료 시 검색을 종료하는 것의 부담을 진다.
도 6은 본 발명의 일 실시예에 따른 메모리 시스템에 대해 데이터 구조(500)를 검색하기 위한 순서도를 예시하고 있다. 데이터 구조(500)는 CPU가 메모리 시스템에 단일 명령어를 발행하는 것에 기반하여 정보를 찾도록 검색될 수 있다. 현재 위치로부터 정보의 판독 및 정보를 검색 키에 비교하는 것은 메모리 시스템 내부에서, 구체적으로, 메모리 시스템의 메모리 노드에 의해 관리된다. 본 예의 목적으로, 데이터 구조(500)의 데이터 서브세트의 각각은 본 발명의 일 실시예에 따른 복수의 메모리 노드를 포함하는 메모리 시스템의 각각의 메모리 노드, 예를 들어, 메모리 노드(210)(도 2) 및/또는 메모리 노드(300)(도 3)에 의해 저장된다.
단계(610)에서, 메모리 시스템은, 데이터 구조(500)의 헤드, 구체적으로는 주소 0x1000에서의 데이터 서브세트(510)로 시작하여, 검색 키(예를 들어, 검색 키 "E")와 매칭하는 정보를 찾도록 데이터 구조(500)를 검색하기 위한 CPU로부터의 명령어를 수신한다. 단계(614)에서, 데이터 서브세트(510)를 포함하는 메모리 노드와 같은 메모리 노드는 포인터에 의해 식별된 현재 위치의 판독 연산을 수행한다. 단계(620)에서, 메모리 노드는 현재 위치로부터 판독된 정보를 검색 키에 비교한다. 단계(624)에서, 현재 위치로부터의 정보가 검색 키와 매칭하면, 그때 단계(630)에서 메모리 노드는 검색 키와 매칭하는 정보를 포함하는 그리고 정보가 발견되었다고 나타내는 정보를 더 포함하는 외부 패킷을 발생시킨다. 단계(634)에서 외부 패킷은 메모리 노드에 의해 CPU에 제공된다.
단계(624)에서 현재 위치로부터의 정보가 검색 키(예를 들어, 검색 키 "E")와 매칭하지 않으면, 단계(640)에서는 현재 위치가 검색되고 있는 데이터 구조의 끝(예를 들어, 마지막 위치)인지 결정된다. 현재 위치가 마지막 위치인 경우에, 단계(644)에서 메모리 노드는 검색 키와 매칭하는 정보가 발견되지 않았다고 나타내는 정보를 포함하는 외부 패킷을 발생시킨다. 단계(634)에서 외부 패킷은 메모리 노드에 의해 CPU에 제공된다. 현재 위치가 마지막 위치가 아닌 경우에, 단계(650)에서 메모리 노드는 다음 위치를 현재 위치로 변경하도록 검색 포인터를 다음 위치로 전진시킨다. 단계(654)에서는, 현재 위치가 동일 메모리 노드 내인지 메모리 노드에 의해 결정된다. 현재 위치가 동일 메모리 노드 내이면, 메모리 노드는 현재 위치로부터 정보를 판독하는 것(단계(614)), 정보를 검색 키에 비교하는 것(단계(620)), 및 정보가 검색 키와 매칭하는지 결정하는 것(단계(624))의 프로세스를 시작한다.
단계(654)에서 현재 위치가 동일 메모리 노드 내가 아니라고 메모리 노드에 의해 결정되면, 단계(660)에서 메모리 노드는 검색 키(예를 들어, 검색 키 "E")와 매칭하는 정보를 찾도록 검색하기 위한 명령어를 포함하는 내부 패킷을 발생시킨다. 단계(664)에서 내부 패킷은 현재 위치를 포함하는 메모리 노드에 제공된다. 현재 위치를 포함하는 메모리 노드는 내부 패킷을 수신하고 현재 위치로부터 정보를 판독하는 것(단계(614)), 정보를 검색 키에 비교하는 것(단계(620)), 및 정보가 검색 키와 매칭하는지 결정하는 것(단계(624))의 프로세스를 시작한다.
CPU가 메모리 판독 명령어 전부를 발행하는 것, 현재 위치로부터 판독된 정보를 검색 키에 비교하는 것, 및 완료시 검색을 종료하는 것의 부담을 지는 관용적 시스템을 사용하여 데이터 구조(500)를 검색하는 것과는 대조적으로, 메모리 판독 연산 및 비교는 메모리 시스템 내 메모리 노드에 의해 수행된다. CPU가 최초 검색 명령어를 발행하는 때부터 외부 패킷이 메모리 시스템에 의해 CPU에 제공되는 때까지, CPU는 자유롭게 다른 연산을 수행한다.
메모리 시스템은 복수의 메모리 노드를 포함할 수 있되, 메모리 노드는 정보를 저장하기 위한 로컬 메모리를 포함한다. 메모리 노드는 정보 상에 연산을 수행하도록 구성된 계산 로직을 더 포함함은 물론, 메모리 노드 내 연산을 제어하고 다른 메모리 노드에 제공될 수 있는 내부 패킷을 발생시키도록 구성된 노드 컨트롤러도 포함할 수 있다. 내부 패킷은 수신 메모리 노드에 대한 정보, 예를 들어, 수신 메모리 노드에 의해 수행될 연산을 위한 명령어 및/또는 수신 메모리 노드에 대한 데이터를 포함할 수 있다. 본 발명의 실시예는 CPU와 메모리 시스템(예를 들어, 도 1의 프로세서(110)와 메모리 시스템(140)) 간 메모리 트랜잭션의 수를 감축시키고, 그리고 부가적으로는 메모리 시스템에 의해 저장된 정보 상의 연산을 관리하기 위한 CPU 상의 부담을 감축시키도록 이용될 수 있다.
전술한 것으로부터, 본 발명의 특정 실시예가 여기에서 예시의 목적으로 설명되었지만, 다양한 수정이 본 발명의 취지 및 범위로부터 벗어남이 없이 이루어질 수 있음을 인식할 것이다. 따라서, 본 발명은 첨부 청구범위에 의해서와 같은 것을 제외하고는 한정되지 않는다.

Claims (34)

  1. 장치로서,
    프로세서; 및
    상기 프로세서에 결합된 메모리 시스템으로서, 상기 메모리 시스템에 의해 저장된 정보에 액세스하기 위한 명령어를 상기 프로세서로부터 수신하도록 구성되고 복수의 메모리 노드를 포함하는 상기 메모리 시스템을 포함하되, 상기 복수의 메모리 노드의 각각의 메모리 노드는 상기 복수의 메모리 노드의 적어도 하나의 다른 메모리 노드에 결합되고 상기 복수의 메모리 노드의 각각의 메모리 노드는 연산을 위한 명령어를 포함하는 내부 메시지로서 상기 연산을 수행할 상기 복수의 메모리 노드의 다른 메모리 노드에 제공될 상기 내부 메시지를 발생시키도록 구성되는 장치.
  2. 제1항에 있어서, 상기 복수의 메모리 노드의 메모리 노드는,
    정보를 저장하도록 구성된 로컬 메모리;
    계산 연산을 수행하도록 구성된 계산 로직; 및
    메모리 연산을 수행하기 위해 상기 로컬 메모리를 제어하도록 구성되고 계산 연산을 수행하기 위해 상기 계산 로직을 제어하도록 구성된 노드 컨트롤러를 포함하고, 상기 노드 컨트롤러는 상기 메모리 노드로부터 외부에 제공되게 되는 명령어를 포함하는 메시지를 발생시키도록 더 구성되는 장치.
  3. 제2항에 있어서, 상기 노드 컨트롤러는 상기 메모리 노드에서 수행된 로컬 연산의 결과에 기반하여 메시지에 대한 수신지 메모리 노드를 결정하도록 구성되는 장치.
  4. 제2항에 있어서, 상기 노드 컨트롤러는 상기 복수의 메모리 노드의 다른 메모리 노드에 제공될 내부 메시지를 발생시키도록 구성되고 그리고 상기 프로세서에 제공될 외부 메시지를 발생시키도록 더 구성되는 장치.
  5. 제1항에 있어서, 상기 복수의 메모리 노드의 메모리 노드는 소스 메모리 노드, 수신지 메모리 노드, 연산, 데이터 또는 이들의 조합과 관련된 정보를 포함하는 내부 메시지를 발생시키도록 구성되는 장치.
  6. 제1항에 있어서,
    상기 프로세서에 결합된 로컬 메모리 버스; 및
    상기 로컬 메모리 버스에 결합되고 정보를 저장하도록 구성된 메모리를 더 포함하는 장치.
  7. 장치로서,
    로컬 메모리에 정보를 저장하도록 구성된 제1 메모리 노드; 및
    상기 제1 메모리 노드에 결합되고 제1 명령어를 포함하는 제1 메시지를 수신하도록 구성된 제2 메모리 노드를 포함하고, 상기 제2 메모리 노드는 상기 제1 메시지에 포함되지 않은 제2 명령어를 포함하는 제2 메시지를 발생시키도록 그리고 상기 제2 메시지를 상기 제1 메모리 노드에 제공하도록 더 구성되고, 상기 제1 메모리 노드는 상기 제2 명령어에 따른 메모리 연산을 수행하도록 더 구성되는 장치.
  8. 제7항에 있어서, 상기 제2 메모리 노드는 부가적 정보, 처리 또는 이들의 조합이 상기 제1 메모리 노드로부터 요구되는 것에 응답하여 상기 제2 메시지를 발생시키도록 구성되는 장치.
  9. 제7항에 있어서, 상기 제1 메시지는 제1 패킷을 포함하고 상기 제2 메시지는 제2 패킷을 포함하는 장치.
  10. 제7항에 있어서, 상기 제1 메시지는 내부 패킷을 포함하고 상기 제2 메시지는 내부 패킷 또는 외부 패킷 중 어느 하나를 포함하는 장치.
  11. 제7항에 있어서, 제3 메모리 노드를 더 포함하되, 상기 제2 메모리 노드는 상기 제2 메시지를 상기 제3 메모리 노드에 제공하도록 더 구성되고, 상기 제3 메모리 노드는 상기 제2 명령어에 따른 상기 메모리 연산을 수행하도록 구성되는 장치.
  12. 제11항에 있어서, 상기 제2 메모리 노드는 상기 제1 메시지에 응답하여 상기 제2 메시지를 발생시키도록 구성된 노드 컨트롤러를 포함하는 장치.
  13. 제7항에 있어서, 상기 제2 명령어에 따른 상기 메모리 연산은 로컬 메모리에 저장된 정보에 대한 검색 연산을 포함하고, 상기 제1 메모리 노드는 상기 검색 연산에 의해 식별된 정보를 포함하는 제3 메시지를 발생시키도록 더 구성되는 장치.
  14. 제7항에 있어서, 상기 제1 메모리 노드는 상기 제1 명령어와는 다른 제3 명령어를 포함하는 제3 메시지를 발생시키도록 더 구성되는 장치.
  15. 장치로서,
    함께 통신 결합된 복수의 메모리 노드를 포함하되, 상기 복수의 메모리 노드의 각각의 메모리 노드는,
    버스;
    상기 버스에 결합되고 정보를 저장하도록 구성된 로컬 메모리;
    상기 버스에 결합되고 상기 로컬 메모리에 의해 저장된 정보 상에 계산 연산을 수행하도록 구성된 계산 로직;
    상기 버스에 결합되고 상기 메모리 노드와의 통신을 제공하도록 구성된 통신 인터페이스; 및
    상기 버스에 결합되고 메모리 연산을 수행하도록 상기 로컬 메모리를 제어하기 위한 명령어를 제공하도록 구성되고 상기 계산 연산을 수행하도록 상기 계산 로직을 제어하기 위한 명령어를 제공하도록 구성된 노드 컨트롤러를 포함하고, 상기 노드 컨트롤러는 상기 메모리 노드로부터 외부에 제공되도록 상기 통신 인터페이스에 제공되는 명령어를 포함하는 메시지를 발생시키도록 더 구성되는 장치.
  16. 제15항에 있어서, 상기 통신 인터페이스는 상기 복수의 메모리 노드의 다른 노드와 무선 통신하도록 구성되는 장치.
  17. 제15항에 있어서, 상기 통신 인터페이스는 유선 매체 상에서 상기 복수의 메모리 노드의 다른 노드와 통신하도록 구성되는 장치.
  18. 제15항에 있어서, 상기 복수의 메모리 노드의 각각의 메모리 노드를 함께 통신 결합시키도록 구성된 통신 네트워크를 더 포함하는 장치.
  19. 제15항에 있어서, 상기 계산 로직은 불 논리 연산, 산술 연산, 비교 연산 또는 이들의 조합을 포함하는 계산 연산을 수행하도록 구성되는 장치.
  20. 제15항에 있어서, 상기 로컬 메모리는 휘발성 메모리, 비-휘발성 메모리 또는 이들의 조합을 포함하는 장치.
  21. 방법으로서,
    외부 메시지로서 제1 메모리 연산을 수행하기 위한 제1 명령어를 포함하는 상기 외부 메시지를 메모리 시스템의 제1 메모리 노드에서 수신하는 단계;
    상기 제1 명령어에 응답하여, 제2 메모리 연산을 위한 제2 명령어로서 상기 외부 메시지에 포함되지 않은 상기 제2 명령어를 포함하는 내부 메시지를 상기 제1 메모리 노드에서 발생시키는 단계;
    제2 메시지를 상기 메모리 시스템의 제2 메모리 노드에 제공하는 단계; 및
    상기 제2 메시지에 응답하여 상기 제2 메모리 연산을 상기 제2 메모리 노드에서 수행하는 단계를 포함하는 방법.
  22. 제21항에 있어서, 상기 제1 메모리 연산을 상기 제1 메모리 노드에서 수행하는 단계를 더 포함하는 방법.
  23. 제22항에 있어서, 상기 제1 메모리 노드에서의 상기 제1 메모리 연산은 판독 연산을 포함하는 방법.
  24. 제21항에 있어서, 상기 제2 메모리 연산을 수행하는 단계는 상기 제2 메모리 노드의 로컬 메모리에 액세스하는 단계를 포함하는 방법.
  25. 제24항에 있어서, 상기 제2 명령어에 응답하여 상기 제2 메모리 노드의 상기 로컬 메모리로부터 판독된 정보 상에 계산 연산을 상기 제2 메모리 노드에서 수행하는 단계를 더 포함하는 방법.
  26. 제21항에 있어서, 상기 제1 및 제2 메시지의 포맷은 상기 외부 메시지의 포맷과는 다른 방법.
  27. 제21항에 있어서,
    상기 제2 메모리 연산과 관련된 정보를 포함하는 내부 메시지를 상기 제2 메모리 노드에서 발생시키는 단계를 더 포함하는 방법.
  28. 제21항에 있어서, 상기 제2 메모리 연산을 수행하는 단계는 판독 연산, 기록 연산, 키 검색, 데이터 구조의 정보의 부가 및 삭제, 데이터 구조 내 필드의 업데이트 또는 이들의 조합을 수행하는 단계를 포함하는 방법.
  29. 방법으로서,
    제1 외부 메시지로서 검색 키와 관련된 정보를 찾도록 검색하기 위한 제1 명령어를 포함하는 상기 제1 외부 메시지를 메모리 시스템의 제1 메모리 노드에서 수신하는 단계;
    상기 검색 키와 관련된 정보를 찾도록 검색하기 위해 상기 제1 메모리 노드의 로컬 메모리에 액세스하는 단계;
    검색 키와 관련된 정보를 찾도록 검색하기 위한 제2 명령어를 포함하는 제1 내부 메시지를 상기 제1 메모리 노드에서 발생시키는 단계;
    상기 제1 내부 메시지를 상기 메모리 시스템의 제2 메모리 노드에 제공하는 단계;
    상기 제1 내부 메시지에 응답하여, 상기 검색 키와 관련된 정보를 찾도록 검색하기 위해 상기 제2 메모리 노드의 로컬 메모리에 액세스하는 단계;
    상기 검색 키와 관련되는 상기 제1 메모리 노드의 상기 로컬 메모리로부터의 정보를 포함하는 제2 내부 메시지를 상기 제1 메모리 노드에서 발생시키는 단계;
    상기 제2 내부 메시지를 상기 메모리 시스템의 제3 메모리 노드에 제공하는 단계;
    상기 검색 키와 관련되는 상기 제2 메모리 노드의 상기 로컬 메모리로부터의 정보를 포함하는 제3 내부 메시지를 상기 제2 메모리 노드에서 발생시키는 단계; 및
    상기 제3 내부 메시지를 상기 메모리 시스템의 상기 제3 메모리 노드에 제공하는 단계를 포함하는 방법.
  30. 제29항에 있어서, 상기 제1 및 제2 메모리 노드로부터의 상기 정보를 포함하는 제2 외부 메시지를 상기 제3 메모리 노드에서 발생시키는 단계; 및
    상기 제2 외부 메시지를 상기 메모리 시스템의 외부에 제공하는 단계를 더 포함하는 방법.
  31. 제29항에 있어서, 상기 제1 메모리 노드의 상기 로컬 메모리에 저장된 정보 및 상기 제2 메모리 노드의 상기 로컬 메모리에 저장된 정보는 링크된 리스트 데이터 세트의 각각의 데이터 서브세트인 방법.
  32. 제31항에 있어서, 상기 제1 내부 메시지를 상기 제1 메모리 노드에서 발생시키는 단계는 상기 검색 키와 관련된 정보에 대한 상기 제1 메모리 노드의 상기 로컬 메모리 내 상기 데이터 서브세트의 검색을 완료하는 단계에 응답하는 방법.
  33. 제29항에 있어서, 상기 제1 메모리 노드의 상기 로컬 메모리로부터 판독된 정보를 상기 제1 메모리 노드에서 상기 검색 키에 비교하는 단계를 더 포함하는 방법.
  34. 제29항에 있어서, 상기 제1 메모리 노드의 상기 로컬 메모리에 액세스하는 단계는 상기 제1 메모리 노드의 상기 로컬 메모리에 의해 저장된 정보를 판독하는 단계를 포함하는 방법.
KR1020157028640A 2013-03-15 2014-02-14 메모리 노드를 포함하는 분산형 메모리 시스템을 위한 방법 및 장치 KR20150129808A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/842,984 2013-03-15
US13/842,984 US10089043B2 (en) 2013-03-15 2013-03-15 Apparatus and methods for a distributed memory system including memory nodes
PCT/US2014/016585 WO2014149278A1 (en) 2013-03-15 2014-02-14 Apparatus and methods for a distributed memory system including memory nodes

Publications (1)

Publication Number Publication Date
KR20150129808A true KR20150129808A (ko) 2015-11-20

Family

ID=51533914

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157028640A KR20150129808A (ko) 2013-03-15 2014-02-14 메모리 노드를 포함하는 분산형 메모리 시스템을 위한 방법 및 장치

Country Status (7)

Country Link
US (2) US10089043B2 (ko)
EP (1) EP2972911B1 (ko)
JP (1) JP6333353B2 (ko)
KR (1) KR20150129808A (ko)
CN (2) CN105051708B (ko)
TW (1) TWI624787B (ko)
WO (1) WO2014149278A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9779057B2 (en) 2009-09-11 2017-10-03 Micron Technology, Inc. Autonomous memory architecture
US10089043B2 (en) 2013-03-15 2018-10-02 Micron Technology, Inc. Apparatus and methods for a distributed memory system including memory nodes
US9779138B2 (en) 2013-08-13 2017-10-03 Micron Technology, Inc. Methods and systems for autonomous memory searching
US10003675B2 (en) 2013-12-02 2018-06-19 Micron Technology, Inc. Packet processor receiving packets containing instructions, data, and starting location and generating packets containing instructions and data
CN104765587B (zh) * 2014-01-08 2018-12-14 雅特生嵌入式计算有限公司 用于使处理器同步到相同的计算点的系统和方法
CN114625084B (zh) * 2022-03-02 2024-01-19 杭州康吉森自动化科技有限公司 基于控制系统的节点信息的获取方法及装置
CN114647380B (zh) * 2022-03-23 2023-11-07 苏州科美信息技术有限公司 一种数据存算一体固态硬盘模组及系统

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5134711A (en) 1988-05-13 1992-07-28 At&T Bell Laboratories Computer with intelligent memory system
CA2145106C (en) 1994-04-22 1999-08-24 Abhaya Asthana Intelligent memory-based input/output system
US6799217B2 (en) 2001-06-04 2004-09-28 Fujitsu Limited Shared memory multiprocessor expansion port for multi-node systems
US7581080B2 (en) 2003-04-23 2009-08-25 Micron Technology, Inc. Method for manipulating data in a group of processing elements according to locally maintained counts
US20050108203A1 (en) 2003-11-13 2005-05-19 Chunqiang Tang Sample-directed searching in a peer-to-peer system
US7242216B1 (en) 2004-11-08 2007-07-10 Herman Schmit Embedding memory between tile arrangement of a configurable IC
DE102006009027A1 (de) 2006-02-27 2007-08-30 Infineon Technologies Ag Speicheranordnung
US7987205B1 (en) 2006-11-27 2011-07-26 Netlogic Microsystems, Inc. Integrated search engine devices having pipelined node maintenance sub-engines therein that support database flush operations
US7623365B2 (en) 2007-08-29 2009-11-24 Micron Technology, Inc. Memory device interface methods, apparatus, and systems
US7913033B2 (en) 2007-10-09 2011-03-22 Micron Technology, Inc. Non-volatile memory device having assignable network identification
US20100161914A1 (en) 2008-12-23 2010-06-24 Eilert Sean S Autonomous memory subsystems in computing platforms
US8549092B2 (en) 2009-02-19 2013-10-01 Micron Technology, Inc. Memory network methods, apparatus, and systems
US20100241783A1 (en) 2009-03-23 2010-09-23 Honeywell International Inc. Memory node for use within a data storage system having a plurality of interconnected memory nodes
FR2948206B1 (fr) 2009-07-15 2011-08-05 Commissariat Energie Atomique Dispositif et procede pour l'execution distribuee de traitements de donnees numeriques
US9015440B2 (en) 2009-09-11 2015-04-21 Micron Technology, Inc. Autonomous memory subsystem architecture
US9779057B2 (en) * 2009-09-11 2017-10-03 Micron Technology, Inc. Autonomous memory architecture
US8407516B2 (en) 2009-12-23 2013-03-26 Intel Corporation Controlling memory redundancy in a system
US8766666B2 (en) 2010-06-10 2014-07-01 Micron Technology, Inc. Programmable device, hierarchical parallel machines, and methods for providing state information
US8601013B2 (en) 2010-06-10 2013-12-03 Micron Technology, Inc. Analyzing data using a hierarchical structure
US8930618B2 (en) 2010-08-24 2015-01-06 Futurewei Technologies, Inc. Smart memory
JP5238791B2 (ja) 2010-11-10 2013-07-17 株式会社東芝 転送機能を有するメモリノードを相互に接続したストレージ装置及びデータ処理方法
JP2013045378A (ja) * 2011-08-26 2013-03-04 Fujitsu Ltd ストレージ制御方法、情報処理装置およびプログラム
US10089043B2 (en) 2013-03-15 2018-10-02 Micron Technology, Inc. Apparatus and methods for a distributed memory system including memory nodes

Also Published As

Publication number Publication date
TWI624787B (zh) 2018-05-21
JP6333353B2 (ja) 2018-05-30
CN110244909A (zh) 2019-09-17
US10089043B2 (en) 2018-10-02
WO2014149278A1 (en) 2014-09-25
CN105051708A (zh) 2015-11-11
TW201447744A (zh) 2014-12-16
EP2972911B1 (en) 2020-12-23
CN105051708B (zh) 2019-05-28
US10761781B2 (en) 2020-09-01
US20140281278A1 (en) 2014-09-18
EP2972911A1 (en) 2016-01-20
JP2016515256A (ja) 2016-05-26
US20190042100A1 (en) 2019-02-07
EP2972911A4 (en) 2016-10-26

Similar Documents

Publication Publication Date Title
US10761781B2 (en) Apparatus and methods for a distributed memory system including memory nodes
US11467975B2 (en) Data processing method and NVMe storage device
US10042576B2 (en) Method and apparatus for compressing addresses
JP5939305B2 (ja) 情報処理装置,並列計算機システム及び情報処理装置の制御方法
CN114780458A (zh) 数据处理的方法和存储系统
WO2015078219A1 (zh) 一种信息缓存方法、装置和通信设备
WO2015018290A1 (zh) 内存访问处理方法、装置及系统
CN107665095B (zh) 存储器空间管理的设备、方法及可读存储介质
KR20150057798A (ko) 캐시 제어 장치 및 방법
TWI502346B (zh) 根據窺探回應資訊之目錄快取分配技術
TW202215251A (zh) 用於合併及分層資料架構的適應性路由
WO2015176664A1 (zh) 一种数据操作的方法、设备和系统
US9317470B1 (en) Method and system for incremental cache lookup and insertion
US11258887B2 (en) Payload cache
US20160034191A1 (en) Grid oriented distributed parallel computing platform
KR20170072645A (ko) 프로세서 및 프로세서에서 데이터를 처리하는 방법
CN105659216A (zh) 多核处理器系统的缓存目录处理方法和目录控制器
JP2009088622A (ja) バッファメモリを有するパケット転送装置および方法
JP6565729B2 (ja) 演算処理装置、制御装置、情報処理装置及び情報処理装置の制御方法
BR112017017306B1 (pt) Método para acessar dados em um sistema com múltiplos núcleos, dispositivo de cache de diretório, sistema com múltiplos núcleos, e unidade de armazenagem de diretório

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment