KR101563837B1 - 메시지 기반 메모리 액세스 장치 및 그것의 액세스 방법 - Google Patents

메시지 기반 메모리 액세스 장치 및 그것의 액세스 방법 Download PDF

Info

Publication number
KR101563837B1
KR101563837B1 KR1020147022905A KR20147022905A KR101563837B1 KR 101563837 B1 KR101563837 B1 KR 101563837B1 KR 1020147022905 A KR1020147022905 A KR 1020147022905A KR 20147022905 A KR20147022905 A KR 20147022905A KR 101563837 B1 KR101563837 B1 KR 101563837B1
Authority
KR
South Korea
Prior art keywords
request
message
data
memory access
read
Prior art date
Application number
KR1020147022905A
Other languages
English (en)
Other versions
KR20140124781A (ko
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 KR20140124781A publication Critical patent/KR20140124781A/ko
Application granted granted Critical
Publication of KR101563837B1 publication Critical patent/KR101563837B1/ko

Links

Images

Classifications

    • 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/1673Details of memory controller using buffers
    • 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/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4234Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
    • G06F13/4239Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus with asynchronous protocol

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

메시지 기반 메모리 액세스 장치, 및 그것의 액세스 방법이 제공되는데, 메시지 기반 메모리 액세스 장치는 메모리 시스템에게 대응하는 동작을 구현할 것을 지시하기 위해 CPU에 의해 생성된 메시지 기반 액세스 명령을 전송하기 위해 이용되는 메시지 기반 커맨드 버스; CPU로부터의 요청들을 메시지 패킷들로 패킷화하고, 메시지 패킷들을 저장 모듈에 전송하며, 저장 모듈에 의해 반환된 메시지 패킷들을 디코딩하고, 데이터를 CPU에 반환하기 위해 이용되는 메시지 기반 메모리 컨트롤러; 요청 및 응답 메시지 패킷들을 전송하기 위한 채널로서 이용되는 메시지 채널; 및 메시지 타입 메모리 컨트롤러부터 요청 패킷들을 수신하고, 대응하는 요청들을 구현하기 위해 이용되는 버퍼 스케줄러를 구비하는 저장 모듈을 포함한다.

Description

메시지 기반 메모리 액세스 장치 및 그것의 액세스 방법{MESSAGE-BASED MEMORY ACCESS DEVICE AND ACCESS METHOD THEREOF}
<관련 출원의 상호 참조>
본 출원은 2012년 1월 18일자로 출원된 중국 특허 출원 제201210016351.2호를 우선권으로 주장하고, 2013년 1월 18일자로 출원된 국제 출원 PCT/CN2013/070710호의 계속 출원이며, 이들 모두 그 전체 내용은 여기에 참조로 포함된다.
<기술 분야>
본 발명은 컴퓨터 시스템 설계 분야에 관한 것이고, 구체적으로는 메시지 기반 메모리 액세스 장치 및 그것의 액세스 방법에 관한 것이다.
컴퓨터의 메모리 시스템은 시스템 구조와 소프트웨어 성능에 영향을 주는 중요한 요소들 중 하나이다. 지난 수십년간, 프로세스 성능과 메모리 성능 간의 간극이 점점 더 커짐에 따라, 메모리 시스템은 시스템 성능을 제한하는 병목(bottleneck)이었다. 최근의 수년간, 프로세서들이 멀티코어 및 매니코어(many-core) 구조로 진화한 것과 함께, 메모리 시스템들의 액세스 대역폭 문제가 더 심각해지고, 이것은 멀티코어 프로세서의 범위의 더 이상의 개발을 제한한다.
지난 수년간, 유효 액세스 대역폭을 개선하기 위한 주된 접근방식들은 버스 주파수를 향상시키는 것과, 데이터 채널의 개수를 증가시키는 것, 즉 물리적 대역폭을 증가시키는 것이었다. 그러나, 최근의 수년간, 동기식 버스 기반 메모리 액세스 구조는 크게 변화하지 않았다. SDRAM(Synchronous Dynamic Random Access Memory)이 1990년대 중반에 출현한 다음, 그것은 SDRAM, DDR(Double Data Rate), DDR2, 및 DDR3로 발전하였으며, 현재는 DDR4가 발매될 예정이다. SDRAM은 동기식 인터페이스들을 이용하고, 모든 요청은 응답을 얻기 위해 고정된 클럭 기간 동안 기다릴 필요가 있다. SDRAM이 발매된 이후, 메모리 버스 구조는 어떠한 근본적인 변화도 거의 갖지 않았다. 기본적으로, SDRAM은 인터페이스 주파수의 지속적 증대를 통한 대역폭의 개선에 기초하여 발전된다.
현재, 메모리 구조를 변경하려는 시도가 국제적인 규모로 이루어지고 있다. 예를 들어, 램버스(Rambus)의 RDRAM 및 XDR(eXtreme Data Rate) 기술에서는, 패킷 기반 요청/응답 프로토콜이 이용되고, 데이터 패킷들을 전송하기 위해, 비교적 좁지만 높은 데이터 레이트를 갖는 직렬 메모리 버스가 이용된다. Intel의 FB-DIMM(Fully Buffered-DIMM)의 DIMM(Dual Inline Memory Module)에 추가된 AMB(Advanced Memory Buffer)는 고속 직렬 채널을 통해 이웃하는 DIMM들 상의 AMB들 또는 메모리 컨트롤러들에 접속될 수 있다. 고주파수 신호의 품질을 개선하기 위해, 유사한 올-데이터 버퍼(all-data buffer)가 LRDIMM(Load-Reduced DIMM), DDR4 및 다른 기술들에서 이용된다. 그러나, 이러한 시도들은 메모리 구조를 부분적으로 변경할 뿐이다. 구체적으로, 데이터 전송이 병렬 버스 포맷으로부터 패킷 포맷으로 변환되지만, 타이밍 시퀀스와 관련하여서는, 동기식 액세스 프로토콜이 여전히 요구된다.
한편, 기존의 동기식 메모리 시스템들은 주로 단일 메모리 액세스의 지연이 고정되고 낮을 것을 보장하도록 설계된다. 그러나, 멀티코어 구조가 이용될 때, 메모리 액세스 지연은 실제로 2개의 부분, 즉 프로세서의 메모리 액세스 큐 내에서의 대기 시간과 메모리 액세스 채널 상에서의 지연을 포함한다. 명백히, 메모리 액세스 채널 상에서의 낮은 지연이 양호한 전체 메모리 액세스 성능을 보장하지는 못한다.
다른 한편으로, 종래의 메모리 액세스의 데이터 입도(data granularity)는 고정되고, 증가하는 경향을 갖는다. 이것은 1회의 전송 기간에 더 많은 데이터가 전송될 것을 보장하기 위한 것이며, 매 회에 판독되는 데이터는 기본적으로 CPU 캐시 라인의 길이이다. 그러나, 실제 프로그램에서, 각각의 데이터 액세스의 실제 입도는 달라진다. 낮은 입도를 갖는 비정규의 일부 어플리케이션 데이터 액세스들에 대하여, 각각의 액세스에 대한 고정된 큰 데이터 입도는 필연적으로 낭비를 야기하며; 일부 애플리케이션들에 대하여 대량의 데이터가 판독 및 기입될 필요가 있을 때, 데이터 액세스는 복수의 메모리 트랜잭션으로 분할될 필요가 있고, 그에 의해 프로토콜 오버헤드를 증가시킨다. 이들 모두가 메모리 액세스 대역폭의 낭비를 야기한다.
상술한 문제를 해결하기 위해, 본 명세서는 메시지 기반 메모리 액세스 장치 및 그것의 액세스 방법을 제공한다.
본 발명의 목적은 CPU 메모리 채널들의 유효 이용률(effective utilization rate)을 개선하고, 메시지 기반 메모리 액세스 장치 및 그것의 액세스 방법을 제공하는 것이다.
본 발명은 메시지 기반 메모리 액세스 장치로서,
CPU에 의해 생성된 메시지 기반 메모리 액세스 요청 명령을 메시지 기반 메모리 컨트롤러에 전송하고, 메시지 기반 메모리 컨트롤러에게 메시지 기반 메모리 액세스 요청에 기초하여 대응하는 동작을 수행할 것을 지시하도록 구성된 메시지 기반 커맨드 버스;
메시지 기반 메모리 액세스 요청을 메시지 패킷으로 패키지화하고, 요청 패킷을 저장 모듈에 송신하며, 응답 패킷에 대응하는 데이터를 획득하기 위해 저장 모듈에 의해 반환된 메시지 패킷을 파싱(parse)하고, 데이터를 CPU에 반환하도록 구성된 메시지 기반 메모리 컨트롤러;
요청 메시지 패킷을 저장 모듈에 전송하고 응답 메시지 패킷을 메시지 기반 메모리 컨트롤러에 전송하도록 구성된 메시지 채널; 및
버퍼 스케줄러를 포함하고, 메시지 기반 메모리 컨트롤러부터 요청 패킷을 수신하고 대응하는 요청을 처리하도록 구성된 저장 모듈
을 포함하는 메시지 기반 메모리 액세스 장치를 개시한다.
메시지 기반 커맨드 버스는 요청의 메모리 액세스 길이를 지정하도록 더 구성되고, 메모리 액세스 길이는 레지스터의 길이보다 크거나 작으며;
요청된 데이터는 캐시에 반환되거나, CPU 어드레스가능한 버퍼에 반환되거나, 캐시를 통과하지 않고서 레지스터 또는 레지스터 그룹에 반환되고;
메모리 시스템에 대한 스케줄링 기반(scheduling basis)을 제공하기 위해, 메시지 기반 메모리 컨트롤러 및 버퍼 스케줄러 내에서의 메모리 액세스 커맨드의 스케줄링을 지시하기 위해 데이터 액세스 우선순위에 관한 정보가 요청에 첨부된다.
메시지 기반 메모리 컨트롤러는,
CPU와 메시지 기반 메모리 컨트롤러 사이에서의 요청 교환을 위해 구성된 메모리 액세스 요청 인터페이스;
요청 상태 테이블을 포함하는 판독/기입 요청 예약 스테이션 - 요청 상태 테이블은 2개의 부분: 판독 요청 상태 테이블 및 기입 요청 상태 테이블로 이루어지고, 각각의 새롭게 수신된 요청에 대해 테이블 엔트리를 할당하도록 구성되며, 버퍼 스케줄러가 요청에 응답하거나, 메시지 기반 컨트롤러가 CPU에 요청 응답을 송신할 때, 요청 상태 테이블 내의 대응하는 테이블 엔트리가 갱신되거나 삭제될 필요가 있음 - ;
판독/기입 요청 예약 스테이션(the read/write request reservation station)의 상태에 따라, 메모리 액세스 요청 인터페이스로부터 수신된 메모리 액세스 요청이 판독 요청 상태 테이블에 삽입될지 기입 요청 상태 테이블에 삽입될지를 제어하도록 구성된 판독/기입 요청 분배기 - 기입 요청이 수신되는 경우, 메모리 내에 기입될 데이터는 기입 데이터 버퍼 내에 임시 저장될 필요가 있음 -;
기입 요청의 데이터를 임시 저장하도록 구성된 기입 데이터 버퍼; 및
판독 요청의 데이터를 임시 저장하도록 구성된 판독 데이터 버퍼
를 더 포함한다.
메시지 기반 메모리 컨트롤러는,
한편으로는 요청 길이 및 정시 지연(timed delay)과 같은 요청 상태 테이블 내의 요청 속성들에 따라 복수의 작은 요청을 생성하도록 구성되고; 다른 한편으로는, 요청들을 스케줄링하고, 판독 요청 상태 테이블 및 기입 요청 상태 테이블 내의 처리되지 않은 요청들 중에서 처리될 다음 요청을 선택하고, 선택된 요청을 메시지 패킷화기(message packetizer)에 송신하도록 구성되는 요청 생성 및 스케줄링 컴포넌트;
하나 이상의 요청을 메시지 채널 상의 메시지 패킷으로 패키지화하고, 메시지 패킷을 메시지 채널 인터페이스를 통해 버퍼 스케줄러에 송신하도록 구성되는 메시지 패킷화기;
메시지 패킷으로부터 하나 이상의 요청을 추출하고, 각각의 요청의 대응하는 데이터 컨텐츠를 파싱하도록 구성된 메시지 언패커(message unpacker);
요청, 및 메시지 언패커의 파싱에 의해 획득된 대응하는 데이터에 따라, 판독/기입 요청 예약 스테이션 내의 요청의 상태 테이블을 갱신하고, 데이터를 판독 데이터 버퍼 내에 임시 저장하도록 구성된 요청 상태 갱신 유닛;
CPU에 요청 응답을 송신하도록 구성된 요청 응답 컨트롤러;
메시기 기반 메모리 컨트롤러의 파라미터를 구성하거나 요청의 속성들을 지정하도록 구성된 컨트롤러 구성 인터페이스 - 판독 및 기입 요청 상태 테이블 내의 속성들 내의 대응하는 값들은 요청 또는 메모리 액세스 어드레스의 구성 후에 갱신됨 - ; 및
버퍼 스케줄러로 메시지 패킷들을 전송하도록 구성되는 메시지 채널 인터페이스 - 메시지 채널 인터페이스는 메시지 채널의 상이한 물리적 구현에 기초하여, 대응하는 인터페이스 타입을 가짐 -
를 더 포함한다.
판독/기입 요청 예약 스테이션 내에서, 판독 요청 상태 테이블의 항목 번호(item number)는 요청 상태 테이블 내의 요청의 시퀀스 번호에 대응하고; 항목 번호는 메시지 기반 메모리 컨트롤러 및 버퍼 스케줄러의 메시지 패킷 내에서 처리할 요청을 고유하기 지정하기 위해 이용되고; 요청 어드레스는 액세스될 메모리의 베이스 어드레스이고; 정시 지연은 요청을 CPU에 반환하기 위한 시간을 지정하고, 컨트롤러 구성 인터페이스를 통해 주로 설정되며; 반환 입도(returning granularity)는 매 회 메시지 기반 메모리 컨트롤러에 의해 CPU에 반환되는 데이터의 길이로 구성되고; 데이터 상태는 저장 모듈로부터 획득된 요구되는 데이터 및 획득되지 않은 요구되는 데이터를 지정하고; 데이터 위치는 판독 데이터 버퍼 내의 획득된 요청 데이터의 위치를 지정한다.
요청 응답 컨트롤러는 판독/기입 요청 예약 스테이션 내의 요청의 상태에 관해 질의하고, CPU 요청이 버퍼 스케줄러 및 저장 모듈에 의해 처리된 후에 CPU에 요청 응답을 송신하고, 판독 요청이 처리되는 경우, 판독 데이터 버퍼 내의 요청의 대응하는 데이터를 송신하도록 더 구성된다.
메시지 기반 메모리 컨트롤러와 저장 모듈 간의 상호작용은 메시지 패킷에 기초하여 완료되고; 각각의 그러한 메시지 패킷은 하나 이상의 메모리 액세스 요청 또는 응답에 관한 정보를 포함하고; 메시지 패킷 내의 요청은 동기식 타이밍 시퀀스 제한(synchronous timing sequence restriction)은 갖지 않지만, 요청 반환의 최대 지연에 관한 정보를 갖는다.
메시지 기반 메모리 컨트롤러 구성 인터페이스 유닛은 메시지 모드 메모리 컨트롤러를 위한 특수 커맨드 어드레스 공간을 제공하고, 컨트롤러의 속성들의 구성을 허용하고, 메모리 액세스 요청의 속성들의 설정을 허용하고, 대응하는 메모리 액세스 커맨드를 발행한다.
메시지 기반 메모리 액세스 컨트롤러는 메시지 기반 메모리 액세스 컨트롤러 및 커맨드 어드레스 공간이, 대응하는 메모리 액세스 커맨드를 사용함으로써, 메모리 액세스 시스템이 데이터를 레지스터 또는 어드레스가능한 고속 버퍼에 주기적으로 푸시하는 것과, 메모리 시스템 내에서 단순 산술 및 논리 연산, 및 이동 동작이 수행되는 것을 지원하도록 더 구성되며, 여기에서 메모리 액세스 원자성(memory access atomicity)이 설정되거나, 동작들이 배치들로(in batches) 수행되고;
판독/기입 요청 예약 스테이션은 판독 요청 상태 테이블 및 기입 요청 상태 테이블을 제공하고, 처리될 각각의 요청은 판독 또는 기입 요청 상태 테이블 내의 대응하는 테이블 엔트리를 갖고, 각각의 테이블 엔트리는 요청의 어드레스 및 길이뿐만 아니라, 정시 반환 지연(timed return delay), 반환 입도, 데이터 상태 및 데이터 위치도 포함하고, 메시지 패킷 내에서, 각각의 요청은 대응하는 요청 상태 테이블 내의 고유 항목 번호에 의해 결정되고;
메시지 기반 메모리 컨트롤러는 복수의 요청이 하나의 메시지 패킷에 포함되는 것을 허용할 뿐만 아니라, 각각의 요청이 분할되어, 저장 모듈에 송신될 하나 이상의 메시지 패킷에 포함되는 것도 허용하며; 메시지 기반 메모리 컨트롤러는 또한 저장 모듈이 하나의 요청을 처리하기 위해 하나 이상의 메시지 패킷을 사용하는 것을 허용하고;
메시지 기반 메모리 컨트롤러에 대하여, 하나의 요청 또는 복수의 요청의 복수의 메시지 패킷은 순서를 벗어나서(out of order) 반환된다.
메시지 기반 메모리 컨트롤러는 이하의 상황에서 더 이용되는데, 하나의 판독 요청에 응답하기 위해 복수의 저장 모듈의 메시지 패킷들이 이용되는 경우, 요청의 대응하는 판독 요청 상태 테이블 내의 데이터 상태는 반환되는 데이터 및 반환되지 않는 데이터를 식별하고;
완전하게 반환되지 않는 데이터는 어드레스가능한 버퍼 또는 어드레스불가능한 버퍼 내에 저장되고, 데이터가 어드레스불가능한 버퍼 내에 임시 저장되는 경우, CPU의 판독 요청에 응답하고, 요청된 데이터는 요청된 데이터가 완전하게 반환된 후에만 CPU에 송신되고; 데이터가 어드레스가능한 버퍼 내에 임시 저장되는 경우, CPU는 반환된 데이터 부분을 판독한다.
메시지 패킷들은 메모리 액세스 판독/기입 요청 패킷, 특수 커맨드 요청 패킷, 메모리 상태 질의 패킷, 및/또는 응답 패킷을 포함한다.
저장 모듈 내의 버퍼 스케줄러는,
메시지 기반 메모리 컨트롤러로 메시지 패킷들을 전송하도록 구성되는 메시지 채널 인터페이스;
수신된 메시지 패킷으로부터 메모리 액세스 요청에 관한 정보를 획득하도록 구성된 메시지 언패커 - 정보는 요청 일련 번호, 요청 타입, 요청 시멘틱 정보(request semantic information), 어드레스, 및 데이터를 포함하고, 메시지 언패커는 요청 타입을 결정한 후에 대응하는 규칙들에 따라 언팩 동작을 수행함 - ;
메시지 언패커에 의해 파싱된 메모리 액세스 요청을 요청 큐 내에 분배하도록 구성되는 요청 분배기(request distributor) - 스케줄링은 각각의 요청의 액세스 데이터의 입도 정보, 시멘틱 정보, 및 요구되는 반환 시간에 의존함 - ;
처리되지 않은 판독/기입 요청들을 저장하도록 구성되고 상이한 우선순위들을 갖는 큐들로 이루어지는 판독/기입 요청 큐들 - 높은 우선순위 큐는 액세스 데이터가 작은 입도를 가지며 요구되는 반환 시간이 짧은 판독/기입 요청들 또는 높은 우선순위로 마킹된 판독/기입 요청들을 저장하고; 낮은 우선순위 큐는 액세스 데이터가 큰 입도를 가지며 요구되는 반환 시간이 긴 판독/기입 요청들, 또는 낮은 우선순위로 마킹된 판독/기입 요청들을 저장하고;
처리되지 않은 비-판독/기입 요청들을 저장하도록 구성되는 특수 요청 큐;
요청 큐로부터 메모리 액세스 요청을 획득하고, 요청을 커맨드 생성 유닛에 전달하며; 데이터 버퍼로부터 반환된 메모리 액세스 데이터를 획득하고, 데이터를 메시지 패킷화기에 전달하도록 구성되는 요청 스케줄러;
스케줄링된 후에 바로 실행될 필요가 있는 메모리 액세스 요청을 획득하고, 요청을 메모리 칩에 액세스하기 위한 특정 커맨드로 변환하고, 요청 스케줄러에 의해 요구되는 대로, 메모리 칩의 상태를 유지하기 위한 커맨드를 발행하도록 구성되는 커맨드 생성 유닛;
요청 스케줄러로부터의 대응하는 요청 일련 번호 및 반환된 데이터를 획득하고, 응답 패킷을 생성하고, 패킷을 메시지 기반 메모리 컨트롤러에 다시 송신하도록 구성되는 메시지 패킷화기 - 메시지 패킷화기는 요청 스케줄러에 의해 만들어지는 반환된 데이터에 대한 마크들에 따라, 복수의 요청이 하나의 응답 패킷으로 패키지화되고 메시지 기반 메모리 컨트롤러에 송신되는 것을 허용함 - ;
메모리 칩에 액세스하는 것에 관한 반환된 데이터를 저장하도록 구성된 데이터 버퍼 - 그로부터, 요청 스케줄러는 요구되는 데이터를 선택하고, 데이터를 메시지 패킷화기에 송신함 - ; 및
커맨드 생성 유닛으로부터 메모리 칩에 액세스하기 위한 커맨드를 수신하고, 커맨드를 저장 모듈 상의 메모리 칩에 송신하고, 반환된 데이터를 수신한 후에 데이터를 데이터 버퍼 내에 저장하도록 구성되는 메모리 칩 인터페이스
를 포함한다.
저장 모듈 내의 버퍼 스케줄러는,
요구되는 대로의 상이한 시간 간격들에서 펄스들을 출력하고, 요청 스케줄러 및 상태 유지 유닛에 대해 요구되는 대로의 클럭 트리거링(clock triggering)을 가능하게 하도록 구성된 타이머; 및
버퍼 스케줄러에 접속된 각각의 메모리 칩의 상태를 유지하고, 전력 충전 커맨드 및/또는 리프레시 커맨드를 발행하도록 구성되는 상태 유지 유닛
을 더 포함한다.
요청 스케줄러는 요청 상황들에 따라 높은 우선순위 큐 내의 메모리 액세스 요청들에 대한 동작들을 완료하도록 더 구성되고; 요청 스케줄러는 복수의 요청에 결합 마크들(combination marks)로 라벨을 붙이고; 요청들의 모든 반환된 데이터가 데이터 버퍼 내에 저장될 때, 데이터는 하나의 응답 패킷으로 패키지화되기 위해 메시지 패킷화기에 전달되고; 낮은 우선순위 큐 내의 많은 메모리 액세스 데이터 양을 갖는 요청에 대하여, 요청 스케줄러는 요청의 처리를 수 개의 단계로 나누고, 각각의 단계의 처리 결과를 하나의 응답 패킷으로의 패키지화 및 후속하는 반환을 위해 메시지 패킷화기에 전달한다.
저장 모듈은 이하의 상황들에서 더 이용되는데: 메시지 기반 메모리 컨트롤러로부터의 메모리 액세스 요청에 대하여, 저장 모듈은 요청을 복수의 단계로 나누고, 복수의 응답 패킷을 반환하고; 메시지 기반 메모리 컨트롤러로부터의 복수의 메모리 액세스 요청에 대하여, 저장 모듈은 요청들 전부를 처리하고, 모든 요청에 응답하기 위해 하나의 응답 패킷을 이용하며; 저장 모듈은 요청들의 우선순위들, 요청들의 시멘틱 정보, 및 저장 모듈 상의 메모리 칩의 상태에 따라 메시지 기반 메모리 컨트롤러로부터의 메모리 액세스 요청들을 실행하기 위한 시퀀스를 스케줄링한다.
저장 모듈의 메모리 유닛은 동기식 메모리 칩, 및/또는 비동기식 네트워크 접속에 기초하는 메모리 칩이다.
버퍼 스케줄러에 의해 지원되는 특수한 메시지 기반 메모리 액세스 명령들은, 타이밍 푸시 명령, 메모리 시스템 내의 단순 산술 및 논리 연산, 및 이동 명령, 및 압축 저장을 포함한다.
메시지 채널은 병렬 버스, 점-대-점 직렬 버스, 또는 다른 토폴로지 구조들을 이용하는 네트워크들을 이용하여 메시지 패킷들 내에 메시지들을 전송하도록 구성된다.
본 발명은 이하의 단계들을 포함하는 메시지 기반 메모리 액세스 방법을 개시한다:
단계(1001): CPU가 메모리 액세스 요청을 발행한다. CPU는 요청의 액세스 데이터 길이, 우선순위, 및 시멘틱 정보를 지정한다. 요청은 판독/기입 요청 외의 임의의 다른 복합 메모리 액세스 요청(complex memory access request)이다.
단계(1002) : 요청이 메시지 기반 메모리 컨트롤러의 구성에 관한 정보를 포함하는지를 판정한다. 포함하는 경우에는 단계(1003)으로 진행하고; 포함하지 않는 경우에는 단계(1004)로 진행한다.
단계(1003) : 요청이 메시지 기반 메모리 컨트롤러의 구성에 관한 정보를 포함하는 경우, 메시지 기반 메모리 컨트롤러는 구성 정보에 따라 적절한 조정을 수행한 다음, 요청을 스케줄링하고 처리한다.
단계(1004) : 메시지 기반 메모리 컨트롤러가 CPU로부터의 메모리 액세스 요청을, 복수의 요청을 포함하는 메시지 패킷으로 패키지화하고, 메시지 패킷을 메시지 채널을 통해 대응하는 저장 모듈의 버퍼 스케줄러에 송신하고, 요구조건들에 따라 판독/기입 요청 예약 스테이션 내에 기록을 만든다.
단계(1005) : 저장 모듈 내의 버퍼 스케줄러는 송신된 메시지 패킷을 파싱하고, CPU의 메모리 액세스 요청에 대한 동작을 수행한다.
단계(1006) : CPU의 메모리 액세스 요청이 처리된 후에, 요청에 관한 기록이 메시지 기반 메모리 컨트롤러의 판독/기입 요청 예약 스테이션 내에 존재하는 경우에는 기록을 소거한다.
단계(1006) 전에, 이하의 단계들이 더 포함된다.
단계(1007) : CPU의 메모리 액세스 요청이 판독 요청인 경우, 판독 데이터를 응답 패킷으로 패키지화하고, 패킷을 메시지 채널을 통해 메시지 기반 메모리 컨트롤러에 송신한다. 응답 패킷 패키지화 프로세스 동안, 요구조건들에 기초하여, 하나의 요청의 반환된 데이터가 복수의 응답 패킷으로 패키지화되고, 복수의 요청의 반환되는 데이터가 하나의 응답 패킷으로 패키지화된다.
단계(1008) : 메시지 기반 메모리 컨트롤러는, 응답 패킷을 수신 및 파싱하고, 응답 패킷 내의 데이터를 요구조건들에 따라 메시지 기반 메모리 컨트롤러의 내부의 어드레스가능한 버퍼 또는 캐시 내에 저장한다.
단계(1009) : 메시지 기반 메모리 컨트롤러는 CPU의 응답 패킷들이 모두 반환되는지를 판정한다. 모두 반환되는 경우에는 단계(1006)로 진행하고; 그렇지 않은 경우에는 단계(1008)로 진행한다.
단계(1005) 후에, 이하의 단계들이 더 포함된다.
단계(1010) : 버퍼 스케줄러는 메시지 기반 메모리 컨트롤러에 의해 송신된 메시지 패킷을 수신 및 파싱하고, CPU의 메모리 액세스 요청을 적절한 요청 큐 내에 채운다.
단계(1011) : 버퍼 스케줄러 내의 요청 스케줄러는 요청 큐 내의 복수의 요청을 스케줄링하고, CPU의 메모리 액세스 요청의 우선순위 및 시멘틱 정보에 따라 요청 실행 시퀀스를 배열한다.
단계(1012) : 스케줄링된 CPU 요청을 메모리 입도 표준을 준수하는 일련의 커맨드들로 변환하고, 커맨드들을 메모리 인터페이스에 송신한다.
단계(1013) : CPU의 메모리 액세스 요청은 복합 메모리 액세스 요청인지를 판정한다. 그러한 경우에는 단계(1014)로 진행하고; 그렇지 않은 경우에는 단계(1016)로 진행한다.
단계(1014) : CPU의 메모리 액세스 요청이 복합 메모리 액세스 요청인 경우, 버퍼 스케줄러 내의 처리 로직은 메모리에 의해 반환되는 데이터를 단순히 처리한다.
단계(1015) : 복합 메모리 액세스 명령이 처리된 후에, 요청의 타입에 따라, 처리된 데이터를 메모리 내에 다시 기입할지, 및 처리된 데이터를 CPU에 반환할지를 판정한다. 처리된 데이터가 메모리 내에 다시 기입될 필요가 있는 경우, 데이터를 메모리에 기입하기 위해 메모리 입도 표준을 준수하는 일련의 커맨드들을 이용하고; 처리된 데이터가 CPU에 반환될 필요가 있는 경우, 데이터를 응답 패킷으로 패키지화하고, 패킷을 메시지 기반 메모리 컨트롤러로 송신한다.
단계(1016) : CPU의 메모리 액세스 요청이 복합 메모리 액세스 요청이 아닌 경우, 요청이 기입 요청인지를 판정한다. 기입 요청인 경우에는 단계(1006)로 진행하고; 기입 요청이 아닌 경우에는 단계(1007)로 진행한다.
단계(1004)는 이하의 단계들을 더 포함한다:
단계(1101) : 메시지 기반 메모리 컨트롤러는 메모리 액세스 요청 인터페이스를 통해 CPU에 의해 송신된 판독/기입 요청을 수신한다.
단계(1102) : 판독/기입 요청 분배기는 요청이 판독 요청인지를 판정한다. 판독 요청인 경우에는 단계(1104)로 진행하고; 판독 요청이 아닌 경우에는 단계(1103)로 진행한다.
단계(1103) : 수신된 요청이 기입 요청인 경우, 기입 요청 상태 테이블 내에 빈 항목이 있는지를 판정한다. 있는 경우에는 단계(1105)로 진행하고; 없는 경우에는 단계(1102)로 진행한다.
단계(1104) : 수신된 요청이 판독 요청인 경우, 판독 요청 상태 테이블 내에 빈 항목이 있는지를 판정한다. 있는 경우에는 단계(1106)로 진행하고; 없는 경우에는 단계(1102)로 진행한다.
단계(1105) : 수신된 요청이 기입 요청이고, 기입 요청 상태 테이블 내에 빈 항목이 있는 경우, 요청에 대해 테이블 엔트리를 분배하고, 기입 요청 내의 데이터를 기입 데이터 버퍼 내에 저장하고; 그렇지 않은 경우에는 단계(1102)로 진행한다.
단계(1106) : 수신된 요청이 판독 요청이고, 판독 요청 상태 테이블 내에 빈 항목이 있는 경우, 요청에 대해 테이블 엔트리를 분배하고; 그렇지 않으면 단계(1102)로 진행한다.
단계(1107) : 요청의 수신을 중단하고, 메모리 액세스 요청 인터페이스를 통해 수신된 요청들의 처리를 계속한다.
메시지 기반 메모리 컨트롤러에 의한 요청의 스케줄링 및 처리는 이하의 단계들을 포함한다:
단계(1201) : 요청 생성 및 스케줄링 컴포넌트는 판독/기입 요청 상태 테이블 내의 테이블 엔트리들을 스캐닝한다.
단계(1202) : 요청 생성 및 스케줄링 컴포넌트는 판독/기입 요청 상태 테이블 내에 처리되지 않았고 처리될 필요가 있는 임의의 요청이 있는지를 질의한다. 있는 경우에는 단계(1203)으로 진행하고; 없는 경우에는 단계(1201)로 진행한다.
단계(1203) : 처리되지 않은 요청이 있는 경우, 요청 생성 및 스케줄링 컴포넌트는 대응하는 요청 상태 테이블 내의 요청 속성들에 따라 큰 요청을 복수의 작은 요청으로 분할하고, 스케줄링 알고리즘에 따라, 처리될 다음 요청을 선택한다.
단계(1204) : 처리될 요청이 판독 요청인지를 판정한다. 판독 요청인 경우에는 단계(1206)로 진행하고; 판독 요청이 아닌 경우에는 단계(1205)로 진행한다.
단계(1205) : 처리될 요청이 기입 요청인 경우, 기입 데이터 버퍼로부터 요청의 대응하는 데이터를 획득하고; 그렇지 않은 경우에는 단계(1206)로 진행한다.
단계(1206) : 메시지 패킷화기는 하나 이상의 요청을 메시지 패킷으로 패키지화한다.
단계(1207) : 패키지화된 메시지를 메시지 기반 메모리 컨트롤러와 버퍼 스케줄러 사이의 메시지 채널 인터페이스에 송신한 다음, 다음 처리 회차(processing round)를 위해 단계(1201)로 진행한다.
단계(1013)는 이하의 단계들을 더 포함한다:
단계(1301) : 이하에서 응답들을 하나씩 파싱하기 위해, 헤더 내의 응답들의 개수 및 각각의 응답의 길이를 획득하도록, 버퍼 스케줄러로부터 메시지 기반 메모리 컨트롤러에 송신된 응답 패킷의 헤더 정보를 파싱한다.
단계(1302) : 파싱될 필요가 있는 다음 응답이 있는지를 판정한다. 있는 경우에는 단계(1303)로 진행하여 다음 응답을 파싱하고; 없는 경우에는 응답 패킷 파싱이 종료한다.
단계(1303) : 다음 응답의 타입 및 요청 식별자를 파싱한다. 응답들은 이하의 단계들에서 요청 타입들에 따라 상이한 방식들로 처리된다.
단계(1304) : 응답이 메모리 액세스 판독 요청 응답인지를 판정한다. 그러한 경우에는 추가의 파싱을 위해 단계(1305)로 진행하고; 그렇지 않은 경우에는, 응답이 메모리 상태 질의 요청 응답 또는 메모리 액세스 기입 요청 응답이고, 그러면 단계(1306)로 가서 대응하는 상태 정보를 획득한다.
단계(1305) : 헤더에 의해 지정된 응답 길이에 따라 응답을 어드레싱하고, 메모리 액세스 판독 요청 응답으로부터 반환된 데이터를 획득한다.
단계(1306) : 헤더에 의해 지정된 응답 길이에 따라 응답을 어드레싱한다. 응답이 상태 질의 요청 응답인 경우에는 응답으로부터 반환된 상태 값을 획득하고; 응답이 메모리 액세스 기입 요청 응답인 경우에는 기입 요청 상태 테이블 내의 요청 속성들을 갱신한다. 다음으로, 응답 파싱이 종료한다. 단계(1302)로 되돌아간다.
단계(1307) : 패킷이 부-응답들(sub-responses)을 포함하는지 여부에 따라, 판독 요청의 메모리 액세스 데이터가 버퍼 스케줄러에 의해 복수의 응답으로 나누어진 후에 반환되는지를 판정한다. 데이터가 복수의 응답으로 나누어지지 않는 경우에는, 단계(1309)로 가서 메모리 액세스 판독 요청을 처리하고; 데이터가 나누어지는 경우에는 획득된 부-응답들의 개수 및 현재의 부-응답의 식별자를 획득하기 위해 패킷을 파싱한 다음, 단계(1308)로 진행한다.
단계(1308) : 현재의 부-응답의 식별자가 부-응답들의 개수와 동일한지 여부에 따라, 현재 응답이 메모리 액세스 판독 요청의 마지막 부-응답인지를 판정한다. 그러한 경우에는, 단계(1309)로 가서 현재 메모리 액세스 판독 요청을 처리하고; 그렇지 않은 경우에는, 현재 메모리 액세스 판독 요청이 아직 처리되지 않았고, 현재의 부-응답의 반환된 데이터를 대응하는 데이터 버퍼에 기입하고, 판독 요청 상태 테이블 내의 데이터 상태, 데이터 위치 및 다른 정보를 갱신한 다음, 단계(1302)로 되돌아간다.
단계(1309) : 현재 메모리 액세스 판독 요청을 처리하고, 메시지 기반 메모리 컨트롤러로부터의 데이터를 CPU에 다시 전송할 준비를 한 다음, 단계(1302)로 되돌아간다.
단계(1006)는 이하의 단계들을 더 포함한다:
단계(1401) : 요청 응답 컨트롤러는 판독 및 기입 요청 상태 테이블들을 스캐닝한다.
단계(1402) : 기입 요청 상태 테이블 내에 임의의 처리된 요청이 있는지를 질의한다. 있는 경우에는 단계(1404)로 진행하고; 없는 경우에는 단계(1403)로 진행한다.
단계(1403) : 기입 요청 상태 테이블 내에 처리된 요청 항목이 없는 경우, 판독 요청 상태 테이블 내에 임의의 처리된 요청 항목이 있는지를 질의한다. 있는 경우에는 단계(1404)로 진행하고; 없는 경우에는 단계(1402)로 진행한다.
단계(1404) : 기입 요청 상태 테이블 또는 판독 요청 상태 테이블 내에 처리된 요청이 있는 경우, 처리된 요청이 요청 속성들의 요구조건들을 충족하는지를 판정한다. 충족하는 경우에는 단계(1405)로 진행하고; 충족하지 않는 경우에는 단계(1402)로 진행한다.
단계(1405) : 모든 속성들의 요구조건들을 충족하는 요청의 응답을 송신한다. 응답의 데이터 컨텐츠는 또한 요청의 반환 입도 및 다른 속성들에 일치할 필요가 있다.
단계(1011)는 이하의 단계들을 포함한다:
단계(1501) : 타이머는 설정 조건에 따라 새로운 요청 스케줄링 프로세스를 시작할 준비를 하도록 요청 스케줄러를 트리거링한다.
단계(1502) : 트리거링 조건이 칩 상태 유지가 요청되는 것인지를 검사한다. 그러한 경우에는 단계(1503)로 진행하고; 그렇지 않은 경우에는 단계(1504)로 진행한다.
단계(1503) : 타이머의 트리거링 조건은 칩 상태 유지가 요구되는 것이다. 칩 상태 유지 커맨드를 발행하고, 단계(1509)로 진행한다.
단계(1504) : 트리거링 조건이 특수 요청 큐가 처리될 필요가 있다는 것인지를 검사한다. 그러한 경우에는 단계(1505)로 진행하고; 그렇지 않은 경우에는 단계(1506)로 진행한다.
단계(1505) : 트리거링 조건은 특수 요청 큐가 처리될 필요가 있다는 것이다. 특수 요청 큐 내의 요청을 판독하고, 요청을 일련의 판독/기입 동작들로 변환한다. 큐 내의 요청 상태를 수정하거나, 요청이 처리된 후에 요청 상태를 소거한다. 단계(1509)로 진행한다.
단계(1506) : 트리거링 조건이 가장 높은 우선순위를 갖는 판독/기입 요청 큐가 처리될 필요가 있다는 것인지를 검사한다. 그러한 경우에는 단계(1507)로 진행하고; 그렇지 않은 경우에는 단계(1508)로 진행한다.
단계(1507) : 트리거링 조건은 가장 높은 우선순위를 갖는 판독/기입 요청 큐가 처리될 필요가 있다는 것이다. 큐 내의 모든 요청을 소거하고, 모든 판독 요청들에 결합 마크들로 라벨을 붙인다. 단계(1509)로 진행한다.
단계(1508) : 트리거링 조건은 가장 높은 우선순위를 갖지 않는 판독/기입 요청 큐가 처리될 필요가 있다는 것이다. 대응하는 우선순위를 갖는 요청 큐 내의 요청에 액세스하고, 판독/기입 요청의 현재 상태에 따라 요구되는 판독/기입 동작을 생성한다. 요청이 처리된 후에, 큐 내의 요청 상태를 수정하거나, 요청 상태를 소거한다. 단계(1509)로 진행한다.
단계(1509) : 요청 스케줄링 프로세스가 종료한다. 타이머에 의한 다음 스케줄링 프로세스의 트리거링을 기다린다.
본 발명의 이로운 효과는 본래의 동기식 메모리 액세스 구조를 변경함으로써, 종래의 동기식 버스 트랜잭션이 비동기식 요청 메시지들 및 응답 메시지들로 대체된다는 것이고; 이것은 메모리 액세스 구조 및 애플리케이션 메모리 액세스 인터페이스의 동시성 및 유연성을 개선하고, 그에 의해 CPU 메모리 채널의 이용률을 개선한다.
도 1은 본 발명에 따른 메시지 기반 메모리 액세스 장치의 전체적인 구조도이다.
도 2는 본 발명에 따른 메시지 기반 메모리 컨트롤러와 저장 모듈 사이에서 전송되는 메시지 패킷의 포맷 차트이다.
도 3은 본 발명에 따른 메시지 패킷의 헤더의 포맷 차트이다.
도 4는 본 발명에 따른 메모리 액세스 판독/기입 요청 패킷의 포맷 차트이다.
도 5는 본 발명에 따른 상태 질의 요청 패킷의 포맷 차트이다.
도 6은 본 발명에 따른 응답 패킷의 포맷 차트이다.
도 7은 본 발명에 따른 메시지 기반 메모리 컨트롤러의 개략적인 구조도이다.
도 8은 본 발명에 따른 메시지 기반 메모리 컨트롤러의 판독 요청 상태 테이블 내의 테이블 엔트리들의 포맷 차트이다.
도 9는 본 발명에 따른 저장 모듈 내의 버퍼 스케줄러의 개략적인 구조도이다.
도 10은 본 발명에 따른 메시지 기반 메모리 액세스 방법의 플로우차트이다.
도 11은 본 발명에 따른 메시지 기반 메모리 컨트롤러에 의해 메모리 액세스 요청을 수신하는 것의 플로우차트이다.
도 12는 본 발명에 따른 메시지 기반 메모리 컨트롤러에 의해 메모리 액세스 요청을 스케줄링 및 처리하는 것의 플로우차트이다.
도 13은 본 발명에 따른 메시지 기반 메모리 컨트롤러에 의해 응답 패킷을 수신 및 처리하는 것의 플로우차트이다.
도 14는 본 발명에 따른 메시지 기반 메모리 컨트롤러에 의해 CPU에의 요청에 응답하는 것의 플로우차트이다.
도 15는 본 발명에 따른 버퍼 스케줄러에 의해 메모리 액세스 요청을 스케줄링하는 것의 플로우차트이다.
본 발명의 구체적인 구현 방식들은 첨부 도면들을 참조하여 이하에 상세하게 설명된다.
본 발명의 목적은 CPU 메모리 채널들의 유효 이용률을 개선하고, 메시지 기반 메모리 액세스 장치를 제공하는 것이다.
본 발명의 시작점은, 물리적 대역폭이 제한되더라도, 이용률을 개선함으로써 유효 대역폭이 증가될 수 있다는 것이다. 그러나, 종래의 메모리 시스템은 고정된 지연 및 고정된 입도를 갖는 수동 동기식 시퀀스 메모리 액세스 구조(passive synchronous sequence memory access structure)를 이용하며, 이것은 가능한 효과적인 기술적 접근방식들의 적용을 제한한다.
본 발명은 "메시지" 기반에 기초하는 새로운 구조를 연구한다. 종래의 동기식 버스 트랜잭션은, 본래의 동기식 메모리 액세스 구조를 변경함으로써, 비동기식 및 동시성 요청 메시지들 및 응답 메시지들로 대체된다. 이것은 메모리 액세스 구조 및 애플리케이션 메모리 액세스 인터페이스의 유연성을 개선하고, 그에 의해 CPU 메모리 채널의 이용률을 개선한다.
본 발명은 메시지 기반 메모리 액세스 장치로서,
메모리 시스템에게 대응하는 동작을 수행할 것을 지시하기 위해, CPU에 의해 생성된 메시지 기반 메모리 액세스 명령을 전송하도록 구성된 메시지 기반 커맨드 버스;
CPU 요청을 메시지 패킷으로 패키지화하고, 패킷을 저장 모듈에 송신하며, 저장 모듈에 의해 반환된 메시지 패킷을 파싱하고, 데이터를 CPU에 반환하도록 구성된 메시지 기반 메모리 컨트롤러;
요청 메시지 패킷 및 응답 메시지 패킷을 전송하도록 구성된 메시지 채널; 및
버퍼 스케줄러를 포함하고, 메시지 기반 메모리 컨트롤러부터 요청 패킷을 수신하고, 대응하는 요청을 처리하도록 구성된 저장 모듈
을 포함하는 메시지 기반 메모리 액세스 장치를 제공한다.
메시지 기반 커맨드 버스는 요청의 메모리 액세스 길이를 지정할 수 있고, 메모리 액세스 길이는 레지스터의 길이보다 크거나 작을 수 있다.
메시지 기반 커맨드 버스에 대하여, 요청된 데이터는 캐시에 반환되거나, CPU의 어드레스가능한 버퍼에 반환되거나, 캐시를 통과하지 않고서 레지스터 또는 레지스터 그룹에 반환될 수 있다.
메시지 기반 커맨드 버스에 대하여, 메모리 시스템에 대한 스케줄링 기반을 제공하기 위해, 메시지 기반 메모리 컨트롤러 및 버퍼 스케줄러 내의 메모리 액세스 커맨드의 스케줄링을 지시하기 위해 데이터 액세스 우선순위에 관한 정보가 요청에 첨부될 수 있다.
메시지 기반 메모리 컨트롤러와 저장 모듈 간의 상호작용은 메시지 패킷에 기초하여 완료될 수 있다. 각각의 메시지 패킷은 하나 이상의 메모리 액세스 요청의 정보 또는 데이터를 포함하도록 허용되고; 메시지 패킷 내의 요청은 동기식 타이밍 시퀀스 제한(synchronous timing sequence restriction)을 갖지 않지만, 요청은 그 요청 반환의 최대 지연 및 다른 정보를 포함할 수 있다.
메시지 기반 메모리 컨트롤러에 대하여, 컨트롤러 구성 인터페이스 유닛은 메시지 기반 메모리 컨트롤러를 위한 특수 커맨드 어드레스 공간을 제공하고, 컨트롤러의 속성들의 구성, 및 메모리 액세스 요청의 입도 및 정시 반환 지연(timed return delay)의 설정과 같은 메모리 액세스 요청의 속성들의 설정을 허용하고, 특수 메모리 액세스 커맨드가 발행되는 것을 허용한다.
메시지 기반 메모리 액세스 컨트롤러 및 커맨드 어드레스 공간은 특수 커맨드를 사용함으로써, 메모리 액세스 시스템이 데이터를 레지스터 또는 어드레스가능한 고속 버퍼에 데이터를 주기적으로 푸시하는 것과, 메모리 시스템 내에서 단순 산술 및 논리 연산, 및 이동 동작이 수행되는 것을 지원할 수 있고, 여기에서 메모리 액세스 원자성이 설정될 수 있거나, 동작들이 배치들로(in batches) 수행될 수 있다.
메시지 기반 메모리 컨트롤러에 대하여, 판독/기입 요청 예약 스테이션은 판독 요청 상태 테이블 및 기입 요청 상태 테이블을 제공한다. 처리될 각각의 요청은 판독 요청 상태 테이블 또는 기입 요청 상태 테이블 내의 대응하는 테이블 엔트리를 갖는다. 각각의 테이블 엔트리는 요청의 어드레스 및 길이뿐만 아니라, 정시 반환 지연, 반환 입도, 데이터 상태, 데이터 위치, 및 요청의 다른 추가 속성들도 포함한다. 메시지 패킷 내에서, 각각의 요청은 대응하는 요청 상태 테이블 내의 고유 항목 번호에 의해 결정된다.
메시지 기반 메모리 컨트롤러에 대하여, 메시지 기반 메모리 컨트롤러는 복수의 요청이 하나의 메시지 패킷에 포함되는 것을 허용할 뿐만 아니라, 각각의 요청이 분할되어, 저장 모듈에 송신될 하나 이상의 메시지 패킷에 포함되는 것도 허용하며; 메시지 기반 메모리 컨트롤러는 또한 저장 모듈이 하나의 요청을 처리하기 위해 하나 이상의 응답 정보 패킷을 사용하는 것을 허용한다.
메시지 기반 메모리 컨트롤러에 대하여, 하나의 요청 또는 복수의 요청의 복수의 응답 메시지 패킷은 순서를 벗어나서 반환될 수 있다.
메시지 기반 메모리 컨트롤러에 대하여, 하나의 판독 요청에 응답하기 위해 복수의 저장 모듈의 메시지 패킷들이 이용되는 경우, 요청의 대응하는 판독 요청 상태 테이블 내의 데이터 상태는 반환되는 데이터 및 반환되지 않는 데이터를 식별한다. 완전하게 반환되지 않는 데이터는 어드레스가능한 버퍼 또는 어드레스불가능한 버퍼 내에 저장될 수 있다. 데이터가 어드레스불가능한 버퍼 내에 임시 저장되는 경우, CPU의 판독 요청에 응답하고, 요청된 데이터는 그 요청된 데이터가 완전하게 반환된 후에만 CPU에 송신되고; 데이터가 어드레스가능한 버퍼 내에 임시 저장되는 경우, CPU는 모든 데이터가 반환되기를 기다리지 않고, 반환된 데이터를 판독할 수 있다.
메시지 패킷은 스레드 정보, 객체 정보 및 우선순위 정보를 포함하지만 그에 한정되지는 않는 메모리 액세스 시멘틱 정보를 포함할 수 있다.
메시지 채널에 대하여, 데이터는 병렬 버스, 점-대-점 직렬 버스, 또는 다른 토폴로지 구조를 이용하는 네트워크들을 이용하여 메시지 패킷들 내에서 전송된다.
버퍼 스케줄러를 포함하는 저장 모듈에 대하여, 메시지 기반 메모리 컨트롤러에 의해 송신된 메모리 액세스 요청은 복수의 단계로 처리될 수 있고, 요청은 복수의 메시지 패킷으로 응답을 받을 수 있다.
버퍼 스케줄러를 포함하는 저장 모듈에 대하여, 복수의 메시지 기반 메모리 컨트롤러에 의해 송신된 메모리 액세스 요청들은, 그 요청들이 처리된 후에 단 하나의 메시지 패킷으로 응답을 받을 수 있다.
버퍼 스케줄러를 포함하는 저장 모듈은 요청들의 우선순위들, 요청들의 시멘틱 정보, 및 저장 모듈 상의 메모리 칩의 상태에 기초하여, 메시지 기반 메모리 컨트롤러에 의해 송신된 메모리 액세스 요청들의 실행 시퀀스를 스케줄링할 수 있다.
버퍼 스케줄러를 포함하는 저장 모듈에 대하여, 버퍼 스케줄러는 로드/저장을 제외한 특수 메시지 기반 메모리 액세스 명령들을 지원하는데, 그러한 명령들은 타이밍 푸시 명령, 메모리 시스템 내의 단순 산술 및 논리 연산, 및 이동 명령(원자 동작 및 배치 처리(batch processing)를 지원), 및 압축 저장을 포함하지만, 그에 한정되지는 않는다.
버퍼 스케줄러를 포함하는 저장 모듈에 대하여, 저장 모듈 내의 메모리 유닛은 동기식 메모리 칩, 또는 비동기식 네트워크 접속에 기초하는 메모리 칩일 수 있다.
본 발명의 목적, 기술적 해법 및 이점을 더 분명하게 하기 위해, 이하에서는, 본 발명의 메시지 기반 메모리 액세스 장치 및 메시지 기반 메모리 액세스 방법을 본 발명의 실시예들 및 첨부 도면들을 참조하여 더 기술한다. 여기에서의 구체적인 실시예들은 본 발명을 제한하는 것이 아니라 본 발명을 기술하도록 의도된 것일 뿐임을 이해해야 한다.
도 1에 도시된 바와 같이, 메시지 기반 메모리 액세스 장치는 메시지 기반 커맨드 버스(110), 메시지 기반 메모리 컨트롤러(120), 메시지 채널(130), 및 버퍼 스케줄러를 포함하는 저장 모듈(140)을 포함하고; 이러한 기능 유닛들은 메시지 패킷을 이용하여 CPU의 메모리 액세스를 수행하고; 제어가능한 지연 및 가변 입도가 달성되며, 시멘틱 정보의 메시지 기반 메모리 액세스가 지원된다.
CPU를 위한 특수 커맨드 어드레스 공간에의 액세스 또는 메모리 액세스 명령은 메시지 기반 커맨드 버스(110) 상의 메시지 기반 메모리 액세스 요청으로 변환된다. 종래의 로드 및 저장 메모리 액세스 명령들과 비교할 때, 메시지 기반 메모리 액세스 장치는 CPU가 메모리 액세스 데이터 입도의 크기 및 속도, 데이터 반환 타이밍 및 방식, 및 다른 시멘틱 정보를 지정하는 것을 허용한다.
메시지 기반 메모리 컨트롤러(120)는 수신된 메모리 액세스 요청들을 스케줄링하고, 요청들을 요청 패킷들로 변환하고, 패킷들을 메시지 채널(130)에 배치하고, 처리되고 있는 모든 메모리 액세스 요청들의 상태들을 유지한다. 메시지 채널(130) 상에서 반환된 응답 패킷들을 파싱할 때, 메시지 기반 메모리 컨트롤러(120)는 응답 패킷들을 언팩하여, 메모리 액세스 요청들의 반환된 데이터를 획득한다.
저장 모듈(140)은 버퍼 스케줄러를 통해 메시지 채널(130) 상에서 요청 패킷들을 수신 및 처리하고, 요청들을 파싱하고, 특정 메모리 칩에 액세스하고, 반환될 필요가 있는 데이터를 응답 패킷들로 패키지화하고, 응답 패킷들을 메시지 기반 메모리 컨트롤러(120)에 송신한다.
메시지 기반 커맨드 버스(110)는 주로 아래의 3가지 타입의 메시지 기반 메모리 액세스 명령들을 지원한다.
1. 통상의 메모리 로드 및 저장 명령에 대해 입도 및 우선순위 파라미터를 추가함으로써 획득되는 메시지 기반 메모리 로드 및 저장 명령. CPU는 먼저 특수 커맨드 어드레스 공간 내의 지정된 위치에서의 메모리 액세스 데이터 크기 및 액세스 우선순위를 설정한 다음, 메시지 기반 메모리 로드 및 저장 명령을 실행한다. 즉, 지정된 길이의 데이터가 메모리로부터 취득되어, 요구되는 우선순위에 기초하여 캐시 내에 저장될 수 있다.
2. 메모리 시스템이 명령에 의해 지정된 어레이의 데이터를 후속하는 기간 내에 일정한 간격으로 지정 레지스터에 반환하는 것을 허용하는 정시 반환 명령. CPU는 먼저 특수 커맨드 어드레스 공간 내의 지정된 위치에서의 메모리 액세스의 시간 간격 및 반환 시간들을 설정한 다음, 정시 반환 명령을 실행한다. 명령의 실행 동안, 메시지 기반 메모리 컨트롤러 또는 버퍼 스케줄러는 요구되는 판독 커맨드를 주기적으로 생성하고, 커맨드를 커맨드 큐 또는 요청 큐 내에 삽입한다. 메모리 시스템에 의해 반환되는 데이터는 캐시를 통과하지 않고서 레지스터에 직접 송신된다. 프리페치(prefetching)에 비해, 정시 반환(timed return)은 버퍼 점유(buffer occupation)를 감소시킨다.
3. 원자성(atomicity) 및 배치(batch) 처리를 지원하는, 메모리 시스템 내의 단순 산술 논리 연산 및 복제 명령. 이러한 명령을 이용하여, 메모리 시스템은 CPU를 이용하지 않고서도, 메모리 유닛 상에서 소정의 단순 산술 논리 연산들(가산, 감산, AND, OR, XOR 및 기타 연산들로서, 연산 결과들은 메모리 유닛 내에 기입됨), 및 소정의 복제 동작들을 수행할 수 있다. 이 명령은 배치 처리를 지원한다. 특수 커맨드 어드레스 공간 내의 지정된 위치에서, 메모리 시스템이 실행할 동작의 타입, 원자성 동작(atomic operation)인지의 여부, 및 배치 처리(batch processing)의 동작 시간들과 같은 명령의 파라미터들을 설정한 다음, 명령 MOP R1, R2, R3을 실행할 필요가 있다. 그 명령에서, R1 및 R2는 소스 오퍼랜드 어드레스(source operand address)를 저장하고, R3는 목적지 오퍼랜드 어드레스(destination operand address)를 저장한다. 이러한 명령의 실행 동안, 버퍼 스케줄러 또는 메시지 기반 메모리 컨트롤러는 동작들 및 복제를 실행하고, 동작들의 원자성을 보장하고, 동작 시간들을 제어한다. 단순 연산들은 데이터가 CPU에 이동될 것을 요구하지 않고, 그에 의해 전체 메모리 액세스 양을 감소시킨다.
메시지 기반 메모리 컨트롤러(120) 및 저장 모듈(140)은 메시지 패킷들을 이용하여 서로 통신한다. 지원되는 타입의 메시지 패킷들은 메모리 액세스 판독/기입 요청 패킷, 특수 커맨드 요청 패킷, 메모리 상태 질의 패킷, 및 응답 패킷을 포함한다. 도 2에 도시된 바와 같이, 메시지 패킷(200)은 하나의 헤더(202), 및 하나 이상의 메모리 액세스 요청 또는 응답(204, 206 및 208)을 포함한다. 헤더(202)는 패킷 타입, 요청들의 수, 각각의 요청의 길이, 패킷의 길이, 고장 허용한계 정보(fault-tolerant information), 및 그 외의 것들과 같은 메시지 패킷의 메타데이터를 지정한다. 메시지 기반 메모리 컨트롤러로부터 저장 모듈에 송신되는 메모리 액세스 판독/기입 요청 패킷은 하나 이상의 메모리 액세스 판독/기입 요청을 포함할 수 있다. 202, 204 또는 206을 포함하는 각각의 메모리 액세스 요청은 요청 식별자, 메모리 액세스 어드레스, 메모리 액세스 입도, 및 메모리 액세스 동작을 포함하고, 소정의 시멘틱 정보를 더 포함할 수 있으며; 그 외에, 기입 요청은 데이터를 더 포함한다. 저장 모듈로부터 메시지 기반 메모리 컨트롤러에 송신되는 응답 패킷은 하나 이상의 응답을 포함할 수 있고, 각각의 응답 패킷은 요청 식별자, 반환된 데이터 및 그 외의 것들을 포함할 수 있다.
각각의 메시지 패킷은 헤더(300)를 반드시 포함해야 한다. 도 3에 도시된 바와 같이, 헤더 정보는 패킷 타입(302), 소스 모듈 식별자(304), 타겟 모듈 식별자(306), 포함된 요청/응답의 수(308), 각각의 요청/응답의 길이(310, 312 또는 314), 패킷 길이(316), 및 전체 패킷의 고장 허용한계 정보(318)를 포함한다. 패킷 타입(302)은 버스 상의 패킷들의 타입들을 지정한다. 지원되는 패킷 타입들은 메모리 액세스 판독/기입 요청 패킷, 특수 커맨드 요청 패킷, 메모리 상태 질의 패킷, 및 응답 패킷을 포함한다. 소스 모듈 식별자(304)는 메시지 패킷을 송신하는 모듈(메시지 기반 메모리 컨트롤러 또는 저장 모듈)의 번호를 지정한다. 예를 들어, 복수의 메시지 기반 메모리 컨트롤러를 포함하는 시스템에 대하여, 소스 모듈 식별자(304)는 메모리 액세스 판독/기입 요청을 송신하는 메시지 기반 메모리 컨트롤러의 식별자를 지정할 수 있다. 타겟 모듈 식별자(306)는 메시지 패킷을 수신하고 처리하는 모듈(메시지 기반 메모리 컨트롤러 또는 저장 모듈)의 번호를 지정한다. 포함되는 요청/응답의 수(308)는 메시지 패킷 내에 포함되는 요청 또는 응답의 수를 지정한다. 포함되는 요청은 패킷 타입에 반드시 일치해야 한다는 점에 유의해야 한다. 예를 들어, 패킷 타입이 메모리 액세스 판독 요청 패킷인 경우, 메시지 패킷 내의 요청들은 모두 메모리 액세스 판독 요청이어야 한다. 각각의 요청/응답의 길이(310, 312 또는 314)는 각각의 요청 또는 응답의 크기를 지정하여, 메시지 패킷 내의 각각의 요청 또는 응답의 위치(오프셋)를 어드레싱하는 것을 돕는다. 패킷 길이(316)는 전체 메시지 패킷의 길이를 지정한다. 전체 패킷의 고장 허용한계 정보(318)는 한정되는 것은 아니지만, 패리티 체크(Parity), 체크섬(checksum), 에러 정정 코드(error-correcting code: ECC), 및 다른 고정 허용한계 기술들을 이용하는 것을 포함하여, 버스 상의 메시지 패킷의 전송 프로세스 내에서 에러가 발행하는지 여부를 지정한다.
메모리 액세스 판독/기입 요청 패킷은 하나 이상의 메모리 액세스 판독/기입 요청(400)을 저장 모듈에 송신하기 위해 메시지 기반 메모리 컨트롤러에 의해 이용된다. 도 4에 도시된 바와 같이, 각각의 메모리 액세스 판독/기입 요청(400)은 헤더 외에, 요청 식별자(402), 동작 코드(404), 메모리 액세스 어드레스(406) 및 메모리 액세스 입도(408)를 포함하고, 시멘틱 정보(410)를 더 포함할 수 있으며; 그 외에, 메모리 액세스 기입 요청은 데이터(412)를 더 포함한다. 요청 식별자(402)는 각각의 요청에 대하여 메시지 기반 메모리 컨트롤러에 의해 분배된 고유 식별자이다. 동작 코드(404)는 판독 요청 또는 기입 요청과 같은 메모리 요청 동작을 지정한다. 메모리 액세스 어드레스(406)는 메모리 액세스 요청의 기본 물리 어드레스를 지정한다. 메모리 액세스 입도(408)는 8B의 작은 입도 또는 4KB의 더 큰 입도와 같이, 메모리 액세스 요청의 데이터의 입도(또는 길이)를 지정한다. 시멘틱 정보(410)는 CPU가 메시지 기반 메모리 컨트롤러를 통해 저장 모듈에 송신하고 저장 모듈 내의 버퍼 스케줄러의 스케줄링을 지시하는 데에 이용되는, 메모리 액세스 요청의 우선순위, 메모리 액세스 요청을 처리하는 것의 타임아웃(Timeout), 메모리 액세스 요청을 송신하는 CPU의 코어 식별자(Core ID), 및 그 외의 것들과 같은 프로그램 실행 정보(program-running information)를 지정한다. 메모리 액세스 기입 요청 내에 더 포함되는 데이터(412)는 지정된 물리 어드레스 내에 기입될 데이터를 지정한다.
특수 커맨드 요청 패킷은 메시지 기반 메모리 컨트롤러가, 단순 산술 및 논리 연산, 이동, 원자성 동작, 압축 및 그와 유사한 것과 같은 특수한 처리된 커맨드들을 저장 모듈에 송신하는 데에 이용된다.
메모리 상태 질의 패킷은 메시지 기반 메모리 컨트롤러가 저장 모듈 상의 다양한 타입들의 상태 정보에 관해 질의하는 데에 이용된다. 각각의 메모리 상태 질의 패킷은 단 하나의 질의 요청을 포함한다. 그러므로, 요청 헤더 내의 요청들의 수는 항상 1로 설정된다. 도 5에 도시된 바와 같이, 각각의 상태 질의 요청(500)은 상태 질의 타입(502) 및 상태 질의 식별자(504)를 포함한다. 상태 질의 타입(502)은 판독/기입 요청 큐가 충만되어 있는지(full)의 여부, 특수 요청 큐가 충만되어 있는지의 여부, 메모리 칩이 저전력 소비 상태에 있는지의 여부, 및 그와 유사한 것과 같은 질의된 저장 모듈 상태의 타입을 지정한다. 상태 질의 식별자(504)는 메시지 기반 메모리 컨트롤러에 의해 분배되는 상태 질의 요청 식별자이며, 메시지 기반 메모리 컨트롤러가 저장 모듈로부터 응답을 수신한 후에, 상태 질의 요청을 어드레싱하기 위해 이용된다.
응답 패킷은 저장 모듈이 메시지 기반 메모리 컨트롤러에 하나 이상의 반환된 응답을 송신하는 데에 이용된다. 각각의 응답(600)은 헤더 외에, 도 6에 도시된 바와 같이, 응답 타입(602) 및 요청 식별자(604)를 포함하고, 부-응답의 수(606), 부-응답 식별자(608), 데이터(610) 또는 상태 값(612)을 더 포함할 수 있다. 응답 타입(602)은 메모리 액세스 판독 요청 응답, 상태 질의 요청 응답 및 그 외의 것들과 같이, 상이한 타입들의 요청에 대하여 반환되는 대응하는 응답들을 지정한다. 요청 식별자(604)는 메모리 액세스 판독 요청 식별자 또는 상태 질의 요청 식별자와 같이, 응답의 대응하는 요청 식별자이다. 메모리 액세스 판독 요청 응답에 대하여, 더 큰 입도의 데이터가 요청되는 경우, 저장 모듈은 응답을 반환할 때 하나의 단일 요청의 데이터를 복수의 부-응답으로 나눌 수 있고, 부-응답들은 반환을 위한 하나의 응답 패킷으로 패키지화되거나, 복수의 응답 패킷으로 패키지화된 후, 따로따로 반환될 수 있다. 이러한 경우에서, 부-응답들의 수(606)는 부-응답들의 수를 지정하고, 부-응답 식별자(608)는 현재 반환되는 부-응답의 식별자를 지정한다. 메시지-기반 메모리 컨트롤러가 하나 이상의 응답 패킷으로부터 지정된 수의 부-응답을 획득한 후, 메모리 액세스 판독 요청이 처리된다. 메모리 액세스 판독 요청 응답은 저장 모듈로부터 메시지 기반 메모리 컨트롤러 내로 판독된 데이터(610)를 더 포함한다. 상태 질의 요청 응답은 판독/기입 요청 큐가 충만하다는 것과 같이, 메모리에 대응하는 반환된 상태 값(612)을 더 포함한다.
도 7에 도시된 바와 같이, 메시지 기반 메모리 컨트롤러는 메모리 액세스 요청 인터페이스(700), 판독/기입 요청 분배기 유닛(701), 기입 데이터 버퍼 유닛(702), 판독 데이터 버퍼 유닛(703), 판독/기입 요청 예약 스테이션(704), 요청 생성 및 스케줄링 컴포넌트(705), 메시지 패킷화기(706), 메시지 언패커(707), 요청 상태 갱신 유닛(708), 요청 응답 컨트롤러(709), 컨트롤러 구성 인터페이스(710), 및 메시지 채널 인터페이스(711)를 포함한다. 이러한 유닛들에 의해 구현되는 메시지 기반 메모리 컨트롤러는 버퍼 스케줄러 및 저장 모듈 유닛과의 상호작용을 수행하여 요청들의 처리를 완료하기 위해 메시지 패킷들을 이용하고; 메시지 기반 메모리 컨트롤러는 가변 입도 및 제한된 반환 타이밍을 이용한 메모리 액세스 요청들의 처리를 지원한다. 추가로, 메시지 기반 메모리 컨트롤러는 하나의 판독 요청의 데이터가 복수의 메시지 패킷 내에서 순서를 벗어난 방식으로 반환되는 것을 허용한다. 이것은 메모리 대역폭의 이용률을 개선할 수 있다.
메모리 액세스 요청 인터페이스(700)는 CPU와 메시지 기반 메모리 컨트롤러 사이에서의 요청 교환 인터페이스이고; 이 인터페이스는 CPU가 메시지 기반 메모리 컨트롤러에 메모리 액세스 요청을 송신하는 데에 이용되고, 메시지 기반 메모리 컨트롤러가 메모리 액세스 요청 응답을 CPU에 송신하는 데에도 이용되며; 그 외에, 이 인터페이스는 메시지 기반 메모리 컨트롤러를 구성하기 위한 커맨드도 전송할 수 있다.
판독/기입 요청 분배기 유닛(701)은 도 8에 도시된 바와 같이, 메시지 기반 메모리 컨트롤러의 잔여 공간이 포함할 수 있는 메모리 액세스 요청의 수와 같은 판독/기입 요청 예약 스테이션의 상태에 따라, 메모리 액세스 요청 인터페이스로부터 수신된 메모리 액세스 요청이 판독 요청 상태 테이블에 삽입될지 기입 요청 상태 테이블에 삽입될지를 제어한다. 기입 요청이 수신되는 경우, 메모리 내에 기입될 데이터는 기입 데이터 버퍼 유닛(702) 내에 임시 저장될 필요가 있다.
기입 데이터 버퍼 유닛(702)은 기입 요청의 데이터를 임시 저장하도록 구성된다. 기입 요청이 스케줄링될 때, 이러한 요청에 대응하는 데이터는 메시지 패킷 내에 채워지고 버퍼 스케줄러에 송신될 필요가 있다.
판독 데이터 버퍼 유닛(703)은 판독 요청의 데이터를 임시 저장하도록 구성된다. 메시지 기반 메모리 컨트롤러는 하나의 요청의 데이터가 복수의 메시지 패킷 내에서 반환되는 것을 허용하기 때문에, 판독 데이터 버퍼 내의 데이터는 요청의 요구되는 데이터의 일부에 지나지 않을 수 있고 순서대로가 아닐 수 있다. 판독 요청 상태 테이블은 각각의 요청의 반환된 데이터 블록들, 및 판독 데이터 버퍼 내에서의 대응하는 데이터 위치를 기록한다. 추가로, 메시지 기반 메모리 컨트롤러는 요청의 정시 반환의 기능을 갖고; 따라서 요청의 모든 데이터가 판독 데이터 버퍼 내에 임시 저장되더라도, 요청은 즉시 반환되지 않을 수 있다.
판독/기입 요청 예약 스테이션 유닛(704)은 요청들을 제어하고 관리하기 위한 핵심 유닛이며; 판독/기입 요청 예약 스테이션 유닛(704)은 판독 요청 상태 테이블 및 기입 요청 상태 테이블로 구성된다. 요청 상태 테이블은 각각의 새롭게 수신된 요청에 대해 테이블 엔트리를 분배한다. 버퍼 스케줄러에 의해 요청에 응답할 때, 또는 메시지 기반 메모리 컨트롤러가 CPU에 요청 응답을 송신할 때, 요청 상태 테이블 내의 대응하는 테이블 엔트리는 갱신되거나 삭제될 필요가 있다.
판독 요청 상태 테이블 내의 테이블 엔트리들은 도 8에 도시되어 있다. 항목 번호는 요청 상태 테이블 내의 요청의 시퀀스 번호에 대응한다. 항목 번호는 처리할 요청을 고유하게 지정하기 위해, 메시지 기반 메모리 컨트롤러 및 버퍼 스케줄러의 메시지 패킷 내에서 이용된다. 요청 어드레스는 액세스될 메모리의 베이스 어드레스이다. 종래의 메시지 기반 메모리 컨트롤러의 고정된 메모리 액세스 요청 길이와는 달리, 메시지 기반 메모리 컨트롤러는 길어진 요청을 처리하여 메모리 대역폭의 유효성을 개선한다. 정시 지연은 CPU에 요청을 반환하기 위한 시간을 지정하고, 주로 컨트롤러 구성 인터페이스를 통해 설정된다. 반환 입도는 매 회(each time) 메시지 기반 메모리 컨트롤러에 의해 CPU에 반환되는 데이터의 길이를 지정한다. 데이터 상태는 저장 모듈로부터 획득된 요구되는 요청 데이터, 및 획득되지 않은 요구되는 요청 데이터를 지정한다. 데이터 위치는 판독 데이터 버퍼 내의 획득된 요청 데이터의 위치를 지정한다.
요청 생성 및 스케줄링 컴포넌트(705)는, 한편으로는 요청 길이 및 정시 지연과 같은 요청 상태 테이블 내의 요청 속성들에 따라 복수의 작은 요청을 생성하도록 구성되고; 다른 한편으로는, 요청들을 스케줄링하고, 판독 요청 상태 테이블 및 기입 요청 상태 테이블 내의 처리되지 않은 요청들 중에서 처리될 요청을 선택하고, 선택된 요청을 메시지 패킷화기(706)에 송신하도록 구성된다.
메시지 패킷화기(706)는 하나 이상의 요청을 메시지 패킷으로 패키지화하고, 메시지 패킷을 메시지 채널 인터페이스를 통해 버퍼 스케줄러에 송신하도록 구성된다.
메시지 언패커(707)는 메시지 패킷으로부터 하나 이상의 요청을 추출하고, 각각의 요청의 대응하는 데이터 컨텐츠를 파싱하도록 구성된다.
요청 상태 갱신 유닛(708)은 요청, 및 메시지 언패커(707)의 파싱에 의해 획득된 대응하는 데이터에 따라, 판독/기입 요청 예약 스테이션(704) 내의 요청의 상태 테이블을 갱신하고, 데이터를 판독 데이터 버퍼 내에 임시 저장하도록 구성된다.
요청 응답 컨트롤러(709)는 CPU에 요청 응답을 송신하도록 구성된다. 요청 응답 컨트롤러(709)는 주로 판독/기입 요청 예약 스테이션(704) 내의 요청의 상태에 대해 질의한다. CPU에 의해 송신된 요청이 버퍼 스케줄러 및 저장 모듈에 의해 처리된 후, 요청 응답 컨트롤러(709)는 CPU에 요청 응답을 송신한다. 판독 요청이 처리되는 경우, 요청 응답 컨트롤러(709)는 판독 데이터 버퍼(703) 내의 요청의 대응하는 데이터를 송신할 필요가 있다.
컨트롤러 구성 인터페이스(710)는 메시지 기반 메모리 컨트롤러의 파라미터, 또는 정시 지연 및 그와 유사한 것과 같은 지정된 요청 속성들을 구성하도록 구성된다. 요청 또는 메모리 액세스 어드레스의 구성을 위해, 대응하는 값이 판독/기입 요청 상태 테이블의 속성들 내에서 갱신된다.
메시지 채널 인터페이스(711)는 버퍼 스케줄러로 메시지 패킷들을 송신하도록 구성된다. 메시지 채널 인터페이스(711)는 메시지 채널의 상이한 물리적 구현에 기초하여, 공유되는 병렬 버스 인터페이스 또는 점-대-점 직렬 버스 인터페이스와 같은 대응하는 인터페이스 타입을 갖는다.
도 9는 저장 모듈 내의 버퍼 스케줄러의 개략적인 구조도이다. 도 9에 도시된 바와 같이, 버퍼 스케줄러는 메시지 채널 인터페이스(901), 메시지 언패커(902), 요청 분배기(903), 판독/기입 요청 큐들(904), 특수 요청 큐(905), 타이머(906), 상태 유지 유닛(907), 요청 스케줄러(908), 커맨드 생성 유닛(909), 메시지 패킷화기(910), 데이터 버퍼(911), 및 메모리 칩 인터페이스(912)를 포함한다.
버퍼 스케줄러는 저장 모듈 내의 메모리 칩에 접속된, 저장 모듈 상의 독립적인 집적 회로 칩일 수 있다. 버퍼 스케줄러는 또한 일반적인 저장 모듈에 접속된, 시스템 메인 보드 상의 칩일 수 있다. 버퍼 스케줄러의 이용은 응용-특정 집적 회로 칩(application-specific integrated circuit chip), 프로그래머블 논리 디바이스(programmable logical device) 및 필드 프로그래머블 게이트 어레이(field programmable gate array)와 같은 다양한 하드웨어 방식들로 구현될 수 있다. 이하에 설명되는 버퍼 스케줄러는 도 9에 기초하지만, 추가의 모듈을 더하는 것, 및 버퍼 스케줄러의 소정 기능 유닛들을 조합하는 것과 같은 다른 방식들로 구현되는 예들도 적용가능할 수 있다.
메시지 채널 인터페이스(901)는 메시지 기반 메모리 컨트롤러로 메시지 패킷들을 송신하도록 구성된다. 메시지 채널 인터페이스(901)는 메시지 채널의 물리적 구현에 기초하여, 공유되는 병렬 버스 인터페이스 또는 점-대-점 직렬 버스 인터페이스와 같은 대응하는 인터페이스 타입을 갖는다.
메시지 언패커(902)는 요청 일련 번호, 요청 타입, 요청 시멘틱 정보, 어드레스, 데이터 및 그와 유사한 것을 포함하여, 수신된 메시지 패킷으로부터 다양한 정보를 획득하도록 구성된다. 상이한 요청 타입들은 상이한 메시지 패킷 포맷들에 대응한다. 요청 타입을 결정한 후, 메시지 언패커(902)는 대응하는 규칙들에 따라 언팩 동작을 수행한다.
요청 분배기(903)는 메시지 언패커(902)에 의해 파싱된 메모리 액세스 요청들을 상이한 요청 큐들 내에 분배한다. 스케줄링은 시멘틱 정보, 요구되는 반환 시간, 및 액세스 데이터 입도와, 각각의 요청의 다른 정보에 기초한다.
판독/기입 요청 큐들(904)은 처리되지 않은 판독/기입 요청들을 저장하고, 상이한 우선순위들을 갖는 복수의 큐를 포함하도록 구성된다. 높은 우선순위 큐는 액세스 데이터가 작은 입도를 가지며 요구되는 반환 시간이 짧은 판독/기입 요청들 또는 높은 우선순위로 마킹된 판독/기입 요청들을 저장하고; 낮은 우선순위 큐는 액세스 데이터가 큰 입도를 가지며 요구되는 반환 시간이 긴 판독/기입 요청들, 또는 낮은 우선순위로 마킹된 판독/기입 요청들을 저장한다.
특수 요청 큐(905)는 논리 연산, 압축, 이동, 및 데이터에 대한 다른 동작들과 같은, 처리되지 않은 비-판독/기입 요청들을 저장하도록 구성된다.
타이머(906)는 요구되는 대로의 상이한 시간 간격들에서 펄스들을 출력하고, 요청 스케줄러(908) 및 상태 유지 유닛(907)에 대해 요구되는 대로의 클럭 트리거링을 가능하게 할 수 있다.
상태 유지 유닛(907)은 버퍼 스케줄러에 접속된 각각의 메모리 칩의 상태를 유지하고, 필요할 때, 전력 충전 커맨드, 리프레시 커맨드 및 다른 커맨드들을 발행하도록 구성된다.
요청 스케줄러(908)는 요청 큐로부터 메모리 액세스 요청을 획득하고, 요청을 커맨드 생성 유닛(909)에 전달하며; 데이터 버퍼로부터 반환된 메모리 액세스 데이터를 획득하고, 그 데이터를 메시지 패킷화기(910)에 전달한다. 요청들 및 반환되는 데이터를 전달하는 것 외에, 요청 스케줄러(908)는 요구되는 대로의 일련의 특수한 동작들을 수행한다. 예를 들어, 높은 우선순위 큐 내의 메모리 액세스 요청들은 일반적으로 작은 메모리 액세스 입도를 갖고, 따라서 요청 스케줄러(908)는 복수의 요청에 결합 마크들로 라벨을 붙일 수 있다. 결과적으로, 요청들의 모든 반환된 데이터가 데이터 버퍼 내에 저장될 때, 데이터는 하나의 응답 패킷으로 패키지화되기 위해 메시지 패킷화기(910)에 전달된다. 낮은 우선순위 큐 내의 큰 메모리 액세스 데이터 양을 갖는 요청에 대하여, 요청 스케줄러(908)는 요청 처리를 수 개의 단계로 나눌 수 있고, 각각의 단계의 처리 결과를 하나의 응답 패킷으로 패키지화한 다음 다시 반환하기 위해 메시지 패킷화기(910)에 전달할 수 있다.
커맨드 생성 유닛(909)은 스케줄링된 후에 즉시 실행될 필요가 있는 메모리 액세스 요청을 획득하고, 요청을 메모리 칩에 액세스하기 위한 특정 커맨드로 변환한다. 메모리 칩의 상태를 유지하기 위해, 요청 스케줄러(908)는 커맨드 생성 유닛(909)이 메모리 칩의 상태를 유지하기 위한 커맨드를 발행할 것을 요구할 수 있다.
메시지 패킷화기(910)는 반환된 데이터 및 대응하는 요청 일련 번호를 요청 스케줄러(908)로부터 획득하고, 응답 패킷을 생성하고, 패킷을 메시지 기반 메모리 컨트롤러에 다시 송신한다. 요청 스케줄러(908)에 의해 이루어진 반환된 데이터에 대한 마크들에 따라, 메시지 패킷화기(910)는 복수의 요청이 하나의 응답 패킷으로 패키지화되고 메시지 기반 메모리 컨트롤러에 송신되는 것을 허용한다.
데이터 버퍼(911)는 메모리 칩에 액세스하는 것에 관한 반환된 데이터를 저장한다. 요청 스케줄러(908)는 요구되는 데이터를 선택하고, 그 데이터를 메시지 패킷화기(910)에 송신한다.
메모리 칩 인터페이스(912)는 커맨드 생성 유닛(909)으로부터 메모리 칩에 액세스하기 위한 커맨드를 획득하고, 그 커맨드를 저장 모듈 상의 메모리 칩에 송신하고, 반환된 데이터를 수신한 후, 데이터를 데이터 버퍼(911) 내에 저장한다.
도 10에 도시된 바와 같이, 메시지 기반 메모리 액세스 방법은 이하의 단계들을 포함한다:
단계(1001): CPU가 메모리 액세스 요청을 발행한다. CPU는 액세스 데이터 길이, 우선순위, 및 요청의 시멘틱 정보를 지정할 수 있다. 요청은 판독/기입 요청 외의 임의의 다른 복합 메모리 액세스 요청, 예를 들어 타이밍 액세스, 단순 산술 및 논리 연산, 이동, 원자성 동작, 압축 및 그와 유사한 것일 수 있다.
단계(1002) : 요청이 메시지 기반 메모리 컨트롤러의 구성에 관한 정보를 포함하는지를 판정한다. 포함하는 경우에는 단계(1003)으로 진행하고; 포함하지 않는 경우에는 단계(1004)로 진행한다.
단계(1003) : 요청이 메시지 기반 메모리 컨트롤러의 구성에 관한 정보를 포함하는 경우, 메시지 기반 메모리 컨트롤러는 구성 정보에 따라 적절한 조정을 수행한다.
단계(1004) : 메시지 기반 메모리 컨트롤러는 CPU로부터의 메모리 액세스 요청을, 소정의 규칙에 기초하는 복수의 요청을 포함할 수 있는 소정 포맷에 기초하는 메시지 패킷으로 패키지화하고, 메시지 패킷을 메시지 채널을 통해 대응하는 저장 모듈의 버퍼 스케줄러에 송신하고, 요구조건들에 기초하여 판독/기입 요청 예약 스테이션 내에 기록을 만든다.
단계(1005) : 버퍼 스케줄러는 메시지 기반 메모리 컨트롤러에 의해 송신된 메시지 패킷을 수신 및 파싱하고, CPU의 메모리 액세스 요청을 적절한 요청 큐 내에 채운다.
단계(1006) : 버퍼 스케줄러 내의 요청 스케줄러는 CPU의 메모리 액세스 요청의 우선순위 및 시멘틱 정보에 따라 요청 큐 내의 복수의 요청을 스케줄링하고, 요청 실행의 시퀀스를 배열한다.
단계(1007) : 스케줄링된 CPU 요청, 즉 CPU의 메모리 액세스 요청을 (DDR 표준과 같은) 메모리 입도 표준을 준수하는 일련의 커맨드들로 변환하고, 그 커맨드들을 메모리 인터페이스에 송신한다.
단계(1008) : CPU의 메모리 액세스 요청이 복합 메모리 액세스 요청인지를 판정한다. 그러한 경우에는 단계(1009)로 진행하고; 그렇지 않은 경우에는 단계(1011)로 진행한다.
단계(1009) : CPU의 메모리 액세스 요청이 복합 메모리 액세스 요청인 경우, 버퍼 스케줄러 내의 처리 로직이 메모리에 의해 반환되는 데이터를 단순하게 처리한다(예를 들어, 단순 산술 및 논리 연산, 이동, 및 그와 유사한 것).
단계(1010) : 복합 메모리 액세스 명령이 처리된 후에, 요청의 타입에 따라, 처리된 데이터를 메모리 내에 다시 기입할지, 및 처리된 데이터를 CPU에 반환할지를 판정한다. 처리된 데이터가 메모리 내에 다시 기입될 필요가 있는 경우, 데이터를 메모리에 기입하기 위해 (DDR 표준과 같은) 메모리 입도 표준을 준수하는 일련의 커맨드들을 이용하고; 처리된 데이터가 CPU에 반환될 필요가 있는 경우, 데이터를 응답 패킷으로 패키지화하고, 패킷을 메시지 기반 메모리 컨트롤러에 송신한다.
단계(1011) : CPU의 메모리 액세스 요청이 복합 메모리 액세스 요청이 아닌 경우, 요청이 기입 요청인지를 판정한다. 그러한 경우에는 단계(1015)로 진행하고; 그렇지 않은 경우에는 단계(1012)로 진행한다.
단계(1012) : CPU로부터의 요청이 판독 요청인 경우, 판독 데이터를 응답 패킷으로 패키지화하고, 그 패킷을 메시지 채널을 통해 메시지 기반 메모리 컨트롤러에 송신한다. 응답 패킷 패키지화 프로세스 동안, 요구조건들에 기초하여, 하나의 요청의 반환된 데이터가 복수의 응답 패킷으로 패키지화될 수 있고, 복수의 요청의 반환되는 데이터가 하나의 응답 패킷으로 패키지화될 수 있다.
단계(1013) : 메시지 기반 메모리 컨트롤러는 응답 패킷을 수신 및 파싱하고, 응답 패킷 내의 데이터를 요구조건들에 따라 메시지 기반 메모리 컨트롤러의 내부의 어드레스가능한 버퍼 또는 캐시 내에 저장한다.
단계(1014) : 메시지 기반 메모리 컨트롤러는 CPU의 메모리 액세스 요청의 응답 패킷이 완전히 반환되는지를 판정한다. 그러한 경우에는 단계(1015)로 진행하고; 그렇지 않은 경우에는 단계(1013)로 진행한다.
단계(1015) : CPU의 메모리 액세스 요청이 처리된 후에, 요청에 관한 기록이 메시지 기반 메모리 컨트롤러의 판독/기입 요청 예약 스테이션 내에 존재하는 경우에는 그 기록을 소거한다.
도 11에 도시된 비와 같이, 메시지 기반 메모리 컨트롤러가 메모리 액세스 요청을 수신하기 위한 처리 절차는 다음과 같다:
단계(1101) : 메시지 기반 메모리 컨트롤러는 메모리 액세스 요청 인터페이스를 통해 CPU에 의해 송신된 판독/기입 요청을 수신한다.
단계(1102) : 판독/기입 요청 분배기(701)는 요청이 판독 요청인지를 판정한다. 그러한 경우에는 단계(1104)로 진행하고; 그렇지 않은 경우에는 단계(1103)로 진행한다.
단계(1103) : 수신된 요청이 기입 요청인 경우, 기입 요청 상태 테이블 내에 빈 항목이 있는지를 판정한다. 그러한 경우에는 단계(1105)로 진행하고; 그렇지 않은 경우에는 단계(1102)로 진행한다.
단계(1104) : 수신된 요청이 판독 요청인 경우, 판독 요청 상태 테이블 내에 빈 항목이 있는지를 판정한다. 그러한 경우에는 단계(1106)로 진행하고; 그렇지 않은 경우에는 단계(1102)로 진행한다.
단계(1105) : 수신된 요청이 기입 요청이고, 기입 요청 상태 테이블 내에 빈 항목이 있는 경우, 요청에 대해 테이블 엔트리를 분배하고, 기입 요청 내의 데이터를 기입 데이터 버퍼 내에 저장하며; 그렇지 않은 경우에는 단계(1102)로 진행한다.
단계(1106) : 수신된 요청이 판독 요청이고, 판독 요청 상태 테이블 내에 빈 항목이 있는 경우, 요청에 대해 테이블 엔트리를 분배하고; 그렇지 않으면 단계(1102)로 진행한다.
단계(1107) : 요청의 수신을 중단하고, 메모리 액세스 요청 인터페이스를 통해 수신된 요청들의 처리를 계속한다.
도 12에 도시된 바와 같이, 메시지 기반 메모리 컨트롤러에 의한 요청의 스케줄링 및 처리는 이하의 단계들을 포함한다:
단계(1201) : 요청 생성 및 스케줄링 컴포넌트(705)는 판독/기입 요청 상태 테이블 내의 테이블 엔트리들을 스캐닝한다.
단계(1202) : 요청 생성 및 스케줄링 컴포넌트(705)는 판독/기입 요청 상태 테이블 내에 처리되지 않았고 처리될 필요가 있는 임의의 요청이 있는지를 질의한다. 그러한 경우에는 단계(1203)로 진행하고; 그렇지 않은 경우에는 단계(1201)로 진행한다.
단계(1203) : 처리되지 않은 요청이 있는 경우, 요청 생성 및 스케줄링 컴포넌트는 대응하는 요청 상태 테이블 내의 요청 속성들에 따라 큰 요청을 복수의 작은 요청으로 분할하고, 스케줄링 알고리즘에 따라, 처리될 다음 요청을 선택한다.
단계(1204) : 처리될 요청이 판독 요청인지를 판정한다. 그러한 경우에는 단계(1206)로 진행하고; 그렇지 않은 경우에는 단계(1205)로 진행한다.
단계(1205) : 처리될 요청이 기입 요청인 경우, 기입 데이터 버퍼로부터 요청의 대응하는 데이터를 획득하고; 그렇지 않은 경우에는 단계(1206)로 진행한다.
단계(1206) : 메시지 패킷화기(706)는 하나 이상의 요청을 메시지 패킷으로 패키지화한다.
단계(1207) : 패키지화된 메시지를 메시지 기반 메모리 컨트롤러와 버퍼 스케줄러 사이의 메시지 채널 인터페이스에 송신한 다음, 다음 처리 회차를 위해 단계(1201)로 진행한다.
도 13에 도시된 바와 같이, 메시지 기반 메모리 컨트롤러가 버퍼 스케줄러로부터 메시지 패킷을 수신한 후, 이하의 단계들이 수행된다:
단계(1302) : 응답들을 하나씩 파싱하기 위해, 헤더 내의 응답들의 개수 및 각각의 응답의 길이를 획득하도록, 버퍼 스케줄러로부터 메시지 기반 메모리 컨트롤러로 송신된 응답 패킷의 헤더 정보를 파싱한다.
단계(1304) : 파싱될 필요가 있는 다음 응답이 있는지를 판정한다. 있는 경우에는 단계(1306)로 가서 다음 응답을 파싱하고; 없는 경우에는 응답 패킷 파싱이 종료된다.
단계(1306) : 다음 응답의 타입 및 요청 식별자를 파싱한다. 응답들은 이하의 단계들에서 요청 타입들에 따라 상이한 방식들로 처리된다.
단계(1308) : 응답이 메모리 액세스 판독 요청 응답인지를 판정한다. 그러한 경우에는 추가의 파싱을 위해 단계(1310)로 진행하고; 그렇지 않은 경우에는, 응답이 메모리 상태 질의 요청 응답 또는 메모리 액세스 기입 요청 응답이고, 단계(1312)로 가서 대응하는 상태 정보를 획득한다.
단계(1310) : 헤더에 의해 지정된 응답 길이에 따라 응답을 어드레싱하고, 메모리 액세스 판독 요청 응답으로부터 반환된 데이터를 획득한다.
단계(1312) : 헤더에 의해 지정된 응답 길이에 따라 응답을 어드레싱한다. 응답이 상태 질의 요청 응답인 경우에는, 응답으로부터 반환된 상태 값을 획득하고; 응답이 메모리 액세스 기입 요청 응답인 경우에는, 기입 요청 상태 테이블 내의 요청 속성들을 갱신한다. 그러면, 응답 파싱이 종료한다. 단계(1304)로 되돌아간다.
단계(1314) : 패킷이 부-응답들을 포함하는지 여부에 따라, 판독 요청의 메모리 액세스 데이터가 버퍼 스케줄러에 의해 복수의 응답으로 나누어진 후에 반환되는지를 판정한다. 데이터가 복수의 응답으로 나누어지지 않는 경우, 메모리 액세스 판독 요청이 처리되고, 단계(1318)로 진행하고; 데이터가 나누어지는 경우에는 패킷을 분석하여, 획득된 부-응답들의 개수 및 현재의 부-응답의 식별자를 획득한 다음, 단계(1316)로 진행한다.
단계(1316) : 현재의 부-응답의 식별자가 부-응답들의 개수와 동일한지 여부에 따라, 현재 응답이 메모리 액세스 판독 요청의 마지막 부-응답인지를 판정한다. 그러한 경우에는, 현재 메모리 액세스 판독 요청이 처리되고, 단계(1318)로 진행하고; 그렇지 않은 경우에는 현재 메모리 액세스 판독 요청이 아직 처리되지 않았고, 현재의 부-응답의 반환된 데이터를 대응하는 데이터 버퍼에 기입하고, 판독 요청 상태 테이블 내의 데이터 상태, 데이터 위치 및 다른 정보를 갱신한 다음, 단계(1304)로 되돌아간다.
단계(1318) : 현재 메모리 액세스 판독 요청이 처리된 후, 메시지 기반 메모리 컨트롤러로부터의 데이터를 CPU에 다시 전송할 준비를 한 다음, 단계(1304)로 되돌아간다.
도 14에 도시된 바와 같이, 메시지 기반 메모리 컨트롤러에 의해 CPU에 요청 응답을 송신하는 단계들은 아래와 같다:
단계(1401) : 요청 응답 컨트롤러(709)는 판독/기입 요청 상태 테이블을 스캐닝한다.
단계(1402) : 기입 요청 상태 테이블 내에 임의의 처리된 요청이 있는지를 질의한다. 그러한 경우에는 단계(1404)로 진행하고; 그렇지 않은 경우에는 단계(1403)로 진행한다.
단계(1403) : 기입 요청 상태 테이블 내에 처리된 요청 항목이 없는 경우, 판독 요청 상태 테이블 내에 임의의 처리된 요청 항목이 있는지를 질의한다. 그러한 경우에는 단계(1404)로 진행하고; 그렇지 않은 경우에는 단계(1402)로 진행한다.
단계(1404) : 기입 요청 상태 테이블 또는 판독 요청 상태 테이블 내에 처리된 요청이 있는 경우, 처리된 요청이 정시 지연의 요구조건과 같은 요청 속성들의 요구조건들을 충족하는지를 판정한다. 그러한 경우에는 단계(1405)로 진행하고; 그렇지 않은 경우에는 단계(1402)로 진행한다.
단계(1405) : 모든 속성들의 요구조건들을 충족하는 요청의 응답을 송신한다. 응답의 데이터 컨텐츠는 또한 요청의 반환 입도 및 다른 속성들에 일치할 필요가 있다.
도 15에 도시된 바와 같이, 요청 스케줄러(908)에 의해 메모리 액세스 요청을 스케줄링하기 위한 단계들은 아래와 같다:
단계(1510) : 타이머(906)는 설정 조건에 따라 새로운 요청 스케줄링 프로세스를 시작할 준비를 하도록 요청 스케줄러(908)를 트리거링한다.
단계(1520) : 트리거링 조건이 칩 상태 유지가 요청되는 것인지를 검사한다. 그러한 경우에는 단계(1530)로 진행하고; 그렇지 않은 경우에는 단계(1540)로 진행한다.
단계(1530) : 트리거링 조건이 칩 상태 유지가 요구되는 것인 경우, 칩 상태 유지 커맨드를 발행하고, 단계(1590)로 진행한다.
단계(1540) : 트리거링 조건이 특수 요청 큐가 처리될 필요가 있다는 것인지를 검사한다. 그러한 경우에는 단계(1550)로 진행하고; 그렇지 않은 경우에는 단계(1560)로 진행한다.
단계(1550) : 트리거링 조건이 특수 요청 큐가 처리될 필요가 있다는 것인 경우, 특수 요청 큐 내의 요청을 판독하고, 요청을 일련의 판독/기입 동작들로 변환한다. 요청이 처리된 후에, 큐 내의 요청 상태를 수정하거나, 요청 상태를 삭제한다. 단계(1590)로 진행한다.
단계(1560) : 트리거링 조건이 가장 높은 우선순위를 갖는 판독/기입 요청 큐가 처리될 필요가 있다는 것인지를 검사한다. 그러한 경우에는 단계(1570)로 진행하고; 그렇지 않은 경우에는 단계(1580)로 진행한다.
단계(1570) : 트리거링 조건이 가장 높은 우선순위를 갖는 판독/기입 요청 큐가 처리될 필요가 있다는 것인 경우, 큐 내의 모든 요청을 소거하고, 모든 판독 요청들에 결합 마크들로 라벨을 붙인다. 단계(1590)로 진행한다.
단계(1580) : 트리거링 조건은 가장 높은 우선순위를 갖지 않는 판독/기입 요청 큐가 처리될 필요가 있다는 것이다. 대응하는 우선순위를 갖는 요청 큐 내의 요청에 액세스하고, 판독/기입 요청의 현재 상태에 따라 요구되는 판독/기입 동작을 생성한다. 요청이 처리된 후에, 큐 내의 요청 상태를 수정하거나, 요청 상태를 소거한다. 단계(1590)로 진행한다.
단계(1590) : 요청 스케줄링 프로세스가 종료한다. 타이머에 의한 다음 스케줄링 프로세스의 트리거링을 기다린다.
상술한 설명은 본 발명의 기술적 개념들의 기본적인 설명에 지나지 않는다. 비휘발성 메모리에 대한 임의의 새로운 메모리 기술 등과 같은 본 발명의 기술적 해법에 기초하는 임의의 균등한 변경은 본 발명의 보호 범위 내에 포함되어야 한다.
본 기술분야의 숙련된 자들은 청구항들에 명시된 본 발명의 취지 또는 범위로부터 벗어나지 않고서 상술한 내용에 대한 수정을 이루어낼 수 있다. 그러므로, 본 발명의 보호 범위는 설명들로 제한되는 것이 아니라, 청구항들에 명시된 범위에 따라 결정된다.

Claims (25)

  1. 메시지 기반 메모리 액세스 장치로서,
    CPU에 의해 생성된 메시지 기반 메모리 액세스 요청 명령을 메시지 기반 메모리 컨트롤러에 전송하고, 상기 메시지 기반 메모리 컨트롤러에게 상기 메시지 기반 메모리 액세스 요청에 기초하여 메모리 액세스 동작을 수행할 것을 지시하도록 구성된 메시지 기반 커맨드 버스;
    상기 메시지 기반 메모리 액세스 요청을 요청 패킷으로 패키지화하고, 상기 요청 패킷을 저장 모듈에 송신하며, 상기 저장 모듈에 의해 반환된 응답 패킷을, 상기 응답 패킷에 대응하는 데이터를 획득하기 위해 파싱(parse)하고, 상기 데이터를 상기 CPU에 반환하도록 구성된 상기 메시지 기반 메모리 컨트롤러;
    상기 요청 패킷을 상기 저장 모듈에 전송하고 상기 응답 패킷을 상기 메시지 기반 메모리 컨트롤러에 전송하도록 구성된 메시지 채널; 및
    상기 저장 모듈 - 상기 저장 모듈은 버퍼 스케줄러를 포함하고, 상기 메시지 기반 메모리 컨트롤러부터 상기 요청 패킷을 수신하고, 대응하는 요청을 처리하고, 상기 응답 패킷을 생성하며, 상기 응답 패킷을 상기 메시지 기반 메모리 컨트롤러에 송신하도록 구성됨 -
    을 포함하는 메시지 기반 메모리 액세스 장치.
  2. 제1항에 있어서, 상기 메시지 기반 커맨드 버스는 메모리 요청 명령의 메모리 액세스 길이를 지정하도록 더 구성되고, 상기 메모리 액세스 길이는 레지스터의 길이보다 길거나 혹은 짧으며;
    상기 파싱 프로세스 후의 요청된 데이터가 캐시에 반환되거나, CPU 어드레스가능한 버퍼에 반환되거나, 캐시를 통과하지 않고서 레지스터 또는 레지스터 그룹에 반환되고;
    메모리 시스템에 대한 스케줄링 기반(scheduling basis)을 제공하기 위해, 상기 메시지 기반 메모리 컨트롤러 및 상기 버퍼 스케줄러 내에서의 메모리 액세스 커맨드의 스케줄링을 지시하기 위한 데이터 액세스 우선순위에 관한 정보가 상기 메모리 기반 액세스 요청 명령에 첨부되는, 메시지 기반 메모리 액세스 장치.
  3. 제1항에 있어서, 상기 메시지 기반 메모리 컨트롤러는,
    상기 CPU와 상기 메시지 기반 메모리 컨트롤러 사이에서의 교환 요청을 위해 구성된 메모리 액세스 요청 인터페이스;
    요청 상태 테이블을 포함하는 판독/기입 요청 예약 스테이션 - 상기 요청 상태 테이블은 판독 요청 상태 테이블 및 기입 요청 상태 테이블의 2개의 부분으로 이루어지고, 각각의 새롭게 수신된 요청에 대해 테이블 엔트리를 할당하도록 구성되며, 상기 버퍼 스케줄러가 요청에 응답하거나, 상기 메시지 기반 컨트롤러가 상기 CPU에 요청 응답을 송신할 때, 상기 요청 상태 테이블 내의 대응하는 테이블 엔트리는 갱신되거나 삭제될 필요가 있음 -;
    판독/기입 요청 예약 스테이션(read/write request reservation station)의 상태에 따라, 상기 메모리 액세스 요청 인터페이스로부터 수신된 메모리 액세스 요청이 상기 판독 요청 상태 테이블에 삽입될지 혹은 상기 기입 요청 상태 테이블에 삽입될지를 제어하도록 구성된 판독/기입 요청 분배기 - 기입 요청이 수신되는 경우, 메모리 내에 기입될 데이터는 기입 데이터 버퍼 내에 임시 저장될 필요가 있음 -;
    상기 기입 요청의 데이터를 임시 저장하도록 구성된 상기 기입 데이터 버퍼; 및
    상기 판독 요청의 데이터를 임시 저장하도록 구성된 판독 데이터 버퍼
    를 더 포함하는, 메시지 기반 메모리 액세스 장치.
  4. 제3항에 있어서, 상기 메시지 기반 메모리 컨트롤러는,
    상기 요청 상태 테이블 내의 요청 속성들에 따라 복수의 작은 요청을 생성하도록 구성되고; 요청들을 스케줄링하고, 상기 판독 요청 상태 테이블 및 상기 기입 요청 상태 테이블 내의 처리되지 않은 요청들 중에서 처리될 다음 요청을 선택하고, 선택된 요청을 메시지 패킷화기(message packetizer)에 송신하도록 구성되는 요청 생성 및 스케줄링 컴포넌트;
    하나 이상의 요청을 상기 메시지 채널 상의 메시지 패킷으로 패키지화하고, 상기 메시지 패킷을 상기 메시지 채널 인터페이스를 통해 상기 버퍼 스케줄러에 송신하도록 구성되는 상기 메시지 패킷화기;
    메시지 패킷으로부터 하나 이상의 요청을 추출하고, 각각의 요청의 대응하는 데이터 컨텐츠를 파싱하도록 구성되는 메시지 언패커(message unpacker);
    상기 판독/기입 요청 예약 스테이션 내의 요청의 상태 테이블을 갱신하고 상기 데이터를 상기 판독 데이터 버퍼 내에 임시 저장하는 것을, 상기 요청, 및 상기 메시지 언패커의 파싱에 의해 획득된 대응하는 데이터에 따라 행하도록 구성되는 요청 상태 갱신 유닛;
    상기 CPU에 요청 응답을 송신하도록 구성되는 요청 응답 컨트롤러;
    상기 메시지 기반 메모리 컨트롤러의 파라미터를 구성하거나 요청의 속성들을 지정하도록 구성되는 컨트롤러 구성 인터페이스 - 요청 또는 메모리 액세스 어드레스의 구성 후에, 상기 판독 및 기입 요청 상태 테이블 내의 속성들 내의 대응하는 값들이 갱신됨 - ; 및
    상기 버퍼 스케줄러로 메시지 패킷들을 전송하도록 구성되는 메시지 채널 인터페이스 - 상기 메시지 채널 인터페이스는 메시지 채널의 상이한 물리적 구현에 기초하여, 대응하는 인터페이스 타입을 가짐 -
    를 더 포함하는, 메시지 기반 메모리 액세스 장치.
  5. 제3항에 있어서, 상기 판독/기입 요청 예약 스테이션 내에서, 상기 판독 요청 상태 테이블의 항목 번호는 상기 요청 상태 테이블 내의 요청의 시퀀스 번호에 대응하고; 상기 항목 번호는 처리를 위한 요청을 고유하게 지정하기 위해 상기 메시지 기반 메모리 컨트롤러 및 상기 버퍼 스케줄러의 메시지 패킷 내에서 이용되고; 요청 어드레스는 액세스될 메모리의 베이스 어드레스이고; 정시 지연(timed delay)은 상기 요청을 상기 CPU에 반환하기 위한 시간을 지정하고, 상기 컨트롤러 구성 인터페이스를 통해 설정되며; 반환 입도(returning granularity)는 매 회 상기 메시지 기반 메모리 컨트롤러에 의해 상기 CPU에 반환되는 데이터의 길이로 구성되고; 데이터 상태는 상기 저장 모듈로부터 획득된 요구되는 데이터 및 획득되지 않은 요구되는 데이터를 지정하고; 데이터 위치는 상기 판독 데이터 버퍼 내의 획득된 요청 데이터의 위치를 지정하는, 메시지 기반 메모리 액세스 장치.
  6. 제4항에 있어서, 상기 요청 응답 컨트롤러는 상기 판독/기입 요청 예약 스테이션 내의 요청의 상태에 관해 질의하고, CPU 요청이 상기 버퍼 스케줄러 및 상기 저장 모듈에 의해 처리된 후에 상기 CPU에 요청 응답을 송신하고, 판독 요청이 처리되는 경우 상기 판독 데이터 버퍼 내의 요청의 대응하는 데이터를 송신하도록 더 구성되는, 메시지 기반 메모리 액세스 장치.
  7. 제1항에 있어서, 상기 메시지 기반 메모리 컨트롤러와 상기 저장 모듈 간의 상호작용은 메시지 패킷에 기초하여 완료되고; 각각의 그러한 메시지 패킷은 하나 이상의 메모리 액세스 요청 또는 응답에 관한 정보를 포함하고; 상기 메시지 패킷 내의 요청은 동기식 타이밍 시퀀스 제한(synchronous timing sequence restriction)은 갖지 않지만 상기 요청의 반환의 최대 지연에 관한 정보는 가지며;
    상기 컨트롤러 구성 인터페이스는 상기 메시지 기반 메모리 컨트롤러를 위한 특수 커맨드 어드레스 공간을 제공하고, 상기 컨트롤러의 속성들의 구성을 허용하고, 메모리 액세스 요청의 속성들의 설정을 허용하고, 대응하는 메모리 액세스 커맨드를 발행하는, 메시지 기반 메모리 액세스 장치.
  8. 제7항에 있어서, 상기 메시지 기반 메모리 액세스 컨트롤러는 상기 메시지 기반 메모리 액세스 컨트롤러 및 커맨드 어드레스 공간이, 대응하는 메모리 액세스 커맨드를 사용함으로써, 상기 메모리 액세스 시스템이 레지스터 또는 어드레스가능한 고속 버퍼에 데이터를 주기적으로 푸시하는 것과, 상기 메모리 시스템 내에서 단순 산술 및 논리 연산, 및 이동 동작이 수행되는 것을 지원하도록 더 구성되며, 메모리 액세스 원자성(memory access atomicity)이 설정되거나, 동작들이 일괄적으로(in batches) 수행되고;
    상기 메시지 기반 메모리 액세스 장치에 포함된 판독/기입 요청 예약 스테이션은 판독 요청 상태 테이블 및 기입 요청 상태 테이블을 제공하고, 처리될 각각의 요청은 상기 판독 또는 기입 요청 상태 테이블 내의 대응하는 테이블 엔트리를 갖고, 각각의 테이블 엔트리는 상기 요청의 어드레스 및 길이뿐만 아니라, 정시 반환 지연(timed return delay), 반환 입도, 데이터 상태 및 데이터 위치도 포함하고, 메시지 패킷 내에서, 각각의 요청은 대응하는 요청 상태 테이블 내의 고유의 항목 번호에 의해 결정되고;
    상기 메시지 기반 메모리 컨트롤러는 복수의 요청이 하나의 메시지 패킷에 포함되는 것을 허용할 뿐만 아니라, 각각의 요청이 분할되어, 상기 저장 모듈에 송신될 하나 이상의 메시지 패킷에 포함되는 것도 허용하며; 상기 메시지 기반 메모리 컨트롤러는 또한 상기 저장 모듈이 하나의 요청을 처리하기 위해 하나 이상의 메시지 패킷을 사용하는 것을 허용하고;
    상기 메시지 기반 메모리 컨트롤러에 대하여, 하나의 요청 또는 복수의 요청의 복수의 메시지 패킷은 순서를 벗어나서(out of order) 반환되는, 메시지 기반 메모리 액세스 장치.
  9. 제7항에 있어서, 상기 메시지 기반 메모리 컨트롤러는, 하나의 판독 요청에 응답하기 위해 복수의 저장 모듈의 메시지 패킷들이 이용되는 경우, 상기 요청의 대응하는 판독 요청 상태 테이블 내의 데이터 상태가 반환되는 데이터 및 반환되지 않는 데이터를 식별하는 상황에서 또한 이용되며,
    완전하게 반환되지 않는 데이터는 어드레스가능한 버퍼 또는 어드레스불가능한 버퍼 내에 저장되고, 상기 데이터가 상기 어드레스불가능한 버퍼 내에 임시 저장되는 경우, 상기 CPU의 판독 요청이 응답되고, 요청된 데이터는 상기 요청된 데이터가 완전하게 반환된 후에만 상기 CPU에 송신되고; 상기 데이터가 상기 어드레스가능한 버퍼 내에 임시 저장되는 경우, 상기 CPU는 반환된 데이터 부분을 판독하는, 메시지 기반 메모리 액세스 장치.
  10. 제7항에 있어서, 상기 메시지 패킷 타입들은 메모리 액세스 판독/기입 요청 패킷, 특수 커맨드 요청 패킷, 메모리 상태 질의 패킷, 및/또는 응답 패킷을 포함하는, 메시지 기반 메모리 액세스 장치.
  11. 제8항에 있어서, 상기 메시지 패킷 타입들은 메모리 액세스 판독/기입 요청 패킷, 특수 커맨드 요청 패킷, 메모리 상태 질의 패킷, 및/또는 응답 패킷을 포함하는, 메시지 기반 메모리 액세스 장치.
  12. 제9항에 있어서, 상기 메시지 패킷 타입들은 메모리 액세스 판독/기입 요청 패킷, 특수 커맨드 요청 패킷, 메모리 상태 질의 패킷, 및/또는 응답 패킷을 포함하는, 메시지 기반 메모리 액세스 장치.
  13. 제1항에 있어서, 상기 저장 모듈 내의 상기 버퍼 스케줄러는,
    상기 메시지 기반 메모리 컨트롤러로 메시지 패킷들을 전송하도록 구성되는 메시지 채널 인터페이스;
    수신된 메시지 패킷으로부터 메모리 액세스 요청에 관한 정보를 획득하도록 구성된 메시지 언패커 - 상기 정보는 요청 일련 번호, 요청 타입, 요청 시멘틱 정보(request semantic information), 어드레스, 및 데이터를 포함하고, 상기 메시지 언패커는 상기 메모리 액세스 요청에 관한 정보에 기초하여 상기 요청 타입을 결정한 후에, 대응하는 규칙들에 따라 언팩 동작(unpacking operation)을 수행함 - ;
    상기 메시지 언패커에 의해 파싱된 메모리 액세스 요청을 요청 큐 내에 분배하도록 구성되는 요청 분배기 - 스케줄링은 각각의 요청의 액세스 데이터의 입도 정보, 시멘틱 정보, 및 요구되는 반환 시간에 따라 달라짐 - ;
    처리되지 않은 판독/기입 요청들을 저장하도록 구성되고 상이한 우선순위들을 갖는 큐들로 구성되는 판독/기입 요청 큐들 - 높은 우선순위 큐는 액세스 데이터가 작은 입도를 가지며 요구되는 반환 시간이 짧은 판독/기입 요청들, 또는 높은 우선순위로 마킹된 판독/기입 요청들을 저장하고; 낮은 우선순위 큐는 액세스 데이터가 큰 입도를 가지며 요구되는 반환 시간이 긴 판독/기입 요청들, 또는 낮은 우선순위로 마킹된 판독/기입 요청들을 저장함 - ;
    처리되지 않은 비-판독/기입 요청들을 저장하도록 구성되는 특수 요청 큐;
    요청 큐로부터 메모리 액세스 요청을 획득하고 상기 요청을 커맨드 생성 유닛에 전달하며, 상기 데이터 버퍼로부터 반환된 메모리 액세스 데이터를 획득하고 상기 데이터를 메시지 패킷화기에 전달하도록 구성되는 요청 스케줄러;
    스케줄링된 후에 실행될 필요가 있는 메모리 액세스 요청을 획득하고, 상기 메모리 액세스 요청을 메모리 칩에 액세스하기 위한 특정 커맨드로 변환하고, 상기 요청 스케줄러에 의해 요구되는 대로, 상기 메모리 칩의 상태를 유지하기 위한 커맨드를 발행하도록 구성되는 커맨드 생성 유닛;
    상기 요청 스케줄러로부터, 반환된 데이터 및 대응하는 요청 일련 번호를 획득하고, 응답 패킷을 생성하고, 상기 패킷을 상기 메시지 기반 메모리 컨트롤러에 다시 송신하도록 구성되는 메시지 패킷화기 - 상기 메시지 패킷화기는 상기 요청 스케줄러에 의해 만들어지는 상기 반환된 데이터에 대한 마크들에 따라, 복수의 요청이 하나의 응답 패킷으로 패키지화되고 상기 메시지 기반 메모리 컨트롤러에 송신되는 것을 허용함 - ;
    메모리 칩에 액세스하는 것에 관한 반환된 데이터를 저장하도록 구성된 데이터 버퍼 - 이로부터, 상기 요청 스케줄러는 요구되는 데이터를 선택하고, 상기 데이터를 상기 메시지 패킷화기에 송신함 - ; 및
    상기 커맨드 생성 유닛으로부터 메모리 칩에 액세스하기 위한 커맨드를 수신하고, 상기 커맨드를 상기 저장 모듈 상의 상기 메모리 칩에 송신하고, 반환된 데이터를 수신한 후에 상기 데이터를 상기 데이터 버퍼 내에 저장하도록 구성되는 메모리 칩 인터페이스
    를 포함하는, 메시지 기반 메모리 액세스 장치.
  14. 제13항에 있어서, 상기 저장 모듈 내의 상기 버퍼 스케줄러는,
    요구되는 상이한 시간 간격들로 펄스들을 출력하고, 상기 요청 스케줄러 및 상태 유지 유닛에 대해 요구되는 클럭 트리거링(clock triggering)을 가능하게 하도록 구성된 타이머; 및
    상기 버퍼 스케줄러에 접속된 각각의 메모리 칩의 상태를 유지하고, 전력 충전 커맨드 및/또는 리프레시 커맨드를 발행하도록 구성되는 상기 상태 유지 유닛
    을 더 포함하는, 메시지 기반 메모리 액세스 장치.
  15. 제11항에 있어서,
    상기 요청 스케줄러는 요청 상황들에 따라 높은 우선순위 큐 내의 메모리 액세스 요청들에 대한 동작들을 완료하도록 더 구성되고; 상기 요청 스케줄러는 복수의 요청에 결합 마크들(combination marks)로 라벨을 붙이고; 상기 요청들의 모든 반환된 데이터가 상기 데이터 버퍼 내에 저장될 때, 상기 데이터는 하나의 응답 패킷으로 패키지화되기 위해 상기 메시지 패킷화기에 전달되고; 낮은 우선순위 큐 내의 대량의 메모리 액세스 데이터를 갖는 요청에 대하여, 상기 요청 스케줄러는 상기 요청 처리를 수 개의 단계로 나누고, 각각의 단계의 처리 결과를 하나의 응답 패킷으로 패키지화한 다음 반환하기 위해 상기 메시지 패킷화기에 전달하는, 메시지 기반 메모리 액세스 장치.
  16. 제1항에 있어서,
    상기 저장 모듈은, 상기 메시지 기반 메모리 컨트롤러로부터의 메모리 액세스 요청에 대하여, 상기 저장 모듈이 상기 요청을 복수의 단계로 처리하고, 복수의 응답 패킷을 반환하고; 상기 메시지 기반 메모리 컨트롤러로부터의 복수의 메모리 액세스 요청에 대하여, 상기 저장 모듈이 상기 요청들 전부를 처리하고, 모든 요청에 응답하기 위해 하나의 응답 패킷을 이용하고; 상기 저장 모듈이 요청들의 우선순위들, 요청들의 시멘틱 정보, 및 상기 저장 모듈 상의 메모리 칩의 상태에 따라 상기 메시지 기반 메모리 컨트롤러로부터의 메모리 액세스 요청들을 실행하기 위한 시퀀스를 스케줄링하는 상황들에서 더 이용되는, 메시지 기반 메모리 액세스 장치.
  17. 제1항에 있어서, 상기 저장 모듈의 상기 메모리 유닛은 동기식 메모리 칩, 및/또는 비동기식 네트워크 접속에 기초하는 메모리 칩인, 메시지 기반 메모리 액세스 장치.
  18. 제1항에 있어서, 상기 버퍼 스케줄러에 의해 지원되는 특수한 메시지 기반 메모리 액세스 명령들은, 타이밍 푸시 명령(timing push instruction), 상기 메모리 시스템 내의 단순 산술 및 논리 연산, 이동 명령, 및 압축 저장을 포함하는, 메시지 기반 메모리 액세스 장치.
  19. 제1항에 있어서, 상기 메시지 채널은 병렬 버스, 점-대-점 직렬 버스, 또는 다른 토폴로지 구조들을 이용하는 네트워크들을 이용하여 메시지 패킷들 내에서 메시지들을 전송하도록 구성되는, 메시지 기반 메모리 액세스 장치.
  20. 메시지 기반 메모리 액세스 방법으로서,
    단계(1001): CPU에 의해, 메모리 액세스 요청을 발행하는 단계 - 상기 메모리 액세스 요청은 액세스 데이터 길이, 우선순위, 및 상기 요청의 시멘틱 정보를 지정함 -;
    단계(1002) : 상기 메모리 액세스 요청이 메시지 기반 메모리 컨트롤러의 구성에 관한 정보를 포함하는지를 판정하는 단계 - 포함하는 경우에는 단계(1003)로 진행하고, 포함하지 않는 경우에는 단계(1004)로 진행함 - ;
    단계(1003) : 상기 요청이 상기 메시지 기반 메모리 컨트롤러의 구성에 관한 정보를 포함하는 경우, 상기 메시지 기반 메모리 컨트롤러에 의해, 상기 구성 정보에 따라 상기 요청을 스케줄링하고 처리하는 단계;
    단계(1004) : 상기 메시지 기반 메모리 컨트롤러에 의해, 상기 CPU로부터의 메모리 액세스 요청을, 복수의 요청을 포함하는 메시지 패킷으로 패키지화하고, 상기 메시지 패킷을 메시지 채널을 통해 저장 모듈의 버퍼 스케줄러에 송신하고, 요건들에 따라 판독/기입 요청 예약 스테이션 내에 기록을 행하는 단계;
    단계(1005) : 상기 저장 모듈 내의 버퍼 스케줄러에 의해, 상기 송신된 메시지 패킷을 파싱하고, 상기 CPU의 상기 메모리 액세스 요청에 대한 동작을 수행하는 단계; 및
    단계(1006) : 상기 CPU의 상기 메모리 액세스 요청이 처리된 후에, 상기 요청에 관한 기록이 상기 메시지 기반 메모리 컨트롤러의 상기 판독/기입 요청 예약 스테이션 내에 존재하는 경우에는 기록을 소거하는 단계
    를 포함하는 메시지 기반 메모리 액세스 방법.
  21. 제20항에 있어서, 상기 단계(1006) 전에,
    단계(1007) : 상기 CPU의 메모리 액세스 요청이 판독 요청인 경우, 상기 판독 데이터를 응답 패킷으로 패키지화하고, 상기 패킷을 상기 메시지 채널을 통해 상기 메시지 기반 메모리 컨트롤러에 송신하는 단계 - 상기 응답 패킷의 패키지화 프로세스 동안, 요건들에 기초하여, 하나의 요청의 반환되는 데이터가 복수의 응답 패킷으로 패키지화되고, 복수의 요청의 반환되는 데이터가 하나의 응답 패킷으로 패키지화됨 - ;
    단계(1008) : 상기 메시지 기반 메모리 컨트롤러에 의해, 상기 응답 패킷을 수신하고, 데이터를 획득하기 위해 상기 응답 패킷을 파싱하고, 상기 응답 패킷 내의 데이터를 요건들에 따라 상기 메시지 기반 메모리 컨트롤러의 내부의 어드레스가능한 버퍼 또는 캐시 내에 저장하는 단계; 및
    단계(1009) : 상기 메시지 기반 메모리 컨트롤러에 의해, 상기 CPU에 대한 응답 패킷들이 모두 반환되는지 여부를 판정하는 단계 - 모두 반환되는 경우에는 단계(1006)로 진행하고; 그렇지 않은 경우에는 단계(1008)로 진행함 -
    를 더 포함하는 메시지 기반 메모리 액세스 방법.
  22. 제20항에 있어서,
    상기 단계(1005) 후에,
    단계(1010) : 상기 버퍼 스케줄러에 의해, 상기 메시지 기반 메모리 컨트롤러에 의해 송신된 메시지 패킷을 수신하고, 상기 CPU의 메모리 액세스 요청을 획득하기 위해 상기 메시지 패킷을 파싱하고, 상기 CPU의 메모리 액세스 요청을 요청 큐 내에 채우는 단계;
    단계(1011) : 상기 버퍼 스케줄러 내의 상기 요청 스케줄러에 의해, 상기 요청 큐 내의 복수의 요청을 스케줄링하고, 상기 CPU의 메모리 액세스 요청의 우선순위 및 시멘틱 정보에 따라 요청 실행 시퀀스를 조정하는 단계;
    단계(1012) : 스케줄링된 CPU 요청을 메모리 입도 표준을 준수하는 일련의 커맨드들로 변환하고, 상기 커맨드들을 메모리 인터페이스에 송신하는 단계;
    단계(1013) : 상기 CPU의 메모리 액세스 요청이 복합 메모리 액세스 요청인지 여부를 판정하는 단계 - 그러한 경우에는 단계(1014)로 진행하고; 그렇지 않은 경우에는 단계(1016)로 진행함 - ;
    단계(1014) : 상기 CPU의 메모리 액세스 요청이 복합 메모리 액세스 요청인 경우, 상기 버퍼 스케줄러 내의 처리 로직에 의해, 상기 메모리에 반환되는 데이터를 처리하는 단계;
    단계(1015) : 상기 복합 메모리 액세스 명령이 처리된 후에, 상기 요청의 타입에 따라, 처리된 데이터를 상기 메모리 내에 다시 기입할지, 및 처리된 데이터를 상기 CPU에 반환할지를 판정하고; 상기 처리된 데이터가 상기 메모리 내에 다시 기입될 필요가 있는 경우, 상기 데이터를 상기 메모리에 기입하기 위해 상기 메모리 입도 표준을 준수하는 일련의 커맨드들을 이용하고; 상기 처리된 데이터가 상기 CPU에 반환될 필요가 있는 경우, 상기 처리된 데이터를 응답 패킷으로 패키지화하고, 상기 패킷을 상기 메시지 기반 메모리 컨트롤러로 송신하는 단계; 및
    단계(1016) : 상기 CPU의 메모리 액세스 요청이 복합 메모리 액세스 요청이 아닌 경우, 상기 요청이 기입 요청인지 여부를 판정하는 단계 - 기입 요청인 경우에는 단계(1006)로 진행하고; 기입 요청이 아닌 경우에는 단계(1007)로 진행함 -
    를 더 포함하는 메시지 기반 메모리 액세스 방법.
  23. 제20항에 있어서, 상기 단계(1004)는,
    단계(1101) : 상기 메시지 기반 메모리 컨트롤러에 의해, 메모리 액세스 요청 인터페이스를 통해 상기 CPU에 의해 송신된 판독/기입 요청을 수신하는 단계;
    단계(1102) : 판독/기입 요청 분배기에 의해, 상기 요청이 판독 요청인지 여부를 판정하는 단계 - 판독 요청인 경우에는 단계(1104)로 진행하고; 판독 요청이 아닌 경우에는 단계(1103)로 진행함 - ;
    단계(1103) : 수신된 요청이 기입 요청인 경우, 기입 요청 상태 테이블 내에 빈 항목이 있는지 여부를 판정하는 단계 - 있는 경우에는 단계(1105)로 진행하고; 없는 경우에는 단계(1102)로 진행함 - ;
    단계(1104) : 수신된 요청이 판독 요청인 경우, 판독 요청 상태 테이블 내에 빈 항목이 있는지 여부를 판정하는 단계 - 있는 경우에는 단계(1106)로 진행하고; 없는 경우에는 단계(1102)로 진행함 - ;
    단계(1105) : 수신된 요청이 기입 요청이고, 기입 요청 상태 테이블 내에 빈 항목이 있는 경우, 상기 요청에 대해 테이블 엔트리를 분배하고, 상기 기입 요청 내의 데이터를 기입 데이터 버퍼 내에 저장하는 단계 - 그렇지 않은 경우에는 단계(1102)로 진행함 - ;
    단계(1106) : 수신된 요청이 판독 요청이고, 상기 판독 요청 상태 테이블 내에 빈 항목이 있는 경우, 상기 요청에 대해 테이블 엔트리를 분배하는 단계 - 그렇지 않으면 단계(1102)로 진행함 - ; 및
    단계(1107) : 상기 요청의 수신을 중단하고, 메모리 액세스 요청 인터페이스를 통해 수신된 요청들의 처리를 계속하는 단계
    를 더 포함하는, 메시지 기반 메모리 액세스 방법.
  24. 삭제
  25. 삭제
KR1020147022905A 2012-01-18 2013-01-18 메시지 기반 메모리 액세스 장치 및 그것의 액세스 방법 KR101563837B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201210016351.2A CN102609378B (zh) 2012-01-18 2012-01-18 一种消息式内存访问装置及其访问方法
CN201210016351.2 2012-01-18
PCT/CN2013/070710 WO2013107393A1 (zh) 2012-01-18 2013-01-18 一种消息式内存访问装置及其访问方法

Publications (2)

Publication Number Publication Date
KR20140124781A KR20140124781A (ko) 2014-10-27
KR101563837B1 true KR101563837B1 (ko) 2015-10-27

Family

ID=46526766

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147022905A KR101563837B1 (ko) 2012-01-18 2013-01-18 메시지 기반 메모리 액세스 장치 및 그것의 액세스 방법

Country Status (6)

Country Link
US (1) US9870327B2 (ko)
EP (2) EP3588317B1 (ko)
JP (1) JP5930439B2 (ko)
KR (1) KR101563837B1 (ko)
CN (1) CN102609378B (ko)
WO (1) WO2013107393A1 (ko)

Families Citing this family (83)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8307180B2 (en) 2008-02-28 2012-11-06 Nokia Corporation Extended utilization area for a memory device
US8874824B2 (en) 2009-06-04 2014-10-28 Memory Technologies, LLC Apparatus and method to share host system RAM with mass storage memory RAM
CN102609378B (zh) * 2012-01-18 2016-03-30 中国科学院计算技术研究所 一种消息式内存访问装置及其访问方法
US9417998B2 (en) 2012-01-26 2016-08-16 Memory Technologies Llc Apparatus and method to provide cache move with non-volatile mass memory system
US9311226B2 (en) 2012-04-20 2016-04-12 Memory Technologies Llc Managing operational state data of a memory module using host memory in association with state change
CN103679041B (zh) * 2012-09-06 2016-11-23 中天安泰(北京)信息技术有限公司 数据安全读取方法及装置
CN103679040B (zh) * 2012-09-06 2016-09-14 中天安泰(北京)信息技术有限公司 数据安全读取方法及装置
CN103729315B (zh) 2012-10-15 2016-12-21 华为技术有限公司 一种地址压缩、解压缩的方法、压缩器和解压缩器
CN104903864B (zh) * 2012-11-02 2018-09-04 慧与发展有限责任合伙企业 选择性错误校正码和存储器访问粒度切换
KR20140122941A (ko) * 2013-04-11 2014-10-21 삼성전자주식회사 무선 통신 시스템에서 스케쥴링 요청 송수신 방법 및 장치
CN104125461B (zh) * 2013-04-27 2017-06-23 深圳市振华微电子有限公司 一种大尺寸的图像压缩处理系统及方法
CN104123234B (zh) * 2013-04-27 2017-04-05 华为技术有限公司 内存访问方法及内存系统
CN104216837A (zh) * 2013-05-31 2014-12-17 华为技术有限公司 一种内存系统、内存访问请求的处理方法和计算机系统
CN104252422A (zh) * 2013-06-26 2014-12-31 华为技术有限公司 内存访问方法和内存控制器
US9811453B1 (en) * 2013-07-31 2017-11-07 Juniper Networks, Inc. Methods and apparatus for a scheduler for memory access
CN104346234B (zh) 2013-08-09 2017-09-26 华为技术有限公司 一种内存访问的方法、设备及系统
CN104424102B (zh) * 2013-08-20 2017-10-10 华为技术有限公司 一种数据拷贝方法、设备和系统
CN104424105B (zh) * 2013-08-26 2017-08-25 华为技术有限公司 一种内存数据的读写处理方法和装置
JP6127872B2 (ja) * 2013-09-27 2017-05-17 富士通株式会社 演算処理装置及び演算処理装置の制御方法
CN104516823B (zh) * 2013-09-30 2018-04-27 华为技术有限公司 一种数据存储方法和装置
CN103647807B (zh) * 2013-11-27 2017-12-15 华为技术有限公司 一种信息缓存方法、装置和通信设备
CN104699638B (zh) * 2013-12-05 2017-11-17 华为技术有限公司 内存访问方法和内存访问装置
US9766823B2 (en) 2013-12-12 2017-09-19 Memory Technologies Llc Channel optimized storage modules
CN104851454A (zh) * 2014-02-13 2015-08-19 华为技术有限公司 控制信号处理方法及装置、可变存储器
CN105095094B (zh) * 2014-05-06 2018-11-30 华为技术有限公司 内存管理方法和设备
CN105095146B (zh) * 2014-05-09 2018-07-31 华为技术有限公司 基于内存控制器的带宽分配方法及装置
CN105573920B (zh) * 2014-10-09 2019-02-01 华为技术有限公司 存储空间管理方法和装置
US11755255B2 (en) 2014-10-28 2023-09-12 SK Hynix Inc. Memory device comprising a plurality of memories sharing a resistance for impedance matching
KR102515924B1 (ko) * 2016-04-19 2023-03-30 에스케이하이닉스 주식회사 미디어 컨트롤러 및 이를 포함한 데이터 저장 장치
US10067903B2 (en) 2015-07-30 2018-09-04 SK Hynix Inc. Semiconductor device
CN106155577B (zh) 2015-04-23 2019-03-26 华为技术有限公司 扩展内存的访问方法、设备以及系统
CN104932942B (zh) * 2015-05-29 2018-11-13 华为技术有限公司 缓冲资源的分配方法和装置
CN106484549B (zh) * 2015-08-31 2019-05-10 华为技术有限公司 一种交互方法、NVMe设备、HOST及物理机系统
CN105471630B (zh) * 2015-11-18 2019-04-19 武汉众邦领创技术有限公司 大容量分组传送系统下的北向系统消息分发系统及方法
JP6160717B1 (ja) * 2016-01-15 2017-07-12 日本電気株式会社 プロセッサ、および、データ転送方法
CN108595371B (zh) * 2016-01-20 2019-11-19 北京中科寒武纪科技有限公司 用于向量运算的数据读取、写入及读写调度器及保留站
CN105912270B (zh) * 2016-04-12 2019-01-18 上海交通大学 一种面向pm的访存请求解析装置与方法
DE102017106713A1 (de) 2016-04-20 2017-10-26 Samsung Electronics Co., Ltd. Rechensystem, nichtflüchtiges Speichermodul und Verfahren zum Betreiben einer Speichervorrichtung
US10034407B2 (en) * 2016-07-22 2018-07-24 Intel Corporation Storage sled for a data center
CN106201766B (zh) * 2016-07-25 2018-03-20 深圳市中博科创信息技术有限公司 数据存储控制方法及数据服务器
CN107783727B (zh) * 2016-08-31 2022-01-14 华为技术有限公司 一种内存设备的访问方法、装置和系统
CN108337286A (zh) * 2017-01-20 2018-07-27 深圳市中兴微电子技术有限公司 一种切包方法及装置
CN106993241B (zh) * 2017-03-31 2020-08-07 新华三技术有限公司 一种主控板、风扇框和网络设备
KR102532173B1 (ko) 2017-06-23 2023-05-16 후아웨이 테크놀러지 컴퍼니 리미티드 메모리 액세스 기술 및 컴퓨터 시스템
CN107729990B (zh) 2017-07-20 2021-06-08 上海寒武纪信息科技有限公司 支持离散数据表示的用于执行正向运算的装置及方法
CN109299117B (zh) * 2017-07-25 2022-07-29 北京国双科技有限公司 数据请求的处理方法和装置、存储介质、处理器
KR102395190B1 (ko) 2017-07-31 2022-05-06 삼성전자주식회사 호스트와 인터페이스를 수행하는 스토리지 장치, 호스트 및 스토리지 장치의 동작방법
CN107743101B (zh) * 2017-09-26 2020-10-09 杭州迪普科技股份有限公司 一种数据的转发方法及装置
CN107844435A (zh) * 2017-11-08 2018-03-27 北京锐安科技有限公司 一种缓存系统、方法及装置
CN108153485B (zh) * 2017-11-20 2021-06-22 天津津航技术物理研究所 一种多设备协同访问sram的方法及系统
US10395698B2 (en) 2017-11-29 2019-08-27 International Business Machines Corporation Address/command chip controlled data chip address sequencing for a distributed memory buffer system
US10747442B2 (en) 2017-11-29 2020-08-18 International Business Machines Corporation Host controlled data chip address sequencing for a distributed memory buffer system
US10534555B2 (en) 2017-11-29 2020-01-14 International Business Machines Corporation Host synchronized autonomous data chip address sequencer for a distributed buffer memory system
US10489069B2 (en) 2017-11-29 2019-11-26 International Business Machines Corporation Address/command chip synchronized autonomous data chip address sequencer for a distributed buffer memory system
US10884916B2 (en) * 2018-03-29 2021-01-05 Intel Corporation Non-volatile file update media
US10817176B2 (en) * 2018-06-18 2020-10-27 Intel Corporation Compute offload in block storage using virtual objects
CN110888591B (zh) * 2018-09-07 2023-05-30 慧荣科技股份有限公司 数据储存装置以及非挥发式存储器控制方法
US10467175B1 (en) * 2018-11-29 2019-11-05 Qualcomm Incorporated Secure digital (SD) direct command for improving throughput with a reduced memory footprint
CN111352657B (zh) * 2018-12-21 2023-04-25 上海都森电子科技有限公司 FPGA高速高效流水读取x86数据的方法
CN109828934A (zh) * 2018-12-31 2019-05-31 武汉芯动科技有限公司 内存访问芯片及装置
CN109753248B (zh) * 2019-01-22 2022-05-13 上海微小卫星工程中心 存储访问控制器和访问存储器的方法
CN109992413B (zh) * 2019-03-01 2021-09-24 中国科学院计算技术研究所 一种面向宽度优先搜索算法的加速装置、方法及存储介质
US10901734B2 (en) * 2019-03-01 2021-01-26 Micron Technology, Inc. Memory mapping using commands to transfer data and/or perform logic operations
CN110008154B (zh) * 2019-04-16 2020-08-21 北京智芯微电子科技有限公司 提高处理器与访存总线时序的方法及内存属性预测器
US20190324802A1 (en) * 2019-06-28 2019-10-24 Intel Corporation Technologies for providing efficient message polling
CN112306918B (zh) * 2019-07-31 2024-06-14 北京百度网讯科技有限公司 数据访问方法、装置、电子设备和计算机存储介质
CN110781120B (zh) * 2019-10-23 2023-02-28 山东华芯半导体有限公司 一种axi总线主机设备跨4kb传输的实现方法
CN114064302B (zh) * 2020-07-30 2024-05-14 华为技术有限公司 一种进程间通信的方法及装置
CN112416353A (zh) * 2020-08-10 2021-02-26 上海幻电信息科技有限公司 渠道包打包方法、装置及计算机设备
TWI764311B (zh) * 2020-10-08 2022-05-11 大陸商星宸科技股份有限公司 記憶體存取方法及智慧處理裝置
CN112463365B (zh) 2020-11-13 2023-01-10 苏州浪潮智能科技有限公司 提升对Flash通道控制器消息处理效率的方法及装置
CN112559401B (zh) * 2020-12-07 2023-12-22 杭州慧芯达科技有限公司 一种基于pim技术的稀疏矩阵链式访问系统
US11853610B2 (en) * 2021-02-16 2023-12-26 iodyne, LLC Pass-through command queues for unmodified storage drivers
CN113032307A (zh) * 2021-03-26 2021-06-25 山东英信计算机技术有限公司 一种集成器件访问请求处理方法及相关组件
CN113157425B (zh) * 2021-05-20 2024-05-03 深圳马六甲网络科技有限公司 业务访问的处理方法、装置、设备及存储介质
CN113535083A (zh) * 2021-06-08 2021-10-22 平头哥(上海)半导体技术有限公司 用于打包存储访问请求的计算机系统和由计算机实现的方法
CN113254384B (zh) * 2021-06-23 2021-11-26 中科院微电子研究所南京智能技术研究院 一种众核系统的数据传输方法及系统
CN113934653B (zh) * 2021-09-15 2023-08-18 合肥大唐存储科技有限公司 一种嵌入式系统的Cache实现方法和装置
CN114328345B (zh) * 2021-12-10 2024-05-03 北京泽石科技有限公司 控制信息的处理方法、装置以及计算机可读存储介质
US20220114098A1 (en) * 2021-12-22 2022-04-14 Intel Corporation System, apparatus and methods for performing shared memory operations
US20240078017A1 (en) * 2022-09-01 2024-03-07 Advanced Micro Devices, Inc. Memory controller and near-memory support for sparse accesses
CN116594758B (zh) * 2023-07-18 2023-09-26 山东三未信安信息科技有限公司 一种密码模块调用优化系统及优化方法
CN117632820B (zh) * 2024-01-22 2024-05-14 北京开源芯片研究院 请求处理方法、装置、总线桥、电子设备及可读存储介质

Family Cites Families (75)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4667286A (en) * 1984-12-20 1987-05-19 Advanced Micro Devices, Inc. Method and apparatus for transferring data between a disk and a central processing unit
US6324120B2 (en) * 1990-04-18 2001-11-27 Rambus Inc. Memory device having a variable data output length
JP3178909B2 (ja) * 1992-01-10 2001-06-25 株式会社東芝 半導体メモリ装置
US5444718A (en) * 1993-11-30 1995-08-22 At&T Corp. Retransmission protocol for wireless communications
US5924126A (en) * 1995-05-15 1999-07-13 Nvidia Method and apparatus for providing address translations for input/output operations in a computer system
US5881264A (en) * 1996-01-31 1999-03-09 Kabushiki Kaisha Toshiba Memory controller and memory control system
EP0845738A3 (en) * 1996-11-28 2006-09-20 Hitachi, Ltd. Storage system which transfers a command and data corresponding to said command subsequent to said command
US6434620B1 (en) * 1998-08-27 2002-08-13 Alacritech, Inc. TCP/IP offload network interface device
US7237036B2 (en) * 1997-10-14 2007-06-26 Alacritech, Inc. Fast-path apparatus for receiving data corresponding a TCP connection
FR2778258A1 (fr) * 1998-04-29 1999-11-05 Texas Instruments France Controleur d'acces de trafic dans une memoire, systeme de calcul comprenant ce controleur d'acces et procede de fonctionnement d'un tel controleur d'acces
DE69836437T2 (de) * 1997-12-05 2007-09-27 Intel Corporation, Santa Clara Speichersystem mit speichermodul mit einem speichermodul-steuerbaustein
US6621829B1 (en) * 1998-05-20 2003-09-16 Nortel Networks Limited Method and apparatus for the prioritization of control plane traffic in a router
US6505276B1 (en) * 1998-06-26 2003-01-07 Nec Corporation Processing-function-provided packet-type memory system and method for controlling the same
US6510474B1 (en) * 1998-11-16 2003-01-21 Infineon Technologies Ag Methods and apparatus for re-reordering command and data packets in order to restore an original order of out-of-order memory requests
US6526484B1 (en) * 1998-11-16 2003-02-25 Infineon Technologies Ag Methods and apparatus for reordering of the memory requests to achieve higher average utilization of the command and data bus
US6266723B1 (en) * 1999-03-29 2001-07-24 Lsi Logic Corporation Method and system for optimizing of peripheral component interconnect PCI bus transfers
US6539467B1 (en) * 1999-11-15 2003-03-25 Texas Instruments Incorporated Microprocessor with non-aligned memory access
US6381658B1 (en) * 1999-12-29 2002-04-30 Intel Corporation Apparatus and method to precisely position packets for a queue based memory controller
US6745319B1 (en) * 2000-02-18 2004-06-01 Texas Instruments Incorporated Microprocessor with instructions for shuffling and dealing data
US6754682B1 (en) * 2000-07-10 2004-06-22 Emc Corporation Method and apparatus for enabling consistent ancillary disk array storage device operations with respect to a main application
US20020107939A1 (en) * 2001-02-07 2002-08-08 Ford Daniel E. System and method for accessing software components in a distributed network environment
US6832279B1 (en) * 2001-05-17 2004-12-14 Cisco Systems, Inc. Apparatus and technique for maintaining order among requests directed to a same address on an external bus of an intermediate network node
KR100428714B1 (ko) 2001-08-21 2004-04-30 한국전자통신연구원 이중포트램을 이용한 아이피 패킷 전달 장치 및 그 방법
US6799231B2 (en) * 2002-10-22 2004-09-28 Asix Electronics Corp. Virtual I/O device coupled to memory controller
US7069399B2 (en) * 2003-01-15 2006-06-27 Via Technologies Inc. Method and related apparatus for reordering access requests used to access main memory of a data processing system
KR100559025B1 (ko) * 2003-05-30 2006-03-10 엘지전자 주식회사 홈 네트워크 관리 시스템
US20050210185A1 (en) 2004-03-18 2005-09-22 Kirsten Renick System and method for organizing data transfers with memory hub memory modules
US7296143B2 (en) * 2004-06-22 2007-11-13 Lenovo (Singapore) Pte. Ltd. Method and system for loading processor boot code from serial flash memory
US20060036817A1 (en) * 2004-08-10 2006-02-16 Oza Alpesh B Method and system for supporting memory unaligned writes in a memory controller
US7688838B1 (en) * 2004-10-19 2010-03-30 Broadcom Corporation Efficient handling of work requests in a network interface device
US8478907B1 (en) * 2004-10-19 2013-07-02 Broadcom Corporation Network interface device serving multiple host operating systems
US7835380B1 (en) * 2004-10-19 2010-11-16 Broadcom Corporation Multi-port network interface device with shared processing resources
JPWO2006043345A1 (ja) * 2004-10-19 2008-05-22 松下電器産業株式会社 プロセッサ
US7826470B1 (en) * 2004-10-19 2010-11-02 Broadcom Corp. Network interface device with flow-oriented bus interface
US7299313B2 (en) * 2004-10-29 2007-11-20 International Business Machines Corporation System, method and storage medium for a memory subsystem command interface
US7392353B2 (en) * 2004-12-03 2008-06-24 International Business Machines Corporation Prioritization of out-of-order data transfers on shared data bus
US8010682B2 (en) * 2004-12-28 2011-08-30 International Business Machines Corporation Early coherency indication for return data in shared memory architecture
US20070016698A1 (en) 2005-06-22 2007-01-18 Vogt Pete D Memory channel response scheduling
CN100437522C (zh) * 2005-09-09 2008-11-26 中国科学院计算技术研究所 一种远程内存服务器及其实现方法
US7536514B2 (en) * 2005-09-13 2009-05-19 International Business Machines Corporation Early return indication for read exclusive requests in shared memory architecture
US8230153B2 (en) * 2006-01-20 2012-07-24 Broadcom Corporation Method and system for HBA assisted storage virtualization
US8185711B2 (en) * 2006-05-16 2012-05-22 Samsung Electronics Co., Ltd. Memory module, a memory system including a memory controller and a memory module and methods thereof
CN100517294C (zh) * 2006-07-14 2009-07-22 中兴通讯股份有限公司 一种基于共享存储器的双cpu通信方法
US7552285B2 (en) * 2006-08-30 2009-06-23 Arm Limited Line fill techniques
TWI318348B (en) * 2006-09-22 2009-12-11 Realtek Semiconductor Corp Memory management method
JP5034551B2 (ja) * 2007-02-26 2012-09-26 富士通セミコンダクター株式会社 メモリコントローラ、半導体メモリのアクセス制御方法およびシステム
JP4715801B2 (ja) * 2007-04-26 2011-07-06 日本電気株式会社 メモリアクセス制御装置
US20080320255A1 (en) * 2007-06-25 2008-12-25 Sonics, Inc. Various methods and apparatus for configurable mapping of address regions onto one or more aggregate targets
US7685374B2 (en) * 2007-07-26 2010-03-23 Siliconsystems, Inc. Multi-interface and multi-bus structured solid-state storage subsystem
JP5103663B2 (ja) * 2007-09-27 2012-12-19 ルネサスエレクトロニクス株式会社 メモリ制御装置
TWI344085B (en) * 2007-11-15 2011-06-21 Genesys Logic Inc Storage system for improving efficiency in accessing flash memory and method for the same
US8417920B2 (en) * 2007-12-21 2013-04-09 Arm Limited Management of speculative transactions
US7770077B2 (en) * 2008-01-24 2010-08-03 International Business Machines Corporation Using cache that is embedded in a memory hub to replace failed memory cells in a memory subsystem
US7925824B2 (en) * 2008-01-24 2011-04-12 International Business Machines Corporation System to reduce latency by running a memory channel frequency fully asynchronous from a memory device frequency
US20090271532A1 (en) * 2008-04-24 2009-10-29 Allison Brian D Early header CRC in data response packets with variable gap count
US9111645B2 (en) * 2008-08-08 2015-08-18 Rambus Inc. Request-command encoding for reduced-data-rate testing
JP5217786B2 (ja) * 2008-08-27 2013-06-19 セイコーエプソン株式会社 リクエスト調停装置及びリクエスト調停方法
US8359444B2 (en) * 2008-09-24 2013-01-22 Hitachi, Ltd. System and method for controlling automated page-based tier management in storage systems
US8856463B2 (en) * 2008-12-16 2014-10-07 Frank Rau System and method for high performance synchronous DRAM memory controller
US8225052B2 (en) * 2009-06-03 2012-07-17 Micron Technology, Inc. Methods for controlling host memory access with memory devices and systems
US8090892B2 (en) * 2009-06-12 2012-01-03 Freescale Semiconductor, Inc. Ordered queue and methods therefor
JP2011034214A (ja) * 2009-07-30 2011-02-17 Canon Inc メモリ制御装置
US8195909B2 (en) * 2009-10-05 2012-06-05 Seagate Technology Llc Data management in a data storage system
US20120191943A1 (en) * 2009-10-13 2012-07-26 Rambus Inc. Dynamic protocol for communicating command and address information
CN101853238A (zh) * 2010-06-01 2010-10-06 华为技术有限公司 通信处理器间消息通信方法和系统
CN101860819A (zh) * 2010-06-07 2010-10-13 广州从兴电子开发有限公司 用户信息推送方法、呈现方法、系统、服务器及客户端
US20120226827A1 (en) * 2011-03-02 2012-09-06 Qualcomm Incorporated Mechanism for Performing SDIO Aggregation and Conveying SDIO Device Status to the Host Software
US9411757B2 (en) * 2011-03-14 2016-08-09 Hewlett Packard Enterprise Development Lp Memory interface
US20130136033A1 (en) * 2011-11-28 2013-05-30 Abhishek Patil One-click connect/disconnect feature for wireless devices forming a mesh network
CN102541779B (zh) * 2011-11-28 2015-07-08 曙光信息产业(北京)有限公司 一种提高多数据缓冲区dma效率的系统和方法
CN102609378B (zh) * 2012-01-18 2016-03-30 中国科学院计算技术研究所 一种消息式内存访问装置及其访问方法
US9244824B2 (en) * 2012-07-05 2016-01-26 Samsung Electronics Co., Ltd. Memory sub-system and computing system including the same
US9424045B2 (en) * 2013-01-29 2016-08-23 Arm Limited Data processing apparatus and method for controlling use of an issue queue to represent an instruction suitable for execution by a wide operand execution unit
US9240975B2 (en) * 2013-01-30 2016-01-19 Palo Alto Networks, Inc. Security device implementing network flow prediction
US9142280B1 (en) * 2014-08-06 2015-09-22 Freescale Semiconducotr, Inc. Circuit for configuring external memory

Also Published As

Publication number Publication date
CN102609378A (zh) 2012-07-25
CN102609378B (zh) 2016-03-30
EP2801912A1 (en) 2014-11-12
US20150006841A1 (en) 2015-01-01
EP3588317A1 (en) 2020-01-01
WO2013107393A1 (zh) 2013-07-25
EP3588317B1 (en) 2021-03-17
US9870327B2 (en) 2018-01-16
EP2801912B1 (en) 2019-04-10
EP2801912A4 (en) 2014-12-03
KR20140124781A (ko) 2014-10-27
JP5930439B2 (ja) 2016-06-08
JP2015508546A (ja) 2015-03-19

Similar Documents

Publication Publication Date Title
KR101563837B1 (ko) 메시지 기반 메모리 액세스 장치 및 그것의 액세스 방법
US11449445B2 (en) Transaction-based hybrid memory
EP2913963B1 (en) Data caching system and method for an ethernet device
CN102207916B (zh) 一种基于指令预取的多核共享存储器控制设备
US20160085585A1 (en) Memory System, Method for Processing Memory Access Request and Computer System
US8200882B2 (en) Memory system, access control method therefor, and computer program
CN103778013A (zh) 一种多通道Nand Flash控制器及其控制方法
JP5666722B2 (ja) メモリ・インターフェース
US9069489B1 (en) Dynamic random access memory front end
CN101216751B (zh) 基于分布存储结构的具有数据处理能力的动态随机存储器装置
KR20100077051A (ko) 메모리 액세스들의 순서를 수정하기 위한 시스템, 장치 및 방법
US20060259658A1 (en) DMA reordering for DCA
WO2018232736A1 (zh) 内存访问技术及计算机系统
US20110179199A1 (en) Support for non-locking parallel reception of packets belonging to the same reception fifo
US6751704B2 (en) Dual-L2 processor subsystem architecture for networking system
CN115083451A (zh) 多通道的数据处理方法、装置、设备及存储介质
CN113360424A (zh) 基于多通路独立axi总线的rldram3控制器
CN102420749A (zh) 一种网卡发包功能的实现装置和方法
JP2004310394A (ja) Sdramアクセス制御装置
CN102073604B (zh) 一种同步动态存储器读写控制方法、装置和系统
WO2019120274A1 (zh) 用于socfpga的数据循环缓冲方法及装置、存储介质、终端
WO2015153693A1 (en) Interface, interface methods, and systems for operating memory bus attached computing elements

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20181004

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190917

Year of fee payment: 5