KR20060108357A - 아웃 오브 오더 dram 시퀀서 - Google Patents

아웃 오브 오더 dram 시퀀서 Download PDF

Info

Publication number
KR20060108357A
KR20060108357A KR1020067017435A KR20067017435A KR20060108357A KR 20060108357 A KR20060108357 A KR 20060108357A KR 1020067017435 A KR1020067017435 A KR 1020067017435A KR 20067017435 A KR20067017435 A KR 20067017435A KR 20060108357 A KR20060108357 A KR 20060108357A
Authority
KR
South Korea
Prior art keywords
memory access
memory
requests
sequence
read
Prior art date
Application number
KR1020067017435A
Other languages
English (en)
Other versions
KR100724557B1 (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 KR20060108357A publication Critical patent/KR20060108357A/ko
Application granted granted Critical
Publication of KR100724557B1 publication Critical patent/KR100724557B1/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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • 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/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1626Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • 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
    • 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
    • G06F3/0613Improving I/O performance in relation to throughput
    • 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/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0674Disk device
    • G06F3/0676Magnetic disk device
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements

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 Security & Cryptography (AREA)
  • Memory System (AREA)
  • Magnetic Resonance Imaging Apparatus (AREA)
  • Advance Control (AREA)
  • Apparatus For Radiation Diagnosis (AREA)
  • Multi Processors (AREA)
  • Dram (AREA)
  • Stabilization Of Oscillater, Synchronisation, Frequency Synthesizers (AREA)
  • Electrotherapy Devices (AREA)
  • Processing Of Color Television Signals (AREA)

Abstract

메모리 액세스 요청은 메모리 제어기의 메모리 요청 큐에서 연속적으로 수신된다. 메모리 액세스 요청이 수신된 순서로 실행되어야 한다면 발생할 것인 시간적(temporally) 근사적 요청들 간의 임의의 충돌 또는 잠재적인 지연이 검출되며, 메모리 액세스 요청의 수신된 순서가 재배열되어, 충돌 또는 지연을 피하거나 최소화시키고 메모리 데이터 버스로의 그리고 이로부터의 데이터 흐름을 최적화시킨다. 메모리 액세스 요청은 재순서화된 시퀀스로 실행되며, 원래 수신된 요청 순서가 트래킹(track)된다. 실행 후, 독출형 메모리 액세스의 실행에 의한 메모리 장치로부터의 데이터 독출은, 독출 요청이 원래 수신된 순서로 각 요청자에게 전달된다.

Description

아웃 오브 오더 DRAM 시퀀서{OUT OF ORDER DRAM SEQUENCER}
도 1은 본 발명에 따른 메모리 제어기의 블록도;
도 2는 독출 요청의 순서가 재조정된 실행에 의해 얻어진 요청된 데이터를 그들 각각의 요청기로 요청의 원래 수신된 순서로 리턴하는 프로세스를 도시하는 흐름도;
도 3은 현재의 타이밍 매트릭스에서 충돌 또는 지연의 검출시에 메모리 제어기에서의 시퀀스 부하 논리 유닛(sequence load logic unit)에 의해 실행되는 충돌의 순서 재조정 프로세스의 제1 실시예;
도 4는 현 타이밍 매트릭스에서 충돌 또는 지연의 검출시에 메모리 제어기에서의 시퀀스 부하 논리 유닛에 의해 실행되는 충돌의 순서 재조정 프로세스의 제2 실시예;
도 5는 현 타이밍 매트릭스에서 충돌 또는 지연의 검출시에 메모리 제어기에서의 시퀀스 부하 논리 유닛에 의해 실행되는 충돌의 순서 재조정 프로세스의 제3 실시예;
도 6은 본 발명의 작동을 설명하는 타이밍도;
도 7은 본 발명의 메모리 제어기가 이용될 수 있는 처리 시스템의 블록도이다.
대부분의 컴퓨터 또는 데이터 처리 시스템에서, 메인 액티브 메모리, 또는 랜덤 액세스 메모리(RAM)는 다이나믹 랜덤 액세스 메모리(DRAM)이다. DRAM의 구성은 일반적으로 복수의 뱅크(bank)로 조직화된 다수의 메모리 셀로 구성된다. 각 뱅크는 메모리 셀의 어레이에 대응하며, 각 셀은 고유 메모리 어드레스와 각각 연관된다. 특히, 뱅크 내의 메모리 어드레스는 행 어드레스와 열 어드레스에 의하여 각각 지정되며, 각 행 어드레스는 메모리 페이지로서 정의된다. 그러므로, 각 메모리 페이지는 페이지 내에 상이한 열 목적지에 대응하는 일부 메모리 위치를 포함한다.
일련의 액세스 요청을 수행할 때, 현재 요청된 페이지가, 현재 다른 페이지가 열려 있는 동일한 뱅크에서 발견된다면, 이러한 상태는 "페이지 충돌(page conflict)"이라고 알려져 있으며, 따라서 이전에 열린 페이지는 우선 닫거나, "프리차지(precharged)"되어야 한다. 프리차징후, 요청된 페이지가 열리거나 "활성화(activated)"될 수도 있으며, 다음 독출 또는 기입 동작이 수행된다. 현재 요청된 페이지가 어떤 페이지도 열려있지 않은 뱅크에서 발견된다면, "페이지 미스(page miss)"가 발생하여, 활성화 과정이 수행되는 것이 요구된다. 현재 메모리 액세스 요청이 이전 메모리 액세스 요청으로부터 이미 열려있는 페이지에 대한 것이면, "페이지 히트(page hit)"가 발생하는 것으로 말할 수 있다.
페이지 히트 요청에 관한 페이지 충돌과 페이지 미스 메모리 액세스에 대하여 수행되어야 하는 추가의 처리로 인하여, 이전의 2개의 처리를 수행하는 데 필요한 시간이 이후에 대하여보다 현저하게 크다. 마이크로프로세스 기술 개발의 초기 단계에서, 독출 및 기입 동작 모두에 대하여, DRAM 메모리 페이지를 액세스하는 요청은 선입 선출(first in, first out) 기반으로 수신되어 달성된다. 이러한 처리는 상당히 비효율적인 경향이 있으므로, 다수의 페이지 미스와 충돌을 유발하며, 따라서 메모리 페이지를 프리차징하고 활성화하는 데 프로세서 및/또는 메모리 제어기 리소스의 광범위한 기여를 요한다.
보다 최근에, 메모리 액세스가 우선권(priority)에 기초한 보다 진보된 처리 방법이 개발되었다. 액세스 요청의 우선권은, 요청을 보내는 장치의 형태, 요청되는 액세스의 형태, 요청에 의하여 액세스되도록 소망되는 메모리 어드레스 등과 같은 다양한 요소들에 기초할 수도 있다. 그러나, 우선권에 엄격하게 메모리 액세스를 제공하는 것의 문제점은, 낮은 우선권 요청은 허용불가능하게 긴 기간동안 액세스가 거부될 수도 있다는 것이다.
또한, 각 신세대 컴퓨터가 전개됨에 따라, 메모리 클록 속도가 현저하게 증가된다. 메모리의 클록의 속도가 증가됨에 따라, 페이지 미스 메모리 동작, 뱅크 비지(busy) 충돌, 및 다른 충돌의 발생 가능성 및 이에 대한 타임 페널티가 또한 현저하게 증가된다. 특히, 각 액세스된 메모리 위치들로 및 이로부터 정보를 전달하는 데 사용되는 데이터 버스는, 프리차징, 활성화, 뱅크 유용성에 대한 대기 등동안 아이들이다.
그러므로, 상술된 단점들을 완화시키는 해법이 필요하다. 특히, 수신된 메모리 액세스 요청의 시퀀스 순서가 충돌을 피하거나 감소하기 위하여 재배열될 수 있다면, 메모리 처리 효율성이 상당히 향상될 것이다. 충돌을 피하거나 감소함으로써, 메모리 데이터 버스는, 메모리 데이터 버스의 아이들 시간이 감소되거나 제거되어, 메모리 시스템의 메모리 대역폭을 효율적으로 증가시키고, 보다 많은 메모리 액세스 트랜잭션이 이전에 가능한 시간보다 짧은 시간으로 발생하도록 한다는 점에서, 보다 효율적으로 사용된다.
본 발명은, 상기 논의된 것과 같은 충돌과 지연을 최소화하기 위하여 순차로 수신된 DRAM 액세스 요청의 순서를 재배치하는 한편, 요청이 처음에 수신된 것과 동일한 순서로 요청된 정보를 요청 유닛들에게 리턴함으로써, 종래 기술에서 확인된 문제를 해결하려고 한다.
본 발명에서, 메모리 액세스 요청은 메모리 제어기의 입력 큐에 순차로 수신된다. 시퀀스 매트릭스는 요청 입력 큐 이후에 배치되어, 일련의 요청 사이의 충돌 또는 잠재적 지연이 충돌 검출기에 의해 확인된다. 충돌 검출기는 데이터 버스로부터의 데이터 흐름 및 데이터 버스로의 데이터 흐름을 최적화하기 위하여 메모리 코어 액세스 요청을 다시 순서메긴다. 예를 들어, 뱅크 비지 상태(bank busy condition) 또는 다른 지연이 순차로 수신된 메모리 요청에서 충돌 검출기에 의해 인식되면, 메모리 제어기는 계류중인 메모리 요청이 실행될 순서를 재배치하여 가 능하다면 충돌 또는 지연을 제거하거나 그렇지 않으면 지연을 최소화한다.
기입 요청도 선행 요청과의 어드레싱 충돌(addressing conflict)이 없는 한, 순서를 벗어나 실행될 수 있다.
순서가 재조정된(re-ordered) 시퀀스는 실행 큐에 보유되며, 여기서 각 요청은 원본 시퀀스에서의 그 위치를 지시하도록 태그(tag)가 붙여져서, 리턴된 데이터는 입수되는 메모리 액세스 요청의 순서와 정합하도록 메모리 제어기에서 적절히 순서가 재조정될 수 있다.
명령 선택기는 실행 큐로부터 실행될 명령 또는 명령들을 선택한다. 명령 선택기는 일정한 속도의 DRAM 시퀀서가 복잡한 클록 페이징 연산없이 다중 클록 속도로 인터페이스할 수 있게 해주는 인터페이스 타이밍 특성을 포함한다.
독출 리턴 큐는 DRAM으로부터 얻어지는 리턴된 데이터를 추적한다. 각각의 리턴된 데이터와 연관된 태그에 기초하여, 독출 리턴 큐는 각각의 요청기에 원래 순서로 판독 데이터를 리턴한다. 구체적으로, 독출 요청을 실행할 때, 만약 리턴된 데이터와 연관된 태그가 메모리 제어기에서 가장 긴 레이턴시(latency)을 가지는 판독 요청과 대응한다면, 리턴된 데이터가 데이터를 요청했던 시스템 유닛에 리턴된다. 만약 태그가 가장 긴 레이턴시를 가진 독출 요청과 연관되지 않는다면, 리턴된 데이터는 보다 긴 레이턴시를 가진 모든 독출 요청에 대한 리턴된 데이터가 각각의 요청기에 리턴될 때까지 버퍼에 저장된다.
또는, 각 요청은 수신된 요청 순서에 기초하여 버퍼 위치가 할당될 수 있다. DRAM으로부터 얻어진 리턴된 데이터가 입력 큐에 최초로 수신된 판독 요청에 대응 하는 버퍼 위치로 배치되면, 그 데이터는 적절한 요청기로 리턴된다. 그렇지 않으면, 버퍼내의 리턴된 데이터는 입력큐에 수신된 모든 선행 독출 요청이 실행될때까지 버퍼내에 유보된다. 이런 방식으로, 독출된 리턴 큐는 데이터를 버퍼 위치로부터 처음에 수신되었던 순서로 리턴한다.
본 발명의 또다른 특성, 태양, 및 이점들은 첨부된 도면을 참조하여 설명된, 본 발명의 바람직한 실시예의 다음의 상세한 설명으로부터 명백해질 것이다.
설명의 편의를 위하여, 본 발명의 바람직한 실시예는 동적 랜덤 액세스 메모리(DRAM) 장치에 관련하여 사용되는 것으로 이하에서 설명한다. 그렇지만, 본 발명은 DRAM을 포함하는 응용에만 제한되지 않는다는 것을 알아야 한다. 오히려, 본 발명의 메모리 제어기 및 방법은 정적 RAM(SRAM) 및 다양한 다른 변종 DRAM, 예를 들어 패스트 페이지 모드 DRAM(FPM DRAM), 익스텐디드 데이터 아웃 DRAM(EDO DRAM), 버스트 EDO DRAM, 싱크로너스 DRAM(SDRAM), 더블 데이터 레이트 DRAM(DDR DRAM), 램버스 DRAM(RDRAM) 등의 다른 형태의 랜덤 액세스 메모리에 관련하여 사용될 수 있다는 것을 강조한다.
도 1은 본 발명에 따른 메모리 제어기(10)를 나타내고, 이는 입력 큐(12), 명령 파서(14), 시퀀싱 유닛(16), 시퀀스 매트릭스(18), 충돌 검출기(20), 명령 시퀀서(22), 실행 큐(24), 명령 선택기(26), 입/출력 버퍼(28), 독출 리턴 큐(30), 리턴된 데이터 버퍼(32)를 포함한다.
메모리 액세스 요청이 메모리 제어기(10)에 들어가고, FIFO 기반으로 입력 큐(12)에서 수신된다. 그리고, 수신된 요청은 명령 파서(14)에서 순차적으로 처리되어 각 요청 신호로부터, 메모리 어드레스(MA) 데이터, 칩 선택기(CS) 명령(액세스할 요청된 메모리 뱅크를 지시), 행 어드레스 선택(RAS) 커맨드, 및 열 어드레스 선택(CAS) 명령, 및 독출 동작인지 기입 동작인지를 나타내는 기입 인에이블(WE) 스테이트 등의 관련된 정보를 획득한다.
그리고, 획득된 정보는 시퀀싱 유닛(16)으로 제공되어, 수신된 메모리 액세스 요청을 시퀀스 매트릭스(18)에서 수신된 클록 신호에 따라 시퀀스 매트릭스(18)에 위치시킨다. 처리의 기동시에, 액세스 요청은 시퀀싱 유닛(16)에서 수신된 순서로 매트릭스에 탑재되게 된다.
충돌 검출기(20)는 시퀀스 매트릭스(18)에서의 정보를 감시하고, 매트릭스 내의 요청의 시퀀스가 시퀀스 매트릭스에서 현재의 순서로 실행된다면 발생할 수 있는 충돌 또는 지연을 체크한다. 충돌 검출기(20)에 의해 검출된 충돌 또는 지연은 시퀀싱 유닛(16)으로 되돌려 보고되고, 매트릭스에서의 요청의 순서를 재배열하여 식별된 충돌 또는 지연으로 인한 메모리 데이터 버스의 아이들 시간을 최소화하거나 제거한다. 충돌 검출기(20)에 의해 검출되는 충돌은, 예를 들어 페이지 충돌 및 메모리 뱅크가 다른 독출 또는 기입 동작을 수행하면서 바쁜 뱅크 비지 상태와 페이지 충돌을 포함하지만, 여기에 제한되지는 않는다. 충돌 검출기에 의해 식별되는 지연은, 반드시 다른 메모리 액세스 요청의 실행과의 충돌은 아니지만, 그 동안 메모리 버스 데이터가 아이들인 준비 단계의 수행을 요청하는 상태이다. 이러한 지연은 예를 들어 페이지 충돌, 페이지 미스 등을 포함한다.
일반적으로, 독출 및 기입 타입 메모리 액세스 요청 둘 다는 시퀀스 매트릭스(18)에서 재배열되게 된다. 그러나, 필요하다면 기입 요청만이, 재배열된 시퀀스가 입력 큐에 이전에 수신된 요청과 충돌하는 어떠한 어드레싱 충돌을 생성하지 않거나, 그렇지 않으면 매트릭스 내의 어떠한 다른 메모리 액세스 요청과 관련하여 관련 메모리 위치에 기억되거나 기억될 데이터를 간섭하지 않을 정도로, 재배열되는 것이 바람직하다.
추가적인 메모리 액세스 요청이, 시퀀싱 유닛(16)에 의해 충돌을 해결하거나 지연을 감소시키기 위해 재배열되면서, 시퀀스 매트릭스(18)로 이동할 때, 시퀀스의 프론트(front)의 요청은, 재배열된 요청이 실행을 대기하는 트랜스퍼 버퍼로서 기능하는 실행 큐(24)로 이동한다. 시퀀싱 유닛(16)에서 사용된 충돌 해결 처리에 의거하여, 소정 회수의 액세스 요청을 일괄로 클록 신호에 따라 연속기반으로 하거나, 또는 소정의 누적 사이즈의 요청을 기초로, 요청이 실행 큐(24)로 이동될 수 있다. 바람직하게는, 실행 큐(24)에 대한 클록(CLK)은 시퀀스 매트릭스(18)의 탑재를 가이드하는 클록(CLK)과 동일하다.
명령 시퀀서(22)는, 특정 메모리 액세스 요청의 독출 또는 기입 커맨드로부터 데이터 제어 명령을 일시적으로 분리 및/또는 삽입이 필요한 경우, 시퀀스 매트릭스(18)로부터 실행 큐(24)로 전달된 각 요청에 관련된 다양한 명령을 배열한다. 예를 들어, 실행 큐(24)로 송신된 독출 또는 기입 요청이 프리차징 및/또는 활성화 동작을 필요로 하면, 프리차징 및/또는 활성화 동작을 개시하는 데이터 제어 명령이 관련된 독출 또는 기입 동작 앞의 실행 큐에 위치하고, 다른 액세스 요청에 관 련된 적어도 하나의 다른 독출 또는 기입 명령이 프리차지 및/또는 활성화 명령과 관련된 독출 또는 기입 명령 사이에 위치한다.
본 발명의 이점은 이러한 방식으로 데이터 제어 명령으로부터 독출 또는 기입 명령을 분리함으로써 실현된다. 구체적으로는, 상술한 예에서, 상술한 예의 프리차지 및/또는 활성화 동작이 수행될 수 있는 한편, 다른 메모리 액세스 요청에 대한 독출 또는 기입 명령이 즉시 실행될 수 있다. 따라서, 메모리 데이터 버스는 프리차지 및/또는 활성화 동작이 수행되는 시간 동안에 메모리 데이터 버스가 아이들일 필요가 없다.
각각의 독출 요청이 실행 대기 매트릭스에 전달될 때, 태그는 입력 대기 매트릭스(12)에서 수신한 바와 같이 각각의 요청의 원래 상대 배치를 확인하기 위한 요청에 대한 데이터 제어 명령에 일시적으로 추가된다. 선택적으로, 각각의 독출 요청은 이하에 상세히 후술하는 독출 버퍼(32)의 각 버퍼 위치에 할당될 수 있다.
명령 선택기(26)에 공급된 명령 선택 클록(CMD CLK) 신호에 따라, 실행 대기 매트릭스(24)의 프론트(front)로부터의 하나 이상의 메모리 액세스 요청이 적절한 DRAM 뱅크(들)의 실행을 위해 선택된다. 예컨대, 요청이 시퀀스 매트릭스(18)에 적재시 명령 선택 클록 신호가 클록 신호의 속도에 네 배이면, 네 개의 액세스 요청은 대기 매트릭스(24) 각각의 클록 신호에 대한 실행 대기 매트릭스(24)로부터 삭제된다. 이 경우, 명령 선택기(26)가 요청 선택 프로세스를 조절하므로 대기 매트릭스(24)에서 한 번에 모두 선택된 네 개의 액세스 요청이 등간격으로 실행된다. 새로운 요청이 시퀀스 매트릭스(18)로 도입시 동일한 클록 속도로 실행하기 위한 실행 대기 매트릭스에서 명령이 선택되면, 그후 명령 선택기(26)는 메모리 제어기(10)에서 생략될 수도 있다.
I/O 버퍼(28)는 각각의 액세스 요청에 규정된 독출 또는 기입 동작 동안 사용된 이행(transition) 버퍼이다. 실행되는 현재 액세스 요청이 독출 동작이면, 선택된 메모리 셀에 기입되는 데이터는 I/O 버퍼(28)에 일시적으로 기입된다. 유사하게, 독출 동작의 선택된 메모리 셀에서 독출된 데이터는 I/O 버퍼(28)에 일시적으로 저장된다.
요청된 메모리 액세스의 실행시, 각각의 독출 요청이 독출 복귀 대기 매트릭스(30)에 놓여진다. 독출 복귀 대기 매트릭스(30)는 독출 요청의 실행시 DRAM으로부터 독출된 요청된 데이터를 관리하며, 이 요청된 데이터를 입력 대기 행령에 수신되는 순서로 각각의 요청자로 복귀한다. DRAM에서 독출된 데이터는, 복귀된 요청 데이터에 연관된 할당 버퍼 위치 또는 태그에 따라, 요청자로 직접적으로 전달되거나 복귀한 데이터 버퍼(32)에 놓여진다.
이제 도 2를 참조하면, 독출 요청 실행후, 실행된 독출 요청은, I/O 버퍼(28)에 일시적으로 유지하는 요청에 의해 얻어진 데이터와 함께 독출 요청 대기 매트릭스(30)로 복귀된다(단계 100). 복귀하는 독출 요청이 가장 현재 태그 또는 할당된 버퍼 위치에 연관되는 단계 100에서 독출 요청 대기 매트릭스(30)를 결정하면, 그 요청에 의해 얻어진 데이터는 단계 120에서 요청자로 복귀되며, 현재 태그/버퍼 위치 정보는 단계 130에서 갱신된다.
메모리 제어기(10)의 가장 긴 잠복을 갖는 독출 요청에 할당되거나 연관되면 태그 또는 버퍼 위치는 "현재"이다. 독출 복귀 대기 매트릭스(30)는, 예컨대 복귀된 데이터가 그 리퀘스터에 전달될 때 현재 태그 또는 버퍼 위치를 나타내는 카운트 값을 증감함으로써, 가장 현재 태그 또는 버퍼 위치를 기억할 수도 있다.
현재가 아닌 태그 또는 할당된 버퍼 위치를 복귀하는 독출 요청이 갖는 경우, 할당된 태그 또는 버퍼 위치가 현재로 될 때까지 데이터는 독출 데이터 버퍼(32)에 놓여진다(단계 140). 복귀된 데이터가 단계 140의 버퍼(32)에 놓여진 후 또는 단계 130의 현재 태그 또는 버퍼 위치의 갱신후, 독출 복귀 대기 매트릭스(30)는, 현재 태그 또는 버퍼 위치에 대응하는 복귀된 데이터를 복귀된 데이터 버퍼(32)에서 발견할 수 있는지 여부를 결정한다. "예"의 경우, 프로세스가 단계 120으로 복귀하여, 현재 복귀된 데이터는 그 데이터의 요청자에 전달되며, 현재 태그 또는 버퍼 위치는 다시 단계 130에서 갱신된다. 현재 태그 또는 버퍼 위치에 대응하는 복귀된 데이터가 버퍼(32)에서 발견되지 않으면, 프로세스는 단계 100으로 복귀하여 실행 대기 매트릭스에서 다음 독출 요청의 실행으로 얻어진 복귀 데이터를 수신한다. 도 2에 도시한 이 프로세스에 의해, 독출 데이터는 요청을 입력 대기 매트릭스(12)에서 수신하는 순서로 각 요청자로 복귀된다.
태그가 독출 요청의 원래 수신된 순서를 지시하기 위해 사용되면, 태그는 각각의 요청의 데이터 제어 명령 사이에 일시적으로 삽입되지만, 요청자로 복귀된 독출 데이터에 포함되지 않는다. 바람직하게는, DRAM의 클록 속도에 대응하는 클록 속도 또는 그 정수 배수(integral multiple)에 따라 독출 복귀 대기 매트릭스(30)와 복귀된 데이터 버퍼(32)의 기능이 실행된다.
시퀀싱 유닛(16)이 검출된 충돌 또는 지연에 의해 메모리 액세스 요청을 다시 예정하는 충돌 재순서화 프로세스(conflict re-ordering process)의 제1 실시형태를 도 3에 도시한 순서도를 참조로 설명한다. 단계 200에서, 새롭게 도착한 메모리 액세스 요청이 시퀀스 매트릭스(18)의 현재 위치에서 실행될 때 임의의 충돌 또는 지연이 발생하는지를 결정하기 위해 액세스를 소망하는 메모리 뱅크(들)의 상태가 체크된다.
시퀀싱 유닛(16)이 새로이 도착한 요청에 대하여 충돌 또는 지연을 검출한다면, 시퀀싱 유닛(16)은 이의 현재 위치의 프론트에서 메모리 액세스 요청의 시퀀스 중에서 보다 적합한 타이밍 위치가 발견될 수 있는지를 단계 240에서 결정한다. 특히, 시퀀싱 유닛(16)은 우선 임의의 미해결의 충돌 또는 지연이 새로운 액세스 요청의 프론트에서 시퀀스에 존재하는지를 결정하고, 만약 그렇다면, 새로운 액세스 요청이 충돌없이 그 시간동안 실시될 수 있는지 아닌지를 결정한다. 보류의 충돌 또는 지연이 없다면, 시퀀싱 유닛(16)은 미리 스케줄된 요청 중에 임의의 새로운 충돌 또는 지연을 야기하는 일 없이 매트릭스에서의 임의의 점에서 재스케줄될 수도 있는지를 체크한다. 그렇지 않다면, 프로세스는 단계 230으로 재진행하여, 새로운 액세스 요청은 미해결의 상태로 현재의 타이밍 시퀀스의 종료에 남는다. 적합한 타이밍 위치가 시퀀스의 프론트에서 발견될 수 있다면, 새로이 도착한 요청은 그 위치에서 시퀀스에 삽입된다(단계 250). 다음에, 프로세스는 단계 200으로 복귀되어, 다음의 인커밍 메모리 액세스 요청에 대해 반복된다.
다른 한편, 새로이 도착한 액세스 요청에 대하여 충돌 또는 지연이 검출되지 않는다면, 다음에, 충돌 검출기(20)는 새로이 도착한 요청의 현재의 위치의 전방에서 타이밍 매트릭스에 임의의 미해결의 충돌 또는 지연이 존재하는지를 단계 220에서 결정한다. 미해결의 충돌 또는 지연이 발견된다면, 프로세스는 상기의 단계 240으로 재진행한다. 기존의 충돌이 발견되지 않는다면, 시퀀싱 유닛(16)은 단계 230에서 시퀀스 매트릭스(18)에서의 이의 현재 위치에 요청을 맡긴 후, 단계 200으로 복귀하여 다음의 인커밍 메모리 액세스 요청에 대해 프로세스를 반복한다.
이 실시예에 있어서, 임의의 미해결의 충돌 또는 지연은 시퀀싱 유닛(16)의 이후의 반복과 함께 새로운 액세스 요청의 도착으로 후에 해결될 수도 있거나 아닐 수도 있다. 충돌 또는 지연을 완화하기 위해 적합한 요청이 도착하지 않는다면, 메모리 액세스 요청은 계획된 순서에서 계속하여 처리될 것이지만, 미해결의 충돌(들) 또는 완전한 지연(들) 때문에, 메모리 데이터 버스 라인의 이용에 일부 비능률이 있을 것이다.
시퀀싱 유닛(16)에 의해 실시된 충돌 재순서 프로세스의 제2 실시예는 도 4에 도시된 흐름도에 설명된다. 다른 메모리 액세스 요청이 시퀀스 매트릭스(18)로부터 실행 열(24)로 이동함에 따라, 시퀀스 매트릭스에서 열에서의 순서가 다음인 액세스 요청은 단계 300에서 시퀀스 매트릭스의 제1 위치로 이동된다. 단계 310에서, 충돌 검출기(20)는 시퀀스 매트릭스의 선두(예를 들면, 매트릭스에서 요청 중의 가장 빠른 하나)에서 액세스 요청에 대하여 충돌 또는 지연이 존재하는지를 결정한다. 충돌이 없다면, 액세스 요청은 단계 320에서 실행 열(24)로 진행되고, 프로세스는 단계 300으로 복귀된다.
다른 한편, 충돌 또는 지연이 단계 310에서 검출된다면, 충돌 검출기(20)는 시퀀스 매트릭스에서 다음의 액세스 요청을 논하고, 임의의 충돌 없이 그 타임 위치에서 요청이 실시될 수 있는지를 단계 330에서 결정한다. 충돌 또는 지연이 그 타임 위치에서 그 액세스 요청을 스케줄함으로써 생성될 수 없다면, 요청은 단계 320에서 실행 열(24)에 전송되고, 프로세스는 단계 300으로 복귀된다. 충돌 또는 지연이 발견된다면, 프로세스는 그 타임 위치에서 적합하게 실시될 수도 있는 요청이 발견될 때까지 단계 330을 반복한다.
이 실시예에 있어서, 시퀀스 매트릭스의 선두에서 요청, 및 임의의 이후의 요청의 메모리 액세스에 대하여 충돌 또는 지연이 존재하는 것이 발견된다면, 거절된 요청은 적합한 타임 슬롯이 요청에 대하여 발견될 때까지 시퀀스에서 그들 현재의 위치에 남는다. 이 프로세스에 따르면, 메모리 액세스는 충돌 또는 지연 상태로 실행 열(24)에 전송되지 않을 것이다. 또한, 각각의 요청은 레이턴시에 기초하여 우선권이 부여되고, 충돌 상태가 그 요청의 타이밍에 의해 실시되지 않는 가장 빠른 가능한 타임 슬롯에서 실시될 것이다.
도 4를 참조하여 상술된 실시예의 변화는 도 5에 도시되고, 충돌 또는 지연이 시퀀스 매트릭스의 선두에서 액세스 요청의 현재의 타이밍 위치에 대하여 발견된다면, 위법의(offending) 요청은 이의 현재 위치에서 시퀀스에 잔존하기 보다는 시퀀스의 후부에 전송된다. 특히, 충돌이 단계 310에서 발견된다면, 충돌 또는 지연을 갖는 요청이 시퀀스의 후부에 전송되는 단계 420이 실시된다. 다음에, 충돌 검출기(20)는 열에서 다음의 액세스 요청에 이동하여 임의 충돌 또는 지연이 그 요 청에 대하여 발견되는지를 결정한다(단계 430). 충돌 또는 지연이 검출되지 않는다면, 도 4에 도시된 프로세스와 마찬가지로, 요청은 실행 열(24)로 전송된다. 충돌 또는 지연이 검출된다면, 프로세스는 단계 420으로 복귀된다.
도 6을 참조하면, 타이밍도는 본 발명의 작업에서 얻어진 결과를 나타낸다. 이 예에 있어서, 독출 요청(RD0, RD1, 및 RD2)은 리스트에 따라 순서에서 입력 열에서 수취된다. 페이지 충돌 상태가 RD0에 대하여 검출되고 있고, RD1 및 RD2는 다른 메모리 뱅크에서 모두 페이지 히트라고 추정된다. RD0가 RD1 및 RD2 전에 완료된다면 지연이 될 것이기 때문에, 요청은 재배열되어, 프리차지 작업이 RD0에 대해 실시될 때, RD1 및 RD2에 대한 독출 메모리 액세스가 실시된다. 이 방법으로 명령을 재배치시키는 것은 실행을 완료하는 RD0에 대한 프리차지 작업을 기다리는 동안 메모리 데이터 버스가 헛되이 보내고 있는 시간을 최소화하여, 메모리 데이터 버스를 보다 능률적으로 이용하게 한다.
DRAM으로부터 RD1과 RD2의 데이터가 독출된 후에, RD0의 활성화 동작이 수행되고, 그 다음에 RD0의 독출 액세스 명령이 수행된다. 독출 데이터 "1111"과 "2222"는 리턴된 데이터 버퍼에 순서대로 전송되어 독출 동작들이 실행된다. 그러나, "0000" 데이터가 적절한 메모리 셀로부터 얻어진 후에, 데이터는 먼저 RD0의 요청자에 리턴된다. 그 다음, 데이터 "1111"과 "2222"는 이 순서대로 이들의 각각의 요청자에 리턴된다.
도 7은 본 발명의 메모리 제어기(10)를 이용할 수 있는 처리 시스템(900)의 예를 도시한다. 처리 시스템(900)은 국지 버스(904)에 결합된 하나 이상의 프로세서(901)를 구비한다. 메모리 제어기(100)와 1차 국지 버스(903)도 국지 버스(904)에 결합된다. 처리 시스템(900)은 다수의 메모리 제어기(10) 및/또는 다수의 1차 버스 브리지(903)를 구비할 수 있다. 메모리 제어기(100)와 1차 국지 버스(903)는 단일 장치(906)로서 탑재되어도 된다.
또한 메모리 제어기(10)는 하나 이상의 메모리 데이터 버스(907)에 결합된다. 각 메모리 버스는 적어도 하나의 메모리 장치(902)를 구비하는 메모리 컴포넌트들(908)을 받아들인다. 메모리 컴포넌트들(908)은 메모리 카드나 메모리 모듈로서 형성될 수 있다. 시스템(900)에서 사용할 수 있는 메모리 모듈들의 예에는 SIMMs(single inline memory modules)와 DIMMs(dual inline memory modules)가 있다. 예를 들면, SIMM 또는 DIMM에서는, 부가 장치(909)가 SPD(serial presence detect) 메모리와 같은, 구성(configuration) 메모리이어도 된다.
메모리 제어기(10)는 캐쉬 메모리(905)에 결합될 수도 있다. 캐쉬 메모리(905)는 처리 시스템에서 다만 캐쉬 메모리뿐일 수 있다. 대안으로, 다른 장치들, 예를 들면, 프로세서들(901)도 캐쉬 메모리들을 구비할 수 있어, 캐쉬 메모리(905)와 캐쉬 계층(hierarchy)을 형성할 수 있다. 처리 시스템(900)이 버스 마스터들이거나 또는 DMA(direct memory access)를 지원하는 제어기들 또는 주변 장치들을 구비하면, 메모리 제어기러(10)는 캐시 일관성 프로토콜을 구현할 수 있다. 메모리 제어기(10)가 다수의 메모리 버스(907)에 결합되면, 각 메모리 버스(907)가 병행하여 동작되거나, 또는 다른 어드레스 범위들이 다른 메모리 버스(907)들에 맵핑될 수 있다.
1차 버스 브리지(903)는 적어도 하나의 주변 버스(910)에 결합된다. 주변 장치들이나 부가 버스 브리지들과 같은 각종 장치들이 주변 버스(910)에 결합될 수 있다. 이들 장치는, 기억장치 제어기(911), 기타(miscellaneous) I/O 장치(914), 2차 버스 브리지(915), 다중매체 프로세서(918), 및 레거시 장치 인터페이스(920)를 구비할 수 있다. 1차 버스 브리지(903)는 하나 이상의 특수 목적 고속 포트들(922)에 접속될 수도 있다. 퍼스널 컴퓨터에서, 예를 들면, 특수 목적 포트는 고성능 비디오 카드를 처리 시스템(900)에 결합시키는데 사용되는 AGP(Accelerated Graphics Port)일 수 있다.
기억장치 제어기(911)는 하나 이상의 기억 장치들(913)을 기억 버스(912)를 통해 주변 버스(910)에 결합시킨다. 예를 들면, 기억장치 제어기(911)는 SCSI 제어기일 수 있고 기억 장치들(913)은 SCSI 디스크들일 수 있다. I/O 장치(914)는 임의 종류의 주변장치일 수 있다. 예를 들면, I/O 장치(914)는 이더넷 카드와 같은 로컬 에어리어 네트워크 인터페이스일 수 있다. 2차 버스 브리지는 부가 장치들을 다른 버스를 통해 처리 시스템에 인터페이스시키는데 사용될 수 있다. 예를 들면, 2차 버스 브리지는 USB 장치들(917)을 처리 시스템(900)에 결합시키는데 사용되는 USB(universal serial port) 제어기일 수 있다. 다중매체 프로세서(918)는, 스피커들(919)과 같은 하나의 부가 장치에 결합될 수도 있는, 사운드카드, 비디오 캡쳐 카드, 또는 임의의 다른 종류의 다중매체 인터페이스일 수 있다. 레거시 장치 인터페이스(920)는, 레거시 장치들, 예를 들면, 오래된 스타일의 키보드들 과 마우스들을 처리 시스템(900)에 결합시키는데 사용될 수 있다.
도 7에 도시된 처리 시스템(900)은 본 발명이 사용될 수 있는 처리 시스템의 일례일 뿐이다. 도 7이 퍼스널 컴퓨터나 워크스테이션과 같은 범용 컴퓨터에 특히 적합한 처리 아키텍쳐를 도시하였지만, 잘 알려진 변형들이 이루어져 다양한 용도의 사용에 보다 적합하게 되도록 처리 시스템(900)을 구성할 수 있다는 것을 인식하여야 한다. 예를 들면, 처리를 필요로 하는 다수의 전자 장치들은 메모리 컴포넌트들(908) 및/또는 메모리 장치들(902)에 결합된 CPU(901)에 의존하는 심플러 아키텍쳐를 이용하여 구현될 수 있다. 이들 전자 장치들은, 오디오/비디오 프로세서들과 리코더들, 게이밍 콘솔들, 디지털 텔레비젼 세트들, 유선이나 무선 전화기들, 내비게이션 장치들(GPS(global positioning system) 및/또는 관성(inertial) 내비게이션을 포함), 및 디지털 카메라들과/또는 리코더들을 구비할 수 있지만, 이것으로 한정되는 것은 아니다. 변형들은, 예를 들면, 불필요한 컴포넌트들의 제거, 특수 장치들이나 회로들의 부가, 및/또는 다수의 장치의 탑재를 포함할 수 있다.
본 발명이 본 발명의 특정 실시예들에 대해서 설명되었지만, 당업자에게는 다수의 그밖의 변화들과 변형들과 그밖의 사용들이 분명하게 될 것이다. 따라서, 본 발명은 명세서 내의 구체적인 설명에 의해서 뿐만 아니라, 첨부된 특허청구의 범위에 의해서 한정되는 것이 바람직하다.
본 발명은, 메모리 액세스 요청에서의 충돌과 지연을 최소화하기 위하여 순차로 수신된 DRAM 액세스 요청의 순서를 재배치하는 한편, 요청이 처음에 수신된 것과 동일한 순서로 요청된 정보를 요청 유닛들에게 리턴함으로써, 종래 기술에서 확인된 문제를 해결하였다.

Claims (54)

  1. 메모리 제어기에 있어서,
    원 수신된 순서로 적어도 한 요청자로부터 복수의 메모리 액세스 요청들을 수신하는 입력 큐;
    상기 복수의 메모리 액세스 요청들이 배열될 수 있고, 시퀀스된 순서로 상기 복수의 메모리 액세스 요청들을 저장하는 것인, 시퀀스 매트릭스;
    상기 시퀀스 매트릭스에 복수의 메모리 액세스 요청들의 타이밍 시퀀스를 배열하기 위한 시퀀싱 유닛;
    상기 시퀀싱 유닛에 의해 상기 시퀀스 매트릭스에 배열된 메모리 액세스 요청들의 시퀀스 중에서 충돌 혹은 지연이 발생하게 될지 여부를 검출하는 충돌 검출기- 상기 충돌 검출기는 충돌 혹은 지연이 검출될 때 상기 시퀀싱 유닛이 상기 시퀀스 매트릭스 내에서 상기 저장된 요청들의 시퀀스된 순서를 재배열하도록, 검출된 충돌 혹은 지연을 상기 시퀀싱 유닛에 보고하며, 상기 충돌 혹은 지연은 상기 시퀀스 매트릭스의 상기 메모리 액세스 요청들 중 하나와 상기 시퀀스 매트릭스에 배열된 상기 메모리 액세스 요청들의 시퀀스 중 제2 메모리 액세스 요청과의 비교 또는 상기 시퀀스 매트릭스에 사전에 시퀀싱되어 있었던 복수의 미실행의(non-executed) 메모리 액세스 요청들 중 하나와의 비교로부터 발생한다-;
    상기 메모리 액세스 요청들로부터 복수의 명령들이 추출되는 실행 큐- 각 메모리 액세스 요청은 독출 혹은 기입 명령, 및 데이터 제어 명령들을 포함하고, 복 수의 명령들은 상기 시퀀스 매트릭스에 의해 결정된 실행 순서로 배열되어 있고, 상기 실행 순서는 메모리 액세스 요청으로부터의 데이터 제어 명령이 이전의 메모리 액세스 요청으로부터의 독출 혹은 기입 명령이 실행될 수도 있는 동안에 실행되도록 또한 배열되어 있으며 상기 메모리 액세스 요청의 상기 독출 혹은 기입 명령이 상기 이전의 메모리 액세스 요청의 상기 독출 혹은 기입 명령 이후에 실행되도록 또한 배열되어 있다-;
    상기 실행 순서대로 상기 실행 큐로부터 상기 메모리 액세스 요청들의 실행 후에 상기 메모리 액세스 요청들의 상기 원 수신된 순서를 추적하여, 요청된 데이터를, 상기 메모리 액세스 요청들의 상기 원 수신된 순서로 상기 적어도 한 요청자에 리턴하는 독출 리턴 큐; 및
    상기 데이터가 상기 연관된 액세스 요청의 상기 요청자에 리턴될 때까지 메모리로부터 읽은 요청된 데이터를 보유하는 리턴 데이터 버퍼
    를 포함하며,
    상기 제어기는 복수의 메모리 클록 속도를 갖는 메모리와 인터페이스하도록 구성되는, 메모리 제어기.
  2. 제1항에 있어서, 메모리 액세스 요청들을 적어도 독출 혹은 기입 명령들, 및 데이터 제어 명령들로 파싱하는 명령 파서(parcer);
    각각의 액세스 요청에 대한 데이터 제어 명령들 및 상기 독출 혹은 기입 명령들을 상기 실행 큐에 배열하는 명령 시퀀서를 더 포함하는, 메모리 제어기.
  3. 제2항에 있어서, 실행을 위해 상기 실행 큐로부터 한번에 적어도 한 명령을 선택하는 명령 선택기를 더 포함하는, 메모리 제어기.
  4. 제3항에 있어서, 고정된 시간 간격 동안 선택되는 명령들의 수는 상기 명령 선택기에 공급되는 명령 선택 클록 신호에 따르는 것인, 메모리 제어기.
  5. 제1항에 있어서, 상기 검출기는 상기 시퀀스 매트릭스에 배열된 상기 메모리 액세스 요청들의 시퀀스 또는 상기 복수의 미실행 메모리 액세스 요청들로부터 발생하는 잠재적 뱅크 비지 상태를 검출할 수 있는 것인, 메모리 제어기.
  6. 제1항에 있어서, 상기 검출기는 상기 시퀀스 매트릭스에 배열된 상기 메모리 액세스 요청들의 시퀀스 또는 상기 복수의 미실행 메모리 액세스 요청들로부터 발생하는 잠재적 페이지 충돌 상태를 검출할 수 있는 것인, 메모리 제어기.
  7. 제1항에 있어서, 상기 검출기는 상기 시퀀스 매트릭스에 배열된 상기 메모리 액세스 요청들의 시퀀스 또는 상기 복수의 미실행 메모리 액세스 요청들로부터 발생하는 잠재적 페이지 상실 상태를 검출할 수 있는 것인, 메모리 제어기.
  8. 메모리 제어기에 있어서,
    복수의 요청자들로부터 독출 요청들 및/또는 기입요청들을 포함하는 것인 복수의 메모리 액세스 요청 신호들을 수신하며, 상기 요청자들로부터 요청들이 수신되었던 순서에 대응하는 시퀀스로 상기 메모리 액세스 요청 신호들을 수신하는 것인, 시퀀싱 유닛;
    상기 시퀀스에서 시간적으로 근접한 미실행 요청들간 검출된 메모리 액세스 충돌들에 기초하여 상기 메모리 액세스 요청 신호들의 시퀀스를 재배열하며, 그럼으로써 상기 재배열된 시퀀스로 상기 메모리 액세스 요청들의 실행이 수행되게 하는 재배열 유닛;
    상기 메모리 액세스 요청들로부터 복수의 명령들을 추출하고 상기 복수의 명령들을 실행하는 실행 유닛- 각 메모리 액세스 요청은 독출 혹은 기입 명령, 및 데이터 제어 명령들을 포함하고, 상기 복수의 명령들은 상기 재배열된 시퀀스에 대응하여 실행 순서로 배열되어 있으며, 상기 실행 순서는 메모리 액세스 요청으로부터의 데이터 제어 명령이 이전의 메모리 액세스 요청으로부터의 독출 혹은 기입 명령이 실행될 수도 있는 동안에 실행되도록 그리고 또한 상기 이전의 메모리 액세스 요청의 상기 독출 혹은 기입 명령이 실행된 후에 상기 메모리 액세스 요청의 상기 독출 혹은 기입 명령이 실행되도록 또한 배열되어 있다-; 및
    상기 실행되는 독출요청들의 순서를 상기 요청들이 원래 수신되었던 순서로 다시 정하여, 상기 실행된 독출 요청들에 의해 얻어진 데이터가 상기 재순서화된 시퀀스로 상기 요청자들에 리턴되게 하는, 재순서화 유닛
    을 포함하며,
    상기 제어기는 복수의 메모리 클록 속도를 갖는 메모리와 인터페이스하도록 구성되는, 메모리 제어기.
  9. 제8항에 있어서, 상기 재배열 유닛은 상기 시퀀스에서 시간적으로 근접한 미실행 요청들간 검출된 뱅크 비지 상태를 피하도록 메모리 액세스 요청들의 시퀀스를 재배열하는 것인, 메모리 제어기.
  10. 제8항에 있어서, 상기 재배열 유닛은 상기 시퀀스에서 시간적으로 근접한 미실행 요청들간 검출된 뱅크 비지 상태 동안에 액세스하는데 사용될 수 있게 하기 위해 메모리 뱅크를 대기함으로써 야기되는 지연을 최소화되도록 메모리 액세스 요청들의 시퀀스를 재배열하는 것인, 메모리 제어기.
  11. 제8항에 있어서, 상기 재배열 유닛은 상기 시퀀스에서 시간적으로 근접한 미실행 요청들간 검출된 뱅크 비지 상태를 피하기 위해서 메모리 액세스 요청들의 시퀀스를 재배열하는 것인, 메모리 제어기.
  12. 제8항에 있어서, 상기 재배열 유닛은 상기 시퀀스에서 시간적으로 근접한 미실행 요청들간 검출된 페이지 충돌 상태 동안 액세스하는데 준비되게 하기 위해서 메모리 뱅크를 대기함으로써 야기되는 지연을 최소화하도록 메모리 액세스 요청들의 시퀀스를 재배열하는 것인, 메모리 제어기.
  13. 제8항에 있어서, 상기 재배열 유닛은 상기 시퀀스에서 시간적으로 근접한 미실행 요청들간 검출된 페이지 상실 상태 동안 액세스하는데 준비되게 하기 위해서 메모리 뱅크를 대기함으로써 야기되는 지연을 최소화하도록 메모리 액세스 요청들의 시퀀스를 재배열하는 것인, 메모리 제어기.
  14. 메모리 제어기에 있어서,
    복수의 메모리 액세스 요청들을 도착 순서로 저장하는 입력회로;
    상기 저장된 메모리 액세스 요청들을 메모리 액세스 요청 실행 순서로 재배열하는 것으로, 상기 저장된 메모리 액세스 요청들의 순서로 있는 메모리 액세스 충돌의 검출에 근거하여 상기 저장된 메모리 액세스 요청들의 순서를 상기 실행순서로 재배열하는, 메모리 액세스 요청 재배열 회로- 상기 메모리 액세스 충돌은 상기 복수의 메모리 액세스 요청들 중 하나와 제2 미실행 저장된 메모리 액세스 요청과의 비교로부터 발생하고, 각 메모리 액세스 요청은 독출 혹은 기입 명령, 및 데이터 제어 명령들을 포함하며, 상기 메모리 액세스 요청 재배열 회로는 메모리 액세스 요청으로부터의 데이터 제어 명령이 이전의 메모리 액세스 요청으로부터의 독출 혹은 기입 명령이 실행되기 전에 실행되도록 배열하고 상기 메모리 액세스 요청의 상기 독출 혹은 기입 명령을 상기 이전의 메모리 액세스 요청으로부터의 상기 독출 혹은 기입 명령의 상기 실행 이후에 실행되도록 또한 배열한다- ; 및
    메모리 액세스 요청들을 상기 실행순서로 출력하는 발송회로
    를 포함하며,
    상기 재배열 회로는 제1 클록 속도로 동작하며 복수의 서로 다른 메모리 클록 속도를 갖는 메모리와 인터페이스하도록 구성되는, 메모리 제어기.
  15. 제14항에 있어서, 상기 재배열 회로는 상기 미실행 저장된 메모리 액세스 요청으로부터 발생하는 뱅크 비지 충돌의 검출에 근거하여 상기 저장된 메모리 액세스 요청들을 재배열하는 것인, 메모리 제어기.
  16. 제15항에 있어서, 상기 재배열 회로는 상기 검출된 뱅크 비지 충돌을 피하기 위해 상기 저장된 메모리 액세스 요청들을 재배열하는 것인, 메모리 제어기.
  17. 제15항에 있어서, 상기 재배열 회로는 상기 메모리 액세스 요청들이 메모리 액세스 요청들의 상기 저장된 순서로 실행하기로 되었을 경우 상기 검출된 뱅크 비지 충돌 동안 액세스하는데 사용될 수 있게 되도록, 메모리 뱅크를 대기함으로써 야기되는 지연을 최소화하기 위해 상기 저장된 메모리 액세스 요청들을 재배열하는 것인, 메모리 제어기.
  18. 제14항에 있어서, 상기 재배열 회로는 상기 저장된 메모리 액세스 요청들의 순서로 페이지 충돌 상태의 검출에 근거하여 상기 저장된 메모리 액세스 요청들을 재배열하며, 상기 페이지 충돌 상태는 상기 미실행 저장된 메모리 액세스 요청들로 부터 발생하는, 메모리 제어기.
  19. 제18항에 있어서, 상기 재배열 회로는 상기 검출된 페이지 충돌을 피하기 위해서 상기 저장된 메모리 액세스 요청들을 재배열하는 것인, 메모리 제어기.
  20. 제18항에 있어서, 상기 재배열 회로는 상기 저장된 메모리 액세스 요청들의 순서로, 검출된 페이지 상실 상태 동안에 액세스에 준비되도록, 메모리 뱅크를 대기함으로써 야기하게 되는 지연을 최소화하기 위해 상기 저장된 메모리 액세스 요청들을 재배열하는 것인, 메모리 제어기.
  21. 제14항에 있어서, 상기 재배열 회로는 상기 저장된 메모리 액세스 요청들의 순서로 페이지 상실 상태의 검출에 근거하여 상기 저장된 메모리 액세스 요청들을 재배열하며, 상기 페이지 상실 상태는 상기 미실행 저장된 메모리 액세스 요청들로부터 발생하는, 메모리 제어기.
  22. 제21항에 있어서, 상기 재배열 회로는 상기 저장된 메모리 액세스 요청들의 순서로, 검출된 페이지 상실 상태 동안에 액세스에 준비되도록, 메모리 뱅크를 대기함으로써 야기하게 되는 지연을 최소화하기 위해 상기 저장된 메모리 액세스 요청들을 재배열하는 것인, 메모리 제어기.
  23. 제14항에 있어서, 상기 저장된 메모리 액세스 요청들을 상기 실행순서로 실행하는 실행 회로; 및
    실행 후에 상기 저장된 메모리 액세스 요청들의 도착 순서를 추적하는 추적 회로를 더 포함하는, 메모리 제어기.
  24. 제23항에 있어서, 상기 추적회로는 도착순서로 각각의 위치에 대응하여 태그를 메모리 액세스 요청에 연관시키는 것인, 메모리 제어기.
  25. 제23항에 있어서, 상기 추적회로는 상기 메모리 액세스 요청들을 실행시 각각의 메모리 위치들로부터 독출한 데이터를 편제하여, 버퍼에 배열된 데이터가 원 도착 순서로 상기 메모리 제어기로부터 전송될 수 있게 하는 것이는 버퍼를 포함하는, 메모리 제어기.
  26. 메모리 액세스 동작을 제어하는 방법에 있어서,
    수신된 시퀀스로 복수의 메모리 액세스 요청들을 수신하는 단계;
    상기 복수의 메모리 액세스 요청들 중 하나를 상기 복수의 메모리 액세스 요청들로부터 제2 미실행 메모리 액세스 요청과 비교함으로써 상기 시퀀스에서 시간적으로 근접한 미실행 요청들 간에 메모리 액세스 충돌들을 검출하는 단계;
    상기 검출 결과에 기초하여 상기 요청들의 시퀀스를 재배열하는 단계;
    상기 재배열된 순서로 상기 메모리 액세스 요청들을 실행하는 단계;
    각 메모리 액세스 요청을 적어도 독출 혹은 기입 명령, 및 데이터 제어 명령으로 파싱하는 단계;
    상기 요청들의 시퀀스를 재배열하는 단계에서, 요청에 대한 데이터 제어 명령이 이전의 요청으로부터의 독출 혹은 기입 명령이 실행되기 전에 실행되도록 상기 재배열된 시퀀스로 각 요청에 대해 상기 독출 혹은 기입 명령, 및 상기 데이터 제어 명령을 따로따로 배열하며 상기 요청의 상기 독출 혹은 기입 명령을 상기 이전의 요청으로부터의 상기 독출 혹은 기입 명령의 상기 실행 이후에 실행되도록 배열하는 단계; 및
    메모리 클록 속도에서의 실행을 위해 상기 재배열된 시퀀스로부터 한 번에 적어도 하나의 명령을 선택하는 단계
    를 포함하는, 메모리 액세스 동작 제어방법.
  27. 제26항에 있어서, 상기 메모리 액세스 요청들은 데이터를 지정된 메모리 주소들에 기입하는 기입요청들 및 데이터를 지정된 메모리 주소들로부터 독출하는 독출 요청들을 포함하는, 메모리 액세스 동작 제어방법.
  28. 제27항에 있어서, 상기 독출 요청들의 실행에 의해 상기 지정된 메모리 주소들로부터 얻어진 데이터를, 수신된 시쿼스에 원 순서로, 상기 메모리 제어기로부터 출력하는 단계를 더 포함하는, 메모리 액세스 동작 제어방법.
  29. 제27항에 있어서, 실행 후에 메모리 액세스 요청들의 상기 수신된 시퀀스를 추적하는 단계; 및
    상기 재배열된 시퀀스로 상기 독출된 요청들의 실행에 의해 얻어진 요청된 데이터를 각각의 요청자들에 전송하는 단계를 더 포함하고, 상기 요청된 데이터는 상기 각각의 독출 요청들의 수신된 시퀀스에 대응하는 순서로 상기 각각의 요청자들에 전송되는 것인, 메모리 액세스 동작 제어방법.
  30. 제29항에 있어서, 상기 수신된 시퀀스의 추적은, 상기 요청들의 시퀀스를 재배열한 후에, 상기 독출요청들이 원래 수신되었던 시퀀스를 나타내는 각각의 독출 요청에 태그를 연관시키는 것을 포함하는, 메모리 액세스 동작 제어방법.
  31. 제29항에 있어서, 상기 수신된 시퀀스의 추적은, 상기 요청들의 시퀀스를 재배열한 후에, 각각의 독출 요청의 실행시 얻어지는 데이터를 저장할 버퍼 위치를 할당하는 것을 포함하며, 상기 할당된 버퍼 위치들은 상기 독출 요청들이 원래 수신되었던 시퀀스를 나타내는 것인, 메모리 액세스 동작 제어방법.
  32. 제26항에 있어서, 상기 검출단계는 상기 수신된 시퀀스의 현 위치에서 가장 최근에 수신된 메모리 액세스 요청들을 실행시 충돌이 야기되는지를 검출하도록 수행되는 것인, 메모리 액세스 동작 제어방법.
  33. 제32항에 있어서, 상기 검출단계는 상기 수신된 시퀀스의 현 위치에서 가장 최근에 수신된 메모리 액세스 요청들을 실행시 뱅크 비지 충돌이 야기되는지를 검출하도록 수행되는 것인, 메모리 액세스 동작 제어방법.
  34. 제33항에 있어서, 상기 재배열 단계는 상기 뱅크 비지 충돌을 피하도록 수행되는 것인, 메모리 액세스 동작 제어방법.
  35. 제33항에 있어서, 상기 재배열 단계는 검출된 뱅크 비지 충돌 동안 액세스에 사용이 될 수 있게, 메모리 뱅크를 대기함으로써 야기되는 지연을 최소화하도록 수행되는 것인, 메모리 액세스 동작 제어방법.
  36. 제32항에 있어서, 상기 검출단계는 상기 수시된 시퀀스에 현 위치에서 가장 최근에 수신된 메모리 액세스 요청을 실행시 페이지 충돌이 야기되는지를 검출하도록 수행되는 것인, 메모리 액세스 동작 제어방법.
  37. 제36항에 있어서, 상기 재배열 단계는 상기 페이지 충돌을 피하도록 수행되는 것인, 메모리 액세스 동작 제어방법.
  38. 제36항에 있어서, 상기 재배열 단계는 검출된 페이지 충돌 동안 액세스에 준비되도록 메모리 뱅크를 대기함으로써 야기되는 지연을 최소화하도록 수행되는 것 인, 메모리 액세스 동작 제어방법.
  39. 제26항에 있어서, 상기 검출단계는 상기 수신된 시퀀스의 현 위치에서 가장 최근에 수신된 메모리 액세스 요청을 실행시 지연이 야기되는지를 검출하도록 수행되는 것인, 메모리 액세스 동작 제어방법.
  40. 제39항에 있어서, 상기 검출단계는 상기 수신된 시퀀스의 현 위치에서 가장 최근에 수신된 메모리 액세스 요청을 실행시 페이지 상실이 야기되는지를 검출하도록 수행되는 것인, 메모리 액세스 동작 제어방법.
  41. 제40항에 있어서, 상기 재배열 단계는 검출된 페이지 손실 동안 액세스에 준비되도록 메모리 뱅크를 대기함으로써 야기되는 지연을 최소화하도록 수행되는 것인, 메모리 액세스 동작 제어방법.
  42. 제26항에 있어서, 상기 검출단계는 상기 수신된 시퀀스의 현 위치에서 가장 먼저 수신된 메모리 액세스 요청을 실행시 충돌이 야기되는지를 검출하도록 수행되는 것인, 메모리 액세스 동작 제어방법.
  43. 제42항에 있어서, 상기 검출단계는 상기 수신된 시퀀스의 현 위치에서 가장 먼저 수신된 메모리 액세스 요청을 실행시 뱅크 비지 충돌이 야기되는지를 검출하 도록 수행되는 것인, 메모리 액세스 동작 제어방법.
  44. 제43항에 있어서, 상기 재배열 단계는 상기 뱅크 비지 충돌을 피하도록 수행되는, 메모리 액세스 동작 제어방법.
  45. 제43항에 있어서, 상기 재배열 단계는 검출된 뱅크 비지 충돌 동안 액세스에 사용이 될 수 있도록 메모리 뱅크를 대기함으로써 야기되는 지연을 최소화하도록 수행되는 것인, 메모리 액세스 동작 제어방법.
  46. 제42항에 있어서, 상기 검출단계는 상기 수신된 시퀀스의 현 위치에서 가장 먼저 수신된 메모리 액세스 요청을 실행시 페이지 충돌이 야기되는지를 검출하도록 수행되는 것인, 메모리 액세스 동작 제어방법.
  47. 제46항에 있어서, 상기 재배열 단계는 상기 페이지 충돌을 피하도록 수행되는, 메모리 액세스 동작 제어방법.
  48. 제46항에 있어서, 상기 재배열 단계는 검출된 페이지 충돌 동안 액세스에 준비되도록 메모리 뱅크를 대기함으로써 야기되는 지연을 최소화하도록 수행되는 것인, 메모리 액세스 동작 제어방법.
  49. 제42항에 있어서, 상기 수신된 시퀀스에서 상기 가장 먼저 수신된 메모리 액세스 요청에 관하여 충돌이 검출되었다면, 상기 재배열 단계는 상기 가장 먼저 수신된 메모리 액세스 요청을, 대체로 상기 시퀀스에서 가장 최근에 수신된 메모리 액세스 요청 다음의 위치에 대응하는 상기 시퀀스의 끝으로 이동시키는 것을 포함하는, 메모리 액세스 동작 제어방법.
  50. 제26항에 있어서, 상기 검출단계는 상기 수신된 시퀀스의 현 위치에서 가장 먼저 수신된 메모리 액세스 요청을 실행시 지연이 야기되는지를 검출하도록 수행되는 것인, 메모리 액세스 동작 제어방법.
  51. 제50항에 있어서, 상기 검출단계는 상기 수신된 시퀀스의 현 위치에서 가장 먼저 수신된 메모리 액세스 요청을 실행시 페이지 상실이 야기되는지를 검출하도록 수행되는 것인, 메모리 액세스 동작 제어방법.
  52. 제51항에 있어서, 상기 재배열 단계는 검출된 페이지 상실 동안 액세스에 준비되도록 메모리 뱅크를 대기함으로써 야기되는 지연을 최소화하도록 수행되는 것인, 메모리 액세스 동작 제어방법.
  53. 제50항에 있어서, 상기 수신된 시퀀스에서 상기 가장 먼저 수신된 메모리 액세스 요청에 관하여 충돌이 검출되었다면, 상기 재배열 단계는 상기 가장 먼저 수 신된 메모리 액세스 요청을, 대체로 상기 시퀀스에서 가장 최근에 수신된 메모리 액세스 요청 다음의 위치에 대응하는 상기 시퀀스의 끝으로 이동시키는 것을 포함하는, 메모리 액세스 동작 제어방법.
  54. 프로세서 시스템에 있어서,
    프로세서;
    상기 프로세서와 데이터를 교환하기 위한 적어도 하나의 메모리 디바이스; 및
    상기 프로세서로부터 상기 적어도 한 메모리 디바이스로의 메모리 액세스 요청들을 관리하는 메모리 제어기를 포함하며, 상기 메모리 제어기는,
    복수의 요청자들로부터, 독출요청들 및/또는 기입요청들, 및 데이터 제어 명령들을 포함하는 복수의 메모리 액세스 요청 신호들을 수신하며, 상기 요청자들로부터 요청들이 수신되었던 순서에 대응하는 시퀀스로 상기 메모리 액세스 요청 신호들을 수신하는 것인, 시퀀싱 유닛,
    상기 시퀀스에서 시간적으로 근접한 미실행 요청들간에 검출된 메모리 액세스 충돌들에 기초하여 상기 메모리 액세스 요청 신호들의 시퀀스를 재배열하고- 상기 메모리 액세스 충돌들은 메모리 액세스 요청 신호를 미실행 메모리 액세스 요청 신호들과 비교함으로써 검출된다-, 이에 의해서 상기 메모리 액세스 요청들의 실행이 상기 재배열된 시퀀스로 수행되게 하는 것인, 재배열 유닛,
    상기 재배열된 시퀀스로 상기 메모리 액세스 요청들을 실행하는 실행유닛- 이 실행유닛은 메모리 액세스 요청 신호로부터의 데이터 제어 명령을, 이전의 메모리 액세스 요청 신호로부터의 독출 혹은 기입 명령을 실행하기 전에 실행하도록 구성되며 또한 이어서 상기 메모리 액세스 요청의 상기 독출 혹은 기입 명령을 상기 이전의 메모리 액세스 요청으로부터의 상기 독출 혹은 기입 명령의 상기 실행 이후에 실행한다-, 및
    실행되는 독출 요청들을, 상기 요청들이 원래 수신되었던 순서로 순서를 다시 정하고, 이에 의해서, 상기 실행되는 독출 요청들에 의해 얻어진 데이터가 상기 재순서화된 시퀀스로 상기 요청자들에 리턴되게 하는, 재순서화 유닛을 포함하는 것이며,
    상기 제어기는 복수의 메모리 클록 속도들 중 하나를 갖는 메모리와 인터페이스하도록 구성되는, 프로세서 시스템.
KR1020067017435A 2002-05-14 2003-05-14 아웃 오브 오더 dram 시퀀서 KR100724557B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/143,896 US7149857B2 (en) 2002-05-14 2002-05-14 Out of order DRAM sequencer
US10/143,896 2002-05-14

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR10-2004-7018434A Division KR20050005481A (ko) 2002-05-14 2003-05-14 아웃 오브 오더 dram 시퀀서

Publications (2)

Publication Number Publication Date
KR20060108357A true KR20060108357A (ko) 2006-10-17
KR100724557B1 KR100724557B1 (ko) 2007-06-04

Family

ID=29418478

Family Applications (2)

Application Number Title Priority Date Filing Date
KR10-2004-7018434A KR20050005481A (ko) 2002-05-14 2003-05-14 아웃 오브 오더 dram 시퀀서
KR1020067017435A KR100724557B1 (ko) 2002-05-14 2003-05-14 아웃 오브 오더 dram 시퀀서

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR10-2004-7018434A KR20050005481A (ko) 2002-05-14 2003-05-14 아웃 오브 오더 dram 시퀀서

Country Status (9)

Country Link
US (4) US7149857B2 (ko)
EP (1) EP1540485B1 (ko)
JP (2) JP2005525652A (ko)
KR (2) KR20050005481A (ko)
CN (1) CN100527107C (ko)
AT (1) ATE456094T1 (ko)
AU (1) AU2003232136A1 (ko)
DE (1) DE60331081D1 (ko)
WO (1) WO2003098392A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101121902B1 (ko) * 2010-06-22 2012-03-20 성균관대학교산학협력단 변경된 메모리 주소를 추적하는 트랜잭션 메모리 시스템 및 방법

Families Citing this family (97)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6694490B2 (en) * 2002-07-10 2004-02-17 Hewlett-Packard Development Company, L.P. DIMM and method for producing a DIMM
ATE504446T1 (de) 2002-12-02 2011-04-15 Silverbrook Res Pty Ltd Totdüsenausgleich
US7418706B1 (en) * 2003-05-08 2008-08-26 Teradota Us, Inc. Rescheduling table scan transactions
US7240141B2 (en) * 2004-04-09 2007-07-03 Broadcom Corporation Programmable inter-virtual channel and intra-virtual channel instructions issuing rules for an I/O bus of a system-on-a-chip processor
US20060026371A1 (en) * 2004-07-30 2006-02-02 Chrysos George Z Method and apparatus for implementing memory order models with order vectors
US7451282B2 (en) * 2005-03-09 2008-11-11 Dolphin Interconnect Solutions North America Inc. System and method for storing a sequential data stream
US9286198B2 (en) 2005-04-21 2016-03-15 Violin Memory Method and system for storage of data in non-volatile media
US8200887B2 (en) 2007-03-29 2012-06-12 Violin Memory, Inc. Memory management system and method
US8452929B2 (en) * 2005-04-21 2013-05-28 Violin Memory Inc. Method and system for storage of data in non-volatile media
US9384818B2 (en) 2005-04-21 2016-07-05 Violin Memory Memory power management
US8028186B2 (en) * 2006-10-23 2011-09-27 Violin Memory, Inc. Skew management in an interconnection system
US8402201B2 (en) 2006-12-06 2013-03-19 Fusion-Io, Inc. Apparatus, system, and method for storage space recovery in solid-state storage
US8265169B2 (en) * 2006-12-29 2012-09-11 Intel Corporation Video block memory read request translation and tagging
US8028257B2 (en) * 2007-03-01 2011-09-27 International Business Machines Corporation Structure for data bus bandwidth scheduling in an FBDIMM memory system operating in variable latency mode
US11010076B2 (en) 2007-03-29 2021-05-18 Violin Systems Llc Memory system with multiple striping of raid groups and method for performing the same
US9632870B2 (en) 2007-03-29 2017-04-25 Violin Memory, Inc. Memory system with multiple striping of raid groups and method for performing the same
US8015375B1 (en) 2007-03-30 2011-09-06 Emc Corporation Methods, systems, and computer program products for parallel processing and saving tracking information for multiple write requests in a data replication environment including multiple storage devices
US7996599B2 (en) * 2007-04-25 2011-08-09 Apple Inc. Command resequencing in memory operations
US7925796B1 (en) 2007-05-03 2011-04-12 Emc Corporation Methods, systems, and computer program products for performing an input/output (I/O) operation that includes a virtual drain
US8145976B1 (en) 2007-05-14 2012-03-27 Marvell International Ltd. Error correcting
US8001338B2 (en) * 2007-08-21 2011-08-16 Microsoft Corporation Multi-level DRAM controller to manage access to DRAM
US7870351B2 (en) * 2007-11-15 2011-01-11 Micron Technology, Inc. System, apparatus, and method for modifying the order of memory accesses
US7836226B2 (en) 2007-12-06 2010-11-16 Fusion-Io, Inc. Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment
US8156415B1 (en) * 2007-12-26 2012-04-10 Marvell International Ltd. Method and system for command queuing in disk drives
US8180975B2 (en) * 2008-02-26 2012-05-15 Microsoft Corporation Controlling interference in shared memory systems using parallelism-aware batch scheduling
CN101520749B (zh) * 2008-02-29 2012-08-29 瑞昱半导体股份有限公司 管理存储器的方法
US8370717B1 (en) 2008-04-08 2013-02-05 Marvell International Ltd. Method and apparatus for flexible buffers in an XOR engine
CN102037514A (zh) * 2008-05-21 2011-04-27 Nxp股份有限公司 包括重排网络的数据处理系统
CN101727398B (zh) * 2008-10-31 2012-07-11 西安奇维测控科技有限公司 经信息序列化实现闪存控制器管理数据存储与还原的方法
US8601205B1 (en) * 2008-12-31 2013-12-03 Synopsys, Inc. Dynamic random access memory controller
JP2010182092A (ja) * 2009-02-05 2010-08-19 Mitsubishi Electric Corp バス装置
KR101581679B1 (ko) * 2009-03-18 2015-12-31 삼성전자주식회사 저장 장치 및 저장 장치의 버퍼 메모리 관리 방법
US8199759B2 (en) * 2009-05-29 2012-06-12 Intel Corporation Method and apparatus for enabling ID based streams over PCI express
WO2010144587A2 (en) 2009-06-12 2010-12-16 Violin Memory, Inc. Memory system having persistent garbage collection
WO2011019494A1 (en) 2009-08-11 2011-02-17 Marvell World Trade Ltd. Controller for reading data from non-volatile memory
US8644140B2 (en) * 2009-09-09 2014-02-04 Mellanox Technologies Ltd. Data switch with shared port buffers
CN102253917B (zh) * 2010-05-19 2014-03-19 联芯科技有限公司 一种spi控制器及数据发送方法
US9021192B1 (en) * 2010-09-21 2015-04-28 Western Digital Technologies, Inc. System and method for enhancing processing of memory access requests
US8699491B2 (en) * 2011-07-25 2014-04-15 Mellanox Technologies Ltd. Network element with shared buffers
JP5704012B2 (ja) * 2011-08-01 2015-04-22 富士通セミコンダクター株式会社 プロセッサ、及びプロセッサの制御方法
KR101292309B1 (ko) * 2011-12-27 2013-07-31 숭실대학교산학협력단 반도체칩 및 메모리 제어방법, 그리고 그 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 기록매체
CN102567246B (zh) * 2011-12-29 2014-08-13 中国人民解放军国防科学技术大学 一种支持操作乱序执行的与非型快闪存储控制器
KR101721273B1 (ko) * 2012-01-16 2017-03-29 한국전자통신연구원 Sdio 인터페이스를 사용한 비순차적 데이터 전송 장치 및 방법
US20130185491A1 (en) * 2012-01-17 2013-07-18 Skymedi Corporation Memory controller and a method thereof
US9251086B2 (en) 2012-01-24 2016-02-02 SanDisk Technologies, Inc. Apparatus, system, and method for managing a cache
US9348775B2 (en) * 2012-03-16 2016-05-24 Analog Devices, Inc. Out-of-order execution of bus transactions
US8775762B2 (en) * 2012-05-07 2014-07-08 Advanced Micro Devices, Inc. Method and apparatus for batching memory requests
KR20140028618A (ko) * 2012-08-29 2014-03-10 삼성전자주식회사 쓰기 페일을 줄이는 메모리 장치, 이를 포함하는 메모리 시스템 및 그 쓰기 방법
US9047092B2 (en) * 2012-12-21 2015-06-02 Arm Limited Resource management within a load store unit
US9582440B2 (en) 2013-02-10 2017-02-28 Mellanox Technologies Ltd. Credit based low-latency arbitration with data transfer
US8989011B2 (en) 2013-03-14 2015-03-24 Mellanox Technologies Ltd. Communication over multiple virtual lanes using a shared buffer
EP2992437A4 (en) * 2013-04-30 2017-01-11 Hewlett-Packard Enterprise Development LP Coalescing memory access requests
KR102120823B1 (ko) 2013-08-14 2020-06-09 삼성전자주식회사 비휘발성 메모리 장치의 독출 시퀀스 제어 방법 및 이를 수행하는 메모리 시스템
US9641465B1 (en) 2013-08-22 2017-05-02 Mellanox Technologies, Ltd Packet switch with reduced latency
US9548960B2 (en) 2013-10-06 2017-01-17 Mellanox Technologies Ltd. Simplified packet routing
US20150199134A1 (en) * 2014-01-10 2015-07-16 Qualcomm Incorporated System and method for resolving dram page conflicts based on memory access patterns
US9325641B2 (en) 2014-03-13 2016-04-26 Mellanox Technologies Ltd. Buffering schemes for communication over long haul links
US9875185B2 (en) 2014-07-09 2018-01-23 Intel Corporation Memory sequencing with coherent and non-coherent sub-systems
US9584429B2 (en) 2014-07-21 2017-02-28 Mellanox Technologies Ltd. Credit based flow control for long-haul links
US9569119B2 (en) * 2014-09-04 2017-02-14 National Instruments Corporation Self-addressing memory
GB2550829B (en) 2014-10-14 2021-09-22 Advanced Risc Mach Ltd Transaction response modification within interconnect circuitry
KR20160049200A (ko) * 2014-10-27 2016-05-09 삼성전자주식회사 데이터 저장 장치의 작동 방법, 이를 포함하는 모바일 컴퓨팅 장치, 및 이의 작동 방법
CN104375963B (zh) * 2014-11-28 2019-03-15 上海兆芯集成电路有限公司 基于缓存一致性的控制系统和方法
US9740646B2 (en) * 2014-12-20 2017-08-22 Intel Corporation Early identification in transactional buffered memory
WO2016135618A1 (en) * 2015-02-26 2016-09-01 Strato Scale Ltd. Ordering schemes for network and storage i/o requests for minimizing workload idle time and inter-workload interference
GB2539435B8 (en) * 2015-06-16 2018-02-21 Advanced Risc Mach Ltd Data processing memory access control, in which an owning process for a region of memory is specified independently of privilege level
JP2017027479A (ja) * 2015-07-24 2017-02-02 富士通株式会社 データ読出し方法及び情報処理システム
CN111475438B (zh) * 2015-08-12 2021-12-10 北京忆恒创源科技股份有限公司 提供服务质量的io请求处理方法及其装置
JP2017204170A (ja) * 2016-05-12 2017-11-16 キヤノン株式会社 画像処理装置及び画像処理方法
GB2551351B (en) * 2016-06-14 2019-05-08 Imagination Tech Ltd Executing memory requests out of order
US10353819B2 (en) * 2016-06-24 2019-07-16 Qualcomm Incorporated Next line prefetchers employing initial high prefetch prediction confidence states for throttling next line prefetches in a processor-based system
US11029881B2 (en) 2016-06-29 2021-06-08 Sony Corporation Memory controller, memory system, and information processing system
KR20180069960A (ko) * 2016-12-15 2018-06-26 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작 방법
KR20180090039A (ko) * 2017-02-02 2018-08-10 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
JP2018205859A (ja) * 2017-05-31 2018-12-27 キヤノン株式会社 メモリコントローラとその制御方法
CN107770620B (zh) * 2017-09-21 2020-10-30 广州视源电子科技股份有限公司 请求信息响应方法、系统及可读存储介质
US10419265B2 (en) 2017-11-29 2019-09-17 Bank Of America Corporation Request processing system using a combining engine
US10425456B2 (en) 2017-11-29 2019-09-24 Bank Of America Corporation Request processing system using a splitting engine
CN108335719A (zh) * 2018-02-24 2018-07-27 上海兆芯集成电路有限公司 性能评估装置及性能评估方法
US11874782B1 (en) * 2018-07-20 2024-01-16 Robert Gezelter Fast mass storage access for digital computers
CN109683963A (zh) * 2018-12-10 2019-04-26 深圳忆联信息系统有限公司 基于多命令输入的重排序输出方法、装置和计算机设备
TWI701554B (zh) * 2018-12-13 2020-08-11 英屬維京群島商鯨鏈先進股份有限公司 適用於雜湊演算法的電路系統
US10951549B2 (en) 2019-03-07 2021-03-16 Mellanox Technologies Tlv Ltd. Reusing switch ports for external buffer network
CN110083387B (zh) 2019-04-19 2021-11-12 上海兆芯集成电路有限公司 使用轮询机制的处理系统及其访存方法
CN110058931B (zh) 2019-04-19 2022-03-22 上海兆芯集成电路有限公司 用以任务调度的处理系统及其加速方法
CN110083388B (zh) * 2019-04-19 2021-11-12 上海兆芯集成电路有限公司 用于调度的处理系统及其访存方法
CN110032453B (zh) 2019-04-19 2022-05-03 上海兆芯集成电路有限公司 用以任务调度与分配的处理系统及其加速方法
CN110046053B (zh) 2019-04-19 2021-11-12 上海兆芯集成电路有限公司 用以分配任务的处理系统及其访存方法
US11093404B2 (en) * 2019-10-14 2021-08-17 EMC IP Holding Company LLC Efficient pre-fetching on a storage system
GB2588618B (en) * 2019-10-29 2022-04-20 Advanced Risc Mach Ltd Methods and apparatus for issuing memory access commands
US11481152B2 (en) * 2019-12-30 2022-10-25 Micron Technology, Inc. Execution of commands addressed to a logical block
CN113377277A (zh) * 2020-03-09 2021-09-10 伊姆西Ip控股有限责任公司 管理存储器的方法、设备和计算机程序产品
US11727421B1 (en) 2020-09-21 2023-08-15 Cboe Exchange, Inc System and method for implementing a system execution delay in response to liquidity removal for resting orders
US11558316B2 (en) 2021-02-15 2023-01-17 Mellanox Technologies, Ltd. Zero-copy buffering of traffic of long-haul links
US20230104485A1 (en) * 2021-02-18 2023-04-06 Micron Technology, Inc. Improved implicit ordered command handling
CN114036096B (zh) * 2021-11-04 2024-05-03 珠海一微半导体股份有限公司 一种基于总线接口的读控制器
US11973696B2 (en) 2022-01-31 2024-04-30 Mellanox Technologies, Ltd. Allocation of shared reserve memory to queues in a network device

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3735354A (en) 1972-04-07 1973-05-22 Sperry Rand Corp Multiplexed memory request interface
JP3157507B2 (ja) * 1990-03-14 2001-04-16 日本電気株式会社 データ処理装置
US5537572A (en) 1992-03-31 1996-07-16 Vlsi Technology, Inc. Cache controller and method for dumping contents of a cache directory and cache data random access memory (RAM)
US5461718A (en) 1992-04-24 1995-10-24 Digital Equipment Corporation System for sequential read of memory stream buffer detecting page mode cycles availability fetching data into a selected FIFO, and sending data without aceessing memory
JP3010947B2 (ja) 1992-11-26 2000-02-21 日本電気株式会社 メモリアクセス制御装置
US5664153A (en) 1993-04-21 1997-09-02 Intel Corporation Page open/close scheme based on high order address bit and likelihood of page access
US5388247A (en) 1993-05-14 1995-02-07 Digital Equipment Corporation History buffer control to reduce unnecessary allocations in a memory stream buffer
US5630099A (en) 1993-12-10 1997-05-13 Advanced Micro Devices Non-volatile memory array controller capable of controlling memory banks having variable bit widths
US5638374A (en) * 1995-03-15 1997-06-10 Hughes Electronics Enhanced transaction reservation
US5701434A (en) 1995-03-16 1997-12-23 Hitachi, Ltd. Interleave memory controller with a common access queue
US5630096A (en) 1995-05-10 1997-05-13 Microunity Systems Engineering, Inc. Controller for a synchronous DRAM that maximizes throughput by allowing memory requests and commands to be issued out of order
US6204864B1 (en) 1995-06-07 2001-03-20 Seiko Epson Corporation Apparatus and method having improved memory controller request handler
US5692165A (en) 1995-09-12 1997-11-25 Micron Electronics Inc. Memory controller with low skew control signal
US5872822A (en) 1995-10-26 1999-02-16 Mcdata Corporation Method and apparatus for memory sequencing
US6061759A (en) 1996-02-09 2000-05-09 Apex Semiconductor, Inc. Hidden precharge pseudo cache DRAM
US5907863A (en) 1996-08-16 1999-05-25 Unisys Corporation Memory control unit using preloaded values to generate optimal timing of memory control sequences between different memory segments
US6272600B1 (en) * 1996-11-15 2001-08-07 Hyundai Electronics America Memory request reordering in a data processing system
JPH10191236A (ja) 1996-12-25 1998-07-21 Nec Corp 画像処理装置及び画像データメモリ配置方法
US5848025A (en) 1997-06-30 1998-12-08 Motorola, Inc. Method and apparatus for controlling a memory device in a page mode
US5983325A (en) 1997-12-09 1999-11-09 Advanced Micro Devices, Inc. Dataless touch to open a memory page
US6052134A (en) 1997-12-22 2000-04-18 Compaq Computer Corp. Memory controller and method for dynamic page management
US6052756A (en) 1998-01-23 2000-04-18 Oki Electric Industry Co., Ltd. Memory page management
US6295592B1 (en) 1998-07-31 2001-09-25 Micron Technology, Inc. Method of processing memory requests in a pipelined memory controller
US6434684B1 (en) 1998-09-03 2002-08-13 Micron Technology, Inc. Method and apparatus for coupling signals across different clock domains, and memory device and computer system using same
US6108795A (en) 1998-10-30 2000-08-22 Micron Technology, Inc. Method for aligning clock and data signals received from a RAM
US6212611B1 (en) * 1998-11-03 2001-04-03 Intel Corporation Method and apparatus for providing a pipelined memory controller
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
US6385708B1 (en) * 1998-11-16 2002-05-07 Infineon Technologies Ag Using a timing-look-up-table and page timers to determine the time between two consecutive memory accesses
US6212598B1 (en) 1998-11-30 2001-04-03 Micron Technology, Inc. Controlling a paging policy based on a requestor characteristic
US6295586B1 (en) 1998-12-04 2001-09-25 Advanced Micro Devices, Inc. Queue based memory controller
US6181638B1 (en) 1998-12-07 2001-01-30 Micron Technology, Inc. Method for receiving data from a synchronous random access memory
US6389529B1 (en) 1999-06-25 2002-05-14 International Business Machines Corporation Method for alternate preferred time delivery of load data
JP2001022529A (ja) * 1999-06-30 2001-01-26 Internatl Business Mach Corp <Ibm> ディスクドライブ装置及びその制御方法
US6330647B1 (en) 1999-08-31 2001-12-11 Micron Technology, Inc. Memory bandwidth allocation based on access count priority scheme
US6275913B1 (en) 1999-10-15 2001-08-14 Micron Technology, Inc. Method for preserving memory request ordering across multiple memory controllers
JP2001154913A (ja) * 1999-11-30 2001-06-08 Hitachi Ltd 主記憶制御装置
US6735677B1 (en) 2001-04-30 2004-05-11 Lsi Logic Corporation Parameterizable queued memory access system
US7242690B2 (en) 2002-03-05 2007-07-10 Hewlett-Packard Development Company, L.P. System for performing input processing on a data packet

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101121902B1 (ko) * 2010-06-22 2012-03-20 성균관대학교산학협력단 변경된 메모리 주소를 추적하는 트랜잭션 메모리 시스템 및 방법

Also Published As

Publication number Publication date
KR100724557B1 (ko) 2007-06-04
EP1540485B1 (en) 2010-01-20
US7620789B2 (en) 2009-11-17
KR20050005481A (ko) 2005-01-13
WO2003098392A2 (en) 2003-11-27
US9904489B2 (en) 2018-02-27
US20070101075A1 (en) 2007-05-03
WO2003098392A3 (en) 2005-04-21
CN1669011A (zh) 2005-09-14
CN100527107C (zh) 2009-08-12
US20100100670A1 (en) 2010-04-22
ATE456094T1 (de) 2010-02-15
EP1540485A2 (en) 2005-06-15
AU2003232136A1 (en) 2003-12-02
JP2008204487A (ja) 2008-09-04
JP4742116B2 (ja) 2011-08-10
US20140223116A1 (en) 2014-08-07
US7149857B2 (en) 2006-12-12
JP2005525652A (ja) 2005-08-25
AU2003232136A8 (en) 2003-12-02
DE60331081D1 (de) 2010-03-11
US8639902B2 (en) 2014-01-28
US20030217239A1 (en) 2003-11-20

Similar Documents

Publication Publication Date Title
KR100724557B1 (ko) 아웃 오브 오더 dram 시퀀서
EP2223217B1 (en) System, apparatus, and method for modifying the order of memory accesses
KR100610730B1 (ko) 메모리 액세스 대기시간을 감소시키기 위한 메모리 액세스스케쥴링 방법 및 장치
US6026464A (en) Memory control system and method utilizing distributed memory controllers for multibank memory
US7127574B2 (en) Method and apparatus for out of order memory scheduling
US6591323B2 (en) Memory controller with arbitration among several strobe requests
US6615326B1 (en) Methods and structure for sequencing of activation commands in a high-performance DDR SDRAM memory controller
TWI253563B (en) Read-write switching method for a memory controller
US5684978A (en) Synchronous DRAM controller with memory access commands timed for optimized use of data bus
US6549991B1 (en) Pipelined SDRAM memory controller to optimize bus utilization
US6836831B2 (en) Independent sequencers in a DRAM control structure
JP3384770B2 (ja) コマンド・スタッキングを有する高帯域幅で狭い入出力のメモリ装置
US20040059880A1 (en) Low latency memory access method using unified queue mechanism
JPH1131072A (ja) メモリ先行ロード装置

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
G170 Re-publication after modification of scope of protection [patent]
FPAY Annual fee payment

Payment date: 20130503

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20140502

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20150430

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20160427

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20170504

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20180518

Year of fee payment: 12