KR20170026116A - 고성능 트랜잭션 기반 메모리 시스템 - Google Patents

고성능 트랜잭션 기반 메모리 시스템 Download PDF

Info

Publication number
KR20170026116A
KR20170026116A KR1020160086235A KR20160086235A KR20170026116A KR 20170026116 A KR20170026116 A KR 20170026116A KR 1020160086235 A KR1020160086235 A KR 1020160086235A KR 20160086235 A KR20160086235 A KR 20160086235A KR 20170026116 A KR20170026116 A KR 20170026116A
Authority
KR
South Korea
Prior art keywords
memory
transaction
commands
queue
memory device
Prior art date
Application number
KR1020160086235A
Other languages
English (en)
Other versions
KR102401594B1 (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 KR20170026116A publication Critical patent/KR20170026116A/ko
Application granted granted Critical
Publication of KR102401594B1 publication Critical patent/KR102401594B1/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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • 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/1647Handling requests for interconnection or transfer for access to memory bus based on arbitration with interleaved bank access
    • 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
    • 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/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • 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
    • 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/0658Controller construction arrangements
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Dram (AREA)
  • Memory System (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

메모리 시스템은 마스터 컨트롤러, 호스트 컴퓨터에 대한 인터페이스, 및 슬레이브 컨트롤러와 연결되도록 구성된 링크 버스를 포함한다. 마스터 컨트롤러는 어드레스 맵핑 디코더, 트랜잭션 큐, 및 스케쥴러를 포함한다. 상기 어드레스 맵핑 디코더는 상기 슬레이브 컨트롤러에 연결된 메모리 장치의 어드레스 맵핑 정보를 디코딩하도록 구성된다. 상기 마스터 컨트롤러의 상기 스케쥴러는 상기 메모리 장치의 상기 어드레스 맵핑 정보를 이용하여 상기 트랜잭션 큐 내에서 상기 호스트 컴퓨터로부터 수신된 메모리 트랜잭션 요청들을 재정리하도록 구성된다. 상기 메모리 시스템은 상기 마스터 컨트롤러의 상기 트랜잭션 큐 내에서 상기 펜딩 메모리 트랜잭션 요청들에 근거하여 확장 오픈 페이지 정책을 채용한다.

Description

고성능 트랜잭션 기반 메모리 시스템{high performance transaction-based memory systems}
본 발명은 컴퓨터용 메모리 시스템에 관한 것으로, 보다 구체적으로, 고성능 트랜잭션 기반 메모리 시스템에 관한 것이다.
동기 DRAM(SDRAM)은 메모리 컨트롤러에 동기화되는 인터페이스를 가지고, 컴퓨터의 시스템 버스의 속도로 메모리 컨트롤러에 동기적으로 응답한다. 컴퓨터의 클럭 신호는 메모리 컨트롤러의 인컴잉 커맨드들을 파이프라인(pipeline)처리하는 내부 유한 상태 머시인(finite state machine: FSM)을 구동하는데 사용된다. SDRAM의 데이터 스토리지는 여러 뱅크들로 분할된다. 그러한 분할은 메모리 컨트롤러가 여러 메모리 억세스 커맨드들을 동시에 처리할 수 있도록 해준다. 상기 메모리 억세스 커맨드들은 분리 뱅크들 간에 내삽(interleave)되어 있다. 상기 분할은 비동기 DRAM보다 더 높은 데이터 억세스 속도를 제공한다.
트랜잭션 기반 (transaction-based) 메모리 시스템은 고 메모리 용량, 고 대역폭, 및 설계 유연성에 대한 관심을 최근에 끌어오고 있다. 트랜잭션 기반 메모리 시스템의 예들은 버퍼 온 보드 타입(예를 들어 Intel® Scalable Memory Buffer: SMB), 하이브리드 메모리 큐브(예를 들어, Micron® Hybrid Memory Cube: HMC), 및 HP® Gen-Z® 을 포함한다.
동기 메모리 시스템과는 달리, 트랜잭션 기반 메모리 시스템에서의 메모리 컨트롤러는 DRAMs과 직접적으로 통신하지 않는다. 대신에, 컴퓨터 시스템의 메모리 컨트롤러(즉, 마스터 컨트롤러)는 DRAM 컨트롤러(예를 들어 슬레이브 컨트롤러)와 포인트 대 포인트 링크 버스를 통해 비동기적으로 통신한다. 상기 DRAM 컨트롤러는 메모리 커맨드들(예를 들어 DDR 메모리 커맨드들은 JEDEC에 표준화됨)을 이용하여 메모리 채널(예를 들어 DDR 메모리 채널)을 통해 DRAMs과 통신한다. 표준 메모리 커맨드들의 예들은 액티브, 리드, 라이트, 프리차아지, 및 리프레시를 포함한다. 상기 액티브 커맨드는 특정한 뱅크내의 한 행(row)을 활성화시킨다. 상기 리드 및 라이트 커맨드들은 활성화된 행에 대해 리드 및 라이트 버스트(burst)를 개시한다. 상기 프리차아지 커맨드는 특정한 뱅크 내의 활성화된 행을 닫는다. 상기 리프레시 커맨드는 리프레시 동작을 시작한다. 상기 메모리 뱅크들은 리프레시 커맨드가 들어올 때 프리차아지된 상태이다.
전형적인 트랜잭션 기반 메모리 시스템 설계에서, 마스터 컨트롤러와 슬레이브 컨트롤러는 느슨하게 결합되어 있고, 소량의 정보를 교환한다. 느슨히 결합된 마스터 및 슬레이브 컨트롤러들은 메모리 시스템의 설계 유연성 및 효율적 관리를 제공한다. 그러나, 마스터 컨트롤러와 슬레이브 컨트롤러 간의 느슨한 결합은 비 최적화 성능을 초래할 수 있다. 예를 들어, 랭크/뱅크 인터리빙 및 행 버퍼 관리는 슬레이브 컨트롤러 단독으로 처리된다. 파워 및 비용 문제에 기인하여, 슬레이브 컨트롤러는 소형 버퍼 및 간단한 로직을 포함하는 제한된 자원을 가질 수 있다. 슬레이브 컨트롤러에 대한 제한된 자원은 컨트롤러의 스케쥴링 및 행 버퍼 관리 능력을 제한할 수 있다. 마스터 컨트롤러는 한편, 슬레이브 컨트롤러의 제한된 능력을 극복하여 메모리 시스템의 성능을 잠재적으로 개선할 수 있는 충분한 자원들 및 버퍼들을 가질 수 있다.
본 발명이 해결하고자 하는 기술적 과제는, 고성능 트랜잭션 기반 메모리 시스템 및 방법을 제공함에 있다.
실시 예에 따라, 마스터 컨트롤러, 호스트 컴퓨터에 대한 인터페이스, 및 슬레이브 컨트롤러와 연결되도록 구성된 링크 버스를 포함하는 메모리 시스템이 개시된다. 마스터 컨트롤러는 어드레스 맵핑 디코더, 트랜잭션 큐, 및 스케쥴러를 포함한다. 상기 어드레스 맵핑 디코더는 상기 슬레이브 컨트롤러에 연결된 메모리 장치의 어드레스 맵핑 정보를 디코딩하도록 구성된다. 상기 마스터 컨트롤러의 상기 스케쥴러는 상기 메모리 장치의 상기 어드레스 맵핑 정보를 이용하여 상기 트랜잭션 큐 내에서 상기 호스트 컴퓨터로부터 수신된 메모리 트랜잭션 요청들을 재정리하도록 구성된다. 상기 메모리 시스템은 상기 마스터 컨트롤러의 상기 트랜잭션 큐 내에서 상기 펜딩 메모리 트랜잭션 요청들에 근거하여 확장 오픈 페이지 정책을 채용한다.
일 실시 예에 따라, 메모리 모듈은 디코더, 스케쥴러, 커맨드 큐, 및 리드 리턴 큐를 포함하는 슬레이브 컨트롤러를 포함하고, 또한, 메모리 장치를 포함한다. 상기 디코더는 메모리 트랜잭션 요청들을 수신하고, 상기 메모리 트랜잭션 요청들에 근거하여 메모리 커맨드들을 생성하고, 상기 커맨드 큐 내에 상기 메모리 커맨드들을 두도록 구성된다. 상기 디코더는 복수의 플래그들을 수신하고, 상기 복수의 플래그들에 근거한 상기 커맨드 큐 내에서 상기 메모리 커맨드들을 재정리하도록 더 구성된다.
일 실시 예에 따라, 메모리 시스템의 성능을 개선하는 방법은, 슬레이브 컨트롤러로부터 메모리 장치의 어드레스 맵핑 정보를 링크 버스를 통해 수신하고, 호스트 컴퓨터로부터 메모리 트랜잭션 요청들을 수신하고, 트랜잭션 큐 내에 상기 메모리 트랜잭션 요청들을 두고, 및 상기 메모리 장치의 상기 어드레스 맵핑 정보를 이용하여 상기 트랜잭션 큐 내에서 상기 메모리 트랜잭션 요청들을 재정리하는 것을 포함한다.
일 실시 예에 따라, 메모리 시스템의 성능을 개선하는 방법은, 메모리 장치의 어드레스 맵핑 정보를 링크 버스를 통해 마스터 컨트롤러로 송신하고, 메모리 트랜잭션 요청들을 수신하고, 상기 메모리 트랜잭션 요청들을 디코딩 하고 상기 디코딩된 메모리 트랜잭션 요청들에 근거하여 메모리 커맨드들을 생성하고, 커맨드 큐 내에 상기 메모리 커맨드들을 두고, 복수의 플래그들을 수신하고, 및 상기 복수의 플래그들에 근거한 상기 커맨드 큐 내에서 상기 메모리 커맨드들을 재정리하는 것을 포함한다.
구현의 다양한 신규 상세들 및 이벤트들의 조합을 포함하는 상기 및 다른 바람직한 특징들은 첨부도면들을 참조로 보다 상세히 설명될 것이며 클레임들 내에서 지적될 것이다. 여기에 설명되는 특별한 시스템들 및 방법들이 제한되는 것이 아니라 도시의 목적으로 보여진다는 것이 이해될 것이다. 본 분야의 통상의 지식을 가진 자에 의해 이해될 수 있는 바로서, 여기에 개시된 원리들 및 특징들은 본 개시의 범위를 벗어남이 없이 다양하고 수많은 실시 예들에 적용될 수 있다.
본 발명의 실시 예에 따르면, 고성능 트랜잭션 기반 메모리 시스템 및 방법이 용이하게 구현된다.
도 1은 전형적인 트랜잭션 기반 메모리 시스템의 블록도이다.
도 2a는 마스터 버퍼와 슬레이브 버퍼 간 메모리 맵핑의 비교 예를 보여준다.
도 2b는 본 발명의 일 실시 예에 따라 마스터 버퍼와 슬레이브 버퍼 간 예시적 메모리 맵핑을 보여준다.
도 3a는 슬레이브 컨트롤러의 페이지 오픈 정책의 비교 예를 보여준다.
도 3b는 본 발명의 일 실시 예에 따라 본 발명의 트랜잭션 기반 메모리 시스템의 페이지 오픈 정책의 예를 보여준다.
도 4는 본 발명의 일 실시 예에 따라 예시적 트랜잭션 기반 메모리 시스템을 보여준다.
도면들은 반드시 일정한 비율로 도시된 것은 아니며, 유사한 구조 또는 기능의 구성 요소는 도면 전체에 걸쳐 도시의 목적을 위해 유사한 참조부호로 일반적으로 도시된다. 도면들은 명세서에 설명된 다양한 실시 예들의 설명을 용이하게 하기 위해서만 도시된다. 도면들은 본 명세서에 개시된 기술적 사상의 모든 측면을 설명하는 것은 아니며, 청구항들의 범위를 제한하지 않는다.
본 명세서에 개시된 특징들 및 지침(teaching)들은 각각 개별적으로 활용되거나 트랜잭션 기반 메모리 시스템 및 그 구동 방법을 제공하기 위해 다른 특징들 및 지침들과 함께 활용될 수 있다. 이러한 추가의 특징들 및 지침들을 별도로 혹은 조합적으로 많이 활용하는 대표적인 예들은 첨부된 도면들을 참조로 더욱 상세히 설명될 것이다. 이러한 상세한 설명은 단지 본 분야의 숙련된 자에게 본 지침들의 양태를 실시하기 위한 추가적 상세를 가르치기 위한 의도일 뿐이고, 특허 청구범위를 한정하려는 의도는 아니다. 따라서, 상세한 설명에 있어서, 개시된 특징들의 조합은 가장 넓은 의미에서의 지침을 실시하는 데 필요치 않을 수 있으며, 그 대신에 본 지침의 특히 대표적인 예를 설명하기 위해서만 나타나 있다.
이하의 설명에서, 설명의 목적으로만, 특정 명칭이 본 발명의 완전한 이해를 제공하기 위해 설명된다. 그러나, 이러한 특정 세부 사항들은 본 발명의 개시의 지침들을 실시하는데 요구되지 않음이 당 업자에게 명백할 것이다.
상세한 설명의 일부들은 알고리즘 및 컴퓨터 메모리 내의 데이터 비트에 대한 동작들의 심볼 표현의 측면에서 제공된다. 이들 알고리즘 설명 및 표현은 효과적으로 다른 당 업자에게 작업의 실체를 전달하기 위해 데이터 처리 분야의 당 업자에 의해 사용된다. 알고리즘은 여기에서 및 일반적으로, 소망하는 결과에 이르는 단계들의 자기 일관성시퀀스(self-consistent sequence)인 것으로 안출된다. 상기 단계들은 물리적 양의 물리적 조작이 필요한 것들이다. 일반적으로, 필수적이지 않지만, 이들 양들은 저장, 전달, 결합, 비교 및 달리 조작 될 수 있는 전기 또는 자기 신호들의 형태를 취한다. 이 신호들에 대하여 비트, 값, 엘리먼트, 심볼, 캐릭터, 용어, 숫자 등으로 지칭하는 것이 주로 공통적인 사용의 이유 하에 때때로 편리함을 이해하여야 한다.
그러나, 이들 및 유사한 용어들 모두는 적절한 물리량과 연관되며 단지 이러한 양에 적용되는 편리한 라벨이라는 것임을 유의해야 한다. 특별히 아래의 설명에서 명백하게 달리 언급되지 않는 한, 설명의 전체를 통해 "처리", "컴퓨팅", "계산", "결정", "표시"등과 같은 용어를 활용하는 논의는, 컴퓨터 시스템이나 유사한 전자 컴퓨팅 장치의 작용 및 처리를 지칭하는 것으로 이해된다. 여기서, 작용 및 처리는 컴퓨터 시스템의 레지스터들 및 메모리들 내에서 물리적(전자적) 양으로서 나타나는 데이터를 다른 데이터로 조작 및 변환하는 것을 의미한다. 상기 다른 데이터는 상기 컴퓨터 시스템의 메모리들 또는 레지스터들, 다른 정보 스토리지, 또는 전송 또는 표시 장치들 내에서 물리적 양으로서 유사하게 나타나는 데이터이다.
이러한 다양한 시스템들에 필요한 구조는 이하의 설명에서 나타날 것이다. 다양한 프로그래밍 언어들이 여기에 개시된 바와 같은 발명의 지침을 구현하는데 사용될 수 있다는 것이 이해될 것이다.
또한, 대표적인 실시 예들의 다양한 특징과 종속 청구항들은 본 지침의 추가적 유용한 실시 예를 제공하기 위해 특별히 명시 적으로 열거되지 않은 방식으로 결합될 수 있다. 또한 모든 값 범위 또는 개체 그룹의 표지(indications)는 원 개시의 목적을 위한 것은 물론 청구된 발명의 사상을 특정할 의도로 모든 가능한 중간 값 또는 중간 개체를 나타낸다는 것이 특별히 언급된다. 그리고 도면들 내에 보여지는 구성 요소의 차원 및 형상은 본 발명의 지침이 어떻게 실시되는 지에 대한 이해를 돕기 위해 설계되었을 뿐, 실시 예에 나타낸 차원 및 형상에 한정되지 않는다는 것이 또한 특별히 언급된다.
본 발명은 고성능을 제공할 수 있는 트랜잭션 기반 메모리 시스템 (transaction-based memory system) 및 그 구동 방법을 제공한다. 본 발명의 트랜잭션 기반 메모리 시스템은 느슨히 결합된 마스터 및 슬레이브 컨트롤러 설계에 대한 한계를 극복한다. 즉, 상기 느슨히 결합된 설계에 대한 한계는 메모리 장치의 어드레스 맵핑 정보가 마스터 컨트롤러로 전달되지 않는 것이다. 본 발명의 트랜잭션 기반 메모리 시스템의 마스터 컨트롤러는 전형적으로 슬레이브 컨트롤러에 의해 다루어지는 스케쥴링 및 행 버퍼 관리(scheduling and row buffer management)에 깊게 연관되어 있다. 더 깊은 버퍼 및 보다 복잡한 로직을 가지고, 마스터 컨트롤러는 슬레이브 컨트롤러 단독에 의존하는 것에 비해, 더 나은 스케쥴링 및 메모리 관리 결정을 제공할 수 있다. 특히, 본 발명의 트랜잭션 기반 메모리 시스템은 더 나은 채널/랭크/뱅크 인터리빙(예를 들어 더 높은 병렬성), 및 더 효율적인 행 버퍼 관리(예를 들어 더 많은 페이지 히트수)를, 이하의 예들 및 실시 예들에서 더 상세히 설명되는 바와 같이, 제공한다.
도 1은 전형적인 트랜잭션 기반 메모리 시스템의 블록도이다. 트랜잭션 기반 메모리 시스템(100)은 마스터 컨트롤러(110: 예를 들어 호스트 컨트롤러) 및 슬레이브 컨트롤러(120: 예를 들어 DRAM 컨트롤러)와 메모리 장치(130: 예를 들어 DRAM)를 포함한다. 마스터 컨트롤러(110)는 메모리 장치(130)를 억세스하기 위해 CPU로부터 요청(request)을 수신하고, 상기 요청에 대응되는 상기 CPU에 응답한다. 상기 마스터 컨트롤러(110)는 엔코더(111), 스케쥴러(112), 디코더(113), 트랜잭션 큐(115), 및 리드 리턴 큐(116)를 포함한다.
엔코더(111)는 상기 CPU 요청들을 엔코딩하고, 엔코딩된 요청들을 트랜잭션 큐(115)내에 둔다. 상기 엔코딩된 요청들은 메모리 장치(130)의 어드레스나 어드레스 블록(으로부터/으로)의 메모리 리드 및 메모리 라이트를 포함할 수 있다. 마스터 컨트롤러(110)의 스케쥴러(112)는 상기 요청들을 상기 트랜잭션 큐(115)내에 놓여진 순서대로 패킷화하고, 패킷화된 요청들을, 마스터 컨트롤러(110)와 슬레이브 컨트롤러(120)간의 링크 버스 중 요청 링크를 통해, 상기 슬레이브 컨트롤러(120)로 송신한다.
슬레이브 컨트롤러(120)는 디코더(121), 스케쥴러(122), 패킷타이저(123), 커맨드 큐(125), 및 리드 리턴 큐(126)를 포함한다. 디코더(121)는 상기 요청 링크를 통해 상기 마스터 컨트롤러(110)로부터 수신된 상기 패킷들을 디코딩하고, 대응되는 메모리 커맨드들을 생성하여, 커맨드 큐(125)에 둔다. 스케쥴러(122)는 상기 메모리 커맨드들 및 관련된 메모리 어드레스를 상기 메모리 장치(130)로 송신하고, 메모리 장치(130)로부터 데이터를 수신한다. 슬레이브 컨트롤러(120)는 메모리 장치(130)로부터의 리드 데이터를 상기 리드 리턴 큐(126)에 둔다. 패킷타이저(123)은 상기 메모리 장치(130)로부터 수신된 응답(예를 들어 메모리 어드레스로부터 리드된 데이터)을 패킷화하고, 패킷화된 응답을 상기 마스터 컨트롤러(110)와 슬레이브 컨트롤러(120)간의 링크 버스 중 응답 링크를 통해 상기 마스터 컨트롤러(110)으로 송신한다.
마스터 컨트롤러(110)의 디코더(113)은 상기 응답 링크를 통해 상기 슬레이브 컨트롤러(120)로부터 수신된 상기 패킷들을 디코딩하고, 디코딩된 패킷들을 리드 리턴 큐(116)에 둔다. 상기 디코더(113)는 데이터를, 상기 리드 데이터가 리드 리턴 큐(116)에 놓여진 순서대로, CPU로 송신한다. 마스터 컨트롤러(110)와 슬레이브 컨트롤러(120)간의 통신은 상기 링크 버스를 통한 패킷들의 교환에 대하여 제한된다. 슬레이브 컨트롤러(120)는 DRAM(130)의 어드레스 맵핑 정보를 마스터 컨트롤러(110)와는 공유하지 않으므로, 상기 마스터 컨트롤러(110)의 상기 스케쥴러(112)는, 상기 요청 패킷들을 슬레이브 컨트롤러(120)로 전송 시에, 트랜잭션 큐(115)내에서 펜딩중인 요청들(pending requests)을 프리 스케쥴링할 수 없다.
도 2a는 마스터 버퍼와 슬레이브 버퍼 간 메모리 맵핑의 비교 예를 보여준다. 도 1의 전형적인 트랜잭션 기반 메모리 시스템(100)의 예를 참조하면, 마스터 컨트롤러(110)는 엔코딩된 CPU 요청들(리퀘스트들)을 트랜잭션 큐(115)에 단순히 둔다. 예를 들어, 트랜잭션 큐(115)내의 요청들 및 관련된 메모리 어드레스 및/또는 데이터는 FIFO(first-in first-out)버퍼에 저장된다. 스케쥴러(112)는 엔코딩된 CPU 요청들을 상기 메모리 어드레스 및/또는 데이터와 함께 상기 슬레이브 컨트롤러(120)로 송신한다. 이 때 송신은 상기 FIFO 버퍼 내에 상기 요청들이 놓여진 순서대로 이루어진다. 마스터 컨트롤러(110)는 DRAM(130)의 어드레스 맵핑 정보를 가지지 않으므로, 마스터 컨트롤러(110)는 상기 CPU 요청들을 상기 트랜잭션 큐(115)내에 있는 순서대로, 뱅크 인터리빙 없이 상기 슬레이브 컨트롤러(120)로 송신한다.
마스터 컨트롤러(110)는 마스터 버퍼(201)를 가지며, 슬레이브 컨트롤러(120)는 상기 마스터 버퍼(201)보다는 작은 슬레이브 버퍼(202)를 가진다. 본 예시의 목적을 위해, 마스터 버퍼(201)는 8항목 심(eight-entries deep)이 되도록 보여지고 한번에 8개 요청 큐들만을 저장할 수 있는데 비해, 슬레이브 버퍼(202)는 4항목 심이고 4개 요청 큐들만을 저장할 수 있다. 그러나 상기 마스터 버퍼(201)와 상기 슬레이브 버퍼(202)는 본 발명의 기술적 사상의 범위를 벗어남이 없이 어떤 임의의 버퍼 사이즈로 될 수 있음을 이해할 수 있을 것이다.
마스터 버퍼(201)내의 몇몇 요청들은 동일 뱅크(들)에 대한 맵핑을 포함할 수 있다. 본 예시에서, 마스터 버퍼(201)내의 요청들은 4개의 연속적인 뱅크 0 요청들 및 뒤따르는 뱅크 1, 뱅크, 2, 뱅크 3, 및 뱅크 4 요청들을 포함한다. 여기서, 뱅크 요청들은 리드 요청 혹은 라이트 요청일 수 있다. 마스터 컨트롤러(110)의 스케쥴러(112)는 마스터 버퍼(201)에 놓여진 상기 요청들을 상기 슬레이브 버퍼(202)내의 가용 항목들(entries)의 개수에 근거하여 슬레이브 버퍼(202)로 송신하고, 남은 항목들을 마스터 버퍼(201)내 위쪽으로 밀어 넣는다. 초기에 슬레이브 버퍼(202)는 비어 있으므로, 4개의 연속 뱅크 0 요청들을 포함하는 마스터 버퍼(201)의 첫째(제1)의 4개 버퍼 항목들은 상기 슬레이브 컨트롤러(120)로 송신되고, 슬레이브 버퍼(202)에 놓여진다. 슬레이브 버퍼(202)에서 도착한 상기 요청들은 상기 4개의 연속 뱅크 0 요청들만을 포함하므로, 슬레이브 컨트롤러(120)는 뱅크 인터리빙을 수행하지 못한다. 따라서, 슬레이브 컨트롤러(120)의 한 코어(one core)는 한 행에서 4회에 걸쳐 뱅크 0을 억세스(리드 또는 라이트)하는 한편, 슬레이브 컨트롤러(120)의 다른 코어들은 다른 뱅크들을 억세스 하지 못하는 이른 바 아이들링(idling) 상태로 된다. 이러한 상태는 느린 응답 타임을 유발하는 뱅크 충돌을 초래한다.
마스터 컨트롤러(110)가, 어드레스 맵핑 정보와, 예를 들어 메모리 장치의 인컴잉 요청들의 채널 ID, 랭크 ID, 뱅크 ID, 및 행 ID와 같은 메모리 구성 정보를 가질 때, 마스터 컨트롤러(110)는 CPU 요청들을 재정리(re-order)하고 재정리된(또는 인터리브된) 요청들을 슬레이브 컨트롤러(120)로 송신할 수 있다. 도 2a를 참조하면, 마스터 버퍼(201)는 뱅크 ID 정보를 가지지 않는다. 왜냐하면, 마스터 컨트롤러(110)가 어드레스 맵핑 정보를 갖지 않기 때문이다. 따라서, 마스터 컨트롤러(110)는 요청들이 마스터 버퍼(201)내에 저장되어 있음에 따라 상기 요청들을 단순히 보내기만 한다. 본 발명의 일 실시 예에 따라, 어드레스 맵핑 정보에 근거하여 마스터 컨트롤러(110)에 의한 재정리는 보다 효율적인 뱅크 인터리빙을 획득할 수 있다.
도 2b는 본 발명의 일 실시 예에 따라 마스터 버퍼와 슬레이브 버퍼 간 예시적 메모리 맵핑을 보여준다. 도 2a의 예시와 유사하게, 마스터 버퍼(251)는 4개의 연속적인 뱅크 0 요청들 및 뒤따르는 뱅크 1, 뱅크, 2, 뱅크 3, 및 뱅크 4 요청들을 포함한다. 초기에 슬레이브 버퍼(252)는 비어 있으므로, 마스터 컨트롤러(110)는 마스터 버퍼(251)의 4개의 요청들을 슬레이브 컨트롤러(120)로 송신하도록 허락된다. 메모리 장치의 어드레스 맵핑 정보를 알면, 마스터 컨트롤러(110)는 마스터 버퍼(251)내의 상기 첫째(제1)의 4개 요청들 대신에 제1 뱅크 0 요청, 및 뱅크 1, 뱅크 2, 뱅크 3 요청들을 포함하도록 마스터 버퍼(251)내에서 상기 요청들을 재정리할 수 있다. 이 경우에, 슬레이브 컨트롤러(120)는 슬레이브 컨트롤러(120)의 가용 코어들을 이용하여 뱅크 0, 뱅크 1, 뱅크 2, 및 뱅크 3을 동시에 억세스함에 의해 뱅크 인터리빙을 수행할 수 있다.
일 실시 예에 따라, 마스터 컨트롤러와 슬레이브 컨트롤러는 시스템 부팅 시에 어드레스 맵핑 선택들을 교환할 수 있고, 사용자는 어떤 어드레스 맵핑 스킴을 사용할지를 결정할 수 있다. 어드레스 맵핑 스킴은 시스템이 리부팅되거나 사용자가 어드레스 맵핑 스킴을 즉석에서(on the fly) 재구성할 때까지 변경되지 않을 수 있다. 시스템 부팅 시에 어드레스 맵핑 스킴을 선택할 경우, 메모리 시스템은 메모리 컨트롤러 내에 하드웨어 디코더를 구성할 수 있다. 하드웨어 디코더는 인컴잉 어드레스를 DRAM 내의 채널, 랭크, 뱅크, 및 행 IDs에 대응되는 물리 어드레스로 디코딩할 수 있다.
클로즈(close) 페이지는 매 메모리 억세스(예를 들어 리드 및 라이트) 이후 에 프리차아지 커맨드로 시작한다. 클로즈 페이지는 행 버퍼 미스(misses)에 대한 레이턴시(latency)를 줄이지만 행 버퍼 히트(hits)에 대한 레이턴시를 증가시킨다. 왜냐하면, 클로즈된 페이지는 행 버퍼 히트의 경우에 다시 오픈되어야 하기 때문이다. 오픈 페이지들은 미스될 때까지 프리차아지를 지연한다. 오픈 페이지들은 행 버퍼 히트에 대한 레이턴시를 줄이지만 행 버퍼 미스에 대한 레이턴시를 증가시킬 수 있다. 행 버퍼 미스 및 히트의 율에 의존하여, 슬레이브 컨트롤러는 클로즈, 오픈, 및 프리차아지를 결정한다.
본 발명의 트랜잭션 기반 메모리 시스템은 성숙된 오픈 페이지 정책(mature open page policy)을 제공한다. 전형적인 메모리 시스템에서, 슬레이브 컨트롤러는 슬레이브 버퍼를 스캔하고 지역성(locality)이 불명이면 페이지를 클로즈한다. 즉, 페이지 오픈 및 클로즈는, 오픈 페이지로부터 이익을 얻을 수 있는 펜딩 요청이 될 수가 있더라도, 슬레이브 버퍼의 지역성에 의해 오로지 결정된다. 슬레이브 컨트롤러는 전형적으로 소규모의 슬레이브 버퍼를 가지기 때문에, 슬레이브 컨트롤러는 마스터 컨트롤러로부터의 향후의 요청을 예견하여 성숙된 오픈 페이지 정책을 적용할 수 없다. 이러한 의미에서, 슬레이브 컨트롤러에 의해서만 전적으로 구현되고 슬레이브 버퍼의 크기에 제한되는 오픈 페이지 정책은 오픈 페이지의 조기(premature) 클로즈를 자주 초래한다.
일 실시 예에 따라, 마스터 컨트롤러는 마스터 버퍼(251)를 스캔할 수 있고 페이지 오픈 및 클로즈에 관한 정보를 슬레이브 컨트롤러로 제공한다. 마스터 컨트롤러는 지역성이 마스터 버퍼(251)내에서 미확인되는 경우에 슬레이브 컨트롤러가 오픈 페이지를 닫도록 한다. 마스터 컨트롤러는 더 깊은(deeper) 버퍼를 가지고, 앞으로 더 많은 요청들을 예견하므로, 마스터 컨트롤러는 더 효율적인 오픈 페이지 정책 및 행 버퍼 관리를 제공할 수 있다.
도 3a는 슬레이브 컨트롤러의 페이지 오픈 정책의 비교 예를 보여준다. 각 요청은 뱅크 번호 및 행 버퍼 번호로 나타나 있다. 예를 들어, Bn:Rm 은 뱅크 번호 n 과 행 버퍼 번호 m 을 표시한다. 각 뱅크는 전용의 행 버퍼를 가진다. 한 뱅크 내에 여러 행들이 있다. 행을 오픈함에 의해, 데이터는 행에서 뱅크와 관련된 행 버퍼로 놓여진다. 행 버퍼는 DRAM 내에서 빠른 캐시(cache)로서 기능한다. 행 억세스는 DRAM의 뱅크의 한 행(페이지)을 활성화하고 활성화된 행(오픈 페이지)로부터의 데이터를 행 버퍼 내에 복사한다. 컬럼 억세스는 활성화된 행의 컬럼을 선택하고 활성화된 행과 선택된 컬럼에 대응되는 블록의 데이터를 반환한다. 프리차아지는 활성화된 행을 억세스하기 전에 DRAM의 뱅크를 차아지(charge)한다. 리프레시는 DRAM 내의 데이터를 유지하기 위해 주기적으로 DRAM을 리드하고 라이트한다.
마스터 컨트롤러는 마스터 버퍼(201)내의 트랜잭션 큐들의 일부를 슬레이브 컨트롤러로 보내고, 슬레이브 컨트롤러는 수신된 큐들을 슬레이브 버퍼(202)내에 둔다(저장한다). 초기에, 예시적으로 4 항목 심을 갖는 슬레이브 버퍼(202)가 비어 있으므로, 마스터 버퍼(201)내의 4개의 큐들은 슬레이브 버퍼(202)로 복사된다. 슬레이브 버퍼(202)에 복사된 큐들은 B0:R0에 대한 하나의 큐만을 포함하므로, 슬레이브 컨트롤러는 B0:R0에 대한 페이지를 오픈하고, B0:R0에 대한 큐가 완료된 후에 오픈된 페이지를 클로즈한다. 마스터 컨트롤러는 슬레이브 컨트롤러와는 정보(예를 들어, 마스터 버퍼 201내의 큐들)을 공유하지 않으므로, 슬레이브 컨트롤러는, 오픈된 페이지에 대한 더 많은 큐들이 슬레이브 버퍼(202)내에 대기하지 못할 경우에, 오픈된 페이지를 클로즈한다. 이 경우에, 페이지 오픈을 유지하는 결정 및 페이지를 클로즈하는 결정은 슬레이브 버퍼(202)내에 가용될 수 있는 큐들에 근거하여 슬레이브 컨트롤러의 로직에 의해 전적으로 결정된다.
도 3b는 본 발명의 일 실시 예에 따라 본 발명의 트랜잭션 기반 메모리 시스템의 페이지 오픈 정책의 예를 보여준다. 본 발명의 트랜잭션 기반 메모리는 마스터 버퍼(251)내의 큐들을 참조하여 페이지 오픈 정책을 확장할 수 있다. 초기에, 슬레이브 버퍼(252)는 비어 있으므로, 마스터 버퍼(251)내의 4개의 큐들은 슬레이브 버퍼(252)내로 복사된다. 슬레이브 버퍼(252)에 복사된 큐들은 B0:R0의 페이지에 대한 하나의 큐만을 포함한다. 그렇지만, 마스터 버퍼(251)는 B0:R0에 대한 페이지의 펜딩(pending) 큐들을 포함한다. 따라서, 마스터 컨트롤러는 B0:R0에 대한 페이지 오픈을 유지하기 위해 명령(예를 들어 플래그)을 슬레이브 컨트롤러로 보낼 수 있다. 왜냐하면 동일 페이지에 대한 펜딩 큐들이 뒤따를 수 있기 때문이다. 마스터 컨트롤러의 명령에 응답하여, 슬레이브 컨트롤러는 동일 페이지에 대한 대기 큐들이 도착할 때까지 페이지 오픈을 유지할 수 있고, 대응되는 메모리 트랜잭션은 완료된다. 확장된 페이지 오픈 정책을 위해 마스터 컨트롤러와 슬레이브 컨트롤러 간에 교환되는 플래그들은 도 4를 참조로 더욱 구체적으로 설명될 것이다.
도 4는 본 발명의 일 실시 예에 따라 예시적 트랜잭션 기반 메모리 시스템을 보여준다. 도 1의 메모리 시스템(100)과 유사하게, 트랜잭션 기반 메모리 시스템(400)은 마스터 컨트롤러(410: 예를 들어 메모리 컨트롤러), 슬레이브 컨트롤러(420: 예를 들어 DRAM 컨트롤러), 및 메모리 장치(430: 예를 들어 DRAM)을 포함한다. 마스터 컨트롤러(410)는 메모리 장치(430)를 억세스하기 위해 CPU로부터 요청을 수신하고, 상기 요청에 대응되는 CPU에 응답한다.
비록, 마스터 컨트롤러(410), 슬레이브 컨트롤러(420), 및 메모리 장치(430)가 분리된 블록들로 나타나 있지만, 마스터 컨트롤러(410), 슬레이브 컨트롤러(420), 및 메모리 장치(430)은 다양한 방법으로 구현되고 구성될 수 있다. 일 실시 예에 따라, 슬레이브 컨트롤러(420)는 메모리 장치(430)내에 상주(reside)할 수 있고, 메모리 장치(430)는 호스트 컴퓨터의 메모리 슬롯 내로 삽입될 수 있다. 다른 실시 예에 따라, 슬레이브 컨트로러(420)는 호스트 컴퓨터의 마스터 컨트롤러(410)내에 상주할 수 있다.
마스터 컨트롤러(410)는 엔코더(411), 스케쥴러(412), 디코더(413), 어드레스 맵핑 디코더(414), 및 플래그 구성기(415)를 포함할 수 있다. 어드레스 맵핑 디코더(414)는 메모리 장치(430)의 어드레스 맵핑 정보를 저장할 수 있다. 상기 어드레스 맵핑 정보는 채널, 랭크, 뱅크 및 행 정보를 포함한다. 상기 어드레스 맵핑 디코더(414)는 어드레스 맵핑 정보를 채널 ID, 랭크 ID, 뱅크 ID, 및 행 ID를 가지는 엔코딩된 트랜잭션 큐로 인가한다. 어드레스 맵핑 디코더(414)는 도 2b의 예에서 보여진 바와 같이 어드레스 맵핑 정보에 근거하여 엔코딩된 트랜잭션 큐를 재정리할 수 있으므로, 마스터 컨트롤러(410)는 슬레이브 컨트롤러(420)와 같은 어드레스 맵핑을 유지할 수 있다. 예를 들면, 새 메모리 장치(430)이 삽입될 때, 슬레이브 컨트롤러(420)는 새 메모리 장치(430)의 어드레스 맵핑 정보를 시스템 부팅 타임 동안에 마스터 컨트롤러(410)로 보낸다. 어드레스 맵핑 디코더(414)는 인터리빙 및 행 버퍼 관리 모두에 대한 요청들을 디코딩한다.
스케쥴러(412)는 뱅크, 랭크, DIMM, 및 XOR 인터리빙을 최적화하기 위해 다양한 스케쥴링 스킴을 채용할 수 있다. 스케쥴링의 예들은 한정되는 것은 아니지만, 채널 라운드 로빈(round robin), 랭크 라운드 로빈, 및 뱅크 라운드 로빈을 포함한다. 플래그 구성기(415)는 마스터 컨트롤러(410)와 슬레이브 컨트롤러(420)간의 정보 교환을 촉진하기 위해 추가 플래그들을 설정할 수 있다. 이들 플래그들은 도 3b에서의 예를 참조하여 설명된 바로서, 확장된 페이지 오픈 정책에 근거하여 페이지 오픈을 유지하는데 사용될 수 있다. 추가 플래그들의 예들은 한정되는 것은 아니지만 요구 활성화(requireACT) 및 요구 프리차아지(requirePRE)를 포함한다. 이들 플래그들은 트랜잭션 큐(417)내에서 상기 요청들과 함께 패킷화될 수 있다.
슬레이브 컨트롤러(420)는 디코더(421), 스케쥴러(422), 패킷타이저(423), 및 리프레시 핸들러(424)를 포함한다. 디코더(421)는 간단한 요청 패킷들(straightforward request packets)을 상기 requireACT 및 requirePRE 플래그들(flags)에 근거하여 메모리 커맨드들로 변환할 수 있다. 리프레시 핸들러(424)는 필요시 상기 requireACT 및 requirePRE 플래그들에 근거하여 간단한 리프레시 핸들링을 수행할 수 있다. 슬레이브 컨트롤러(420)의 리프레시 컨트롤러(도시되지 않음)는 리프레시 동작을 수행하는 것을 계속한다. 리프레시 핸들러(424)는 리프레시 상황을 처리하는 것을 담당한다. 예를 들어, 리프레시 핸들러(424)는 상기 플래그들에 근거하여 표준 리프레시 동작을 중단(인터럽트)하고 리프레시 상황 처리 후 리프레시 동작 전의 상태로부터 리프레시 동작을 재개한다.
표 1은 두개의 추가 플래그들 즉, 플래그 구성기(415)에 의해 구성될 수 있는 requireACT 및 requirePRE를 나타낸다. requireACT 플래그는 패킷이 풀 어드레스(행 및 열 어드레스)를 필요로 할 때 참(true)으로 설정된다. 패킷의 풀 어드레스를 이용하여, 슬레이브 컨트롤러(420)는 수신된 패킷을 행 어드레스 선택(RAS)-열 어드레스 선택(CAS)(또는 RAS-CAS 라이트: CASW)으로 디코딩한다. 한편, requirePRE 플래그는 패킷이 부분 어드레스 예를 들어 컬럼 어드레스 만을 필요로 할 때 거짓(false)으로 설정된다. 이 경우에, 슬레이브 컨트롤러(420)는 액티브 행(RAS)를 가지며, 패킷을 CAS(또는 CASW)로 디코딩한다.
requirePRE 플래그는, 마스터 컨트롤러(410)가 행 공간 지역성(row spatial locality)이 마스터 버퍼 내에 존재하지 않음을 결정할 때 참(true)으로서 설정된다. 슬레이브 컨트롤러(420)는 오픈 페이지를 클로즈하고 새 페이지를 오픈할 준비가 되도록 프리차아지 커맨드를 이전 커맨드에 추가한다. 한편, requirePRE 플래그는, 행 공간 지역성(row spatial locality)이 존재 시에 거짓으로서 설정된다. 이 경우에 슬레이브 컨트롤러(420)는 프리차아지 커맨드를 이전 커맨드에 추가하지 않고, 오픈 페이지는 requirePRE 플래그가 오픈 페이지를 클로즈하도록 참으로 설정될 때까지 오픈으로 유지된다.
True False
requireACT * Packet needs full address
* Slave controller decodes the packet into RAS-CAS (or RAS-CASW)
* Packet only needs partial address (i.e., only column address)
* Slave controller decodes the packet into CAS (or CASW)
requirePRE * Row spatial locality does not exist
* Slave controller appends PRE to the previous command
* Row spatial locality exists
* Slave controller does not append PRE to the previous command
아래의 의사 코드(pseudo-code)는 마스터 컨트롤러(410)가 requireACT 및 requirePRE 플래그들을 어떻게 구성하고 관리할 수 있는 지를 예시적으로 보여준다. 마스터 컨트롤러(410)는 상기 의사 코드 내에서 inputBuffer라고 칭해지는 트랜잭션 큐(417)를 포함한다. requireACT 및 requirePRE 플래그들 모두는 초기에 참으로 설정된다. 마스터 컨트롤러(410)는 트랜잭션 큐(417)내에서 인컴잉 요청들을 스캔할 수 있다. 인컴잉 요청들이 트랜잭션 큐(417)내의 펜딩 요청과 같은 동일 채널, 랭크, 뱅크, 및 행을 가질 때, 펜딩 요청의 requirePRE 플래그는 거짓으로 설정된다. 거짓 requirePRE 플래그는 인컴잉 요청이 처리될 때까지 대응되는 페이지 오픈을 그대로 둔다. 한편, 인컴잉 요청의 requireACT 플래그 및 requirePRE 플래그는 거짓 및 참으로 각기 설정된다. 일단 큐 내에서 테일(tail)로부터 매치(match)가 발견되면 스캐닝 과정은 중지될 수 있다. 이것은 왜냐하면, 매치가 발견된 후 스캐닝 과정을 계속하는 것이 다른 펜딩 요청들에 대해 원치 않는 변경을 만들 수 있고 펜딩 요청들의 플래그를 변경할 수 있기 때문이다. 매치가 없을 때 requireACT 플래그 및 requirePRE 플래그는 미변경되고, 슬레이브 컨트롤러(420)가 오픈 페이지를 자유로이 클로즈할 수 있도록 하는 바와 같은 참(true)으로 설정된다.
Figure pat00001
마스터 컨트롤러(410)에 의해 제공되는 플래그들을 가지고서, 슬레이브 컨트롤러(420)는 상기 requireACT 및 requirePRE 플래그들의 상태에 근거하여 인컴잉 패킷들을 메모리 커맨드들로 변환할 수 있다. 표 2는 슬레이브 컨트롤러(420)의 디코더(421)가 상기 requireACT 및 requirePRE 플래그들의 상태에 근거하여 마스터 컨트롤러(410)의 인컴잉 패킷들로부터 생성할 수 있는 메모리 커맨드들의 예들을 보여준다. 상기 requireACT 플래그 및 requirePRE 플래그가 모두 참일 때, 디코드 패킷(421)은 RAS-CAS-PRE 혹은 RAS-CASW-PRE 커맨드들을 발행할 수 있다. requireACT 플래그가 참이나 requirePRE 플래그가 거짓이면, 디코드 패킷(421)은 PRE 커맨드 추가 없이 RAS-CAS 혹은 RAS-CASW 커맨드들을 발행할 수 있다. 상기 requireACT 플래그 및 requirePRE 플래그가 모두 거짓일 때, 디코드 패킷(421)은 행 활성화 또는 PRE 커맨드를 추가함이 없이 CAS 혹은 CASW 커맨드를 발행할 수 있다. requireACT 플래그가 거짓이나 requirePRE 플래그가 참이면, 디코드 패킷(421)은 행 활성화 없이 CAS-PRE 혹은 CASW-PRE 커맨드들을 발행할 수 있다.
Packet to command decode
requireACT == true && requirePRE == true RAS-CAS-PRE (or RAS-CASW-PRE)
requireACT == true && requirePRE == false RAS-CAS (or RAS-CASW)
requireACT == false && requirePRE == false CAS (or CASW)
requireACT == false && requirePRE == true CAS-PRE (or CASW-PRE)
슬레이브 컨트롤러(420)은 특히 두 개의 추가 플래그들 즉 requireACT 및 requirePRE 의 구현에 기인하는 마스터 컨트롤러(410)의 변경을 수용하기 위해 리프레시들을 차별적으로 취급한다. 아래의 의사 코드(pseudo-code)의 예는 슬레이브 컨트롤러(420)의 리프레시 핸들러(424)가 리프레시 커맨드들을 어떻게 취급할 수 있는 지를 보여준다. 페이지 오픈 시, 리프레시 핸들러(424)는 프리차아지 커맨드를 언제 얼마나 일찍 시행할 지를 결정할 수 있다. 현재의 뱅크 상태가 액티브 로우 상태에 있지 않고, 마지막 커맨드가 프리차아지 커맨드일 때, 리프레시 핸들러(424)는 강제된 프리차아지를 결정할 수 있다. 프리차아지를 시행하기 위해 활성화 커맨드 및 프리차아지 커맨드가 삽입될 수 있다. 프리차아지 커맨드가 우선 발행되고, 리프레시 커맨드가 함출적으로 발행되며, 그 후에 활성화 커맨드가 발행된다. 활성화 커맨드는 리프레시 커맨드가 완료되면 행을 다시 오픈한다. 리프레시 카운터가 0(제로)에 도달하고 모든 뱅크는 아이들 상태일때, 리프레시 커맨드들이 발행된다.
Figure pat00002
일 실시 예에 따라, 스케쥴러(412)는 인터리브된 메모리 트랜잭션들을 최적화하기 위해 마스터 컨트롤러(410)의 트랜잭션 큐(417)와 슬레이브 컨트롤러(420)의 커맨드 큐(425)를 스케쥴링할 수 있다. 스케쥴러(412)는 마스터 컨트롤러(410)와 슬레이브 컨트롤러(420)에 의해 요청 종속성을 유지할 수 있다. 스케쥴러(412)는 메모리 장치(430)의 억세스 시에 타이밍 제약을 준수하면서 슬레이브 컨트롤러(420)에 의해 메모리 커맨드 종속성을 추가로 유지할 수 있다. 스케쥴러(412)는 마스터 컨트롤러(410)의 트랜잭션 큐(417)내의 펜딩 요청들을 재정리함에 의해 메모리 성능을 최적화할 수 있다. 마스터 컨트롤러(410)는 병렬성이 최대화되도록 가능한한 빨리 요청을 보내는 것을 시도한다. 따라서, 메모리 시스템(400)의 성능이 개선된다.
슬레이브 컨트롤러(420)에서의 펜딩 커맨드들은 슬레이브 컨트롤러(420)가 성능 최적화를 위해 커맨드들을 가능한한 빨리 발행할 수 있는 방법으로 재정리될 수 있다. 요청 종속성이 유지되고(예를 들어 리드 라이트 시퀀스), 커맨드 종속성이 유지되며(예를 들어 RAS CAS 시퀀스), 만약 가용 자원이 (뱅크가 바쁜 상태가 아님)있는 한 스케쥴러(412)는 인컴잉 요청들에 관련된 커맨드들의 발행을 유지할 수 있다. 예를 들어, 스케쥴러(412)는 뱅크들 1,1,1, 및 2를 억세스하기 위한 커맨드들의 시퀀스를 수신할 수 있다. 스케쥴러(412)는 뱅크 시퀀스가 1,2,1, 및 1이 되도록 하는 것과 같이 커맨드들을 재정리할 수 있다. 달리 말하면, 뱅크 2를 억세스하는 커맨드에 대해, 스케쥴러(412)는 이전의 모든 커맨드들을 종료하기 위해 대기할 필요가 없다. 요청 및 커맨드 종속성들이 충족되는 한 자원은 가용될 수 있고, 스케쥴러(412)는 인컴잉 요청들을 재스케쥴링할 수 있고 재스케쥴링된 요청들을 성능 최적화를 위해 가능한한 빨리 발행할 수 있다.
일 실시 예에 따라, 메모리 시스템은 마스터 컨트롤러, 호스트 컴퓨터에 대한 인터페이스, 및 슬레이브 컨트롤러와 연결되도록 구성된 링크 버스를 포함한다. 마스터 컨트롤러는 어드레스 맵핑 디코더, 트랜잭션 큐, 및 스케쥴러를 포함한다. 상기 어드레스 맵핑 디코더는 상기 슬레이브 컨트롤러에 연결된 메모리 장치의 어드레스 맵핑 정보를 디코딩하도록 구성된다. 상기 마스터 컨트롤러의 상기 스케쥴러는 상기 메모리 장치의 상기 어드레스 맵핑 정보를 이용하여 상기 트랜잭션 큐 내에서 상기 호스트 컴퓨터로부터 수신된 메모리 트랜잭션 요청들을 재정리하도록 구성된다. 상기 메모리 시스템은 상기 마스터 컨트롤러의 상기 트랜잭션 큐 내에서 상기 펜딩 메모리 트랜잭션 요청들에 근거하여 확장 오픈 페이지 정책을 채용한다.
상기 어드레스 맵핑 정보는 채널 ID, 랭크 ID, 뱅크 ID, 및 행 ID를 포함할 수 있다.
상기 마스터 컨트롤러는 플래그 구성기를 더 포함하고, 상기 플래그 구성기에 의해 구성된 복수의 플래그들을 상기 링크 버스를 통해 상기 슬레이브 컨트롤러로 송신할 수 있다.
상기 복수의 플래그들은 요구 활성화 플래그 및 요구 프리차아지 플래그를 포함할 수 있다.
상기 플래그 구성기는, 상기 호스트 컴퓨터로부터 수신되는 인컴잉 메모리 트랜잭션 요구가 상기 트랜잭션 큐 내의 펜딩 메모리 트랜잭션 요청(request) 중의 채널 ID, 랭크 ID, 뱅크 ID, 행 ID를 포함할 때, 상기 메모리 장치의 활성화된 페이지가 오픈되도록 하기 위해 상기 요구 프리차아지 플래그를 설정하도록 구성될 수 있다.
일 실시 예에 따라, 메모리 모듈은 디코더, 스케쥴러, 커맨드 큐, 및 리드 리턴 큐를 포함하는 슬레이브 컨트롤러를 포함하고, 또한, 메모리 장치를 포함한다. 상기 디코더는 메모리 트랜잭션 요청들을 수신하고, 상기 메모리 트랜잭션 요청들에 근거하여 메모리 커맨드들을 생성하고, 상기 커맨드 큐 내에 상기 메모리 커맨드들을 두도록 구성된다. 상기 디코더는 복수의 플래그들을 수신하고, 상기 복수의 플래그들에 근거한 상기 커맨드 큐 내에서 상기 메모리 커맨드들을 재정리하도록 더 구성된다.
상기 슬레이브 컨트롤러는, 상기 복수의 플래그들에 근거하여 상기 메모리 커맨드들을 상기 커맨드 큐 내에서 변경하고 재정리하도록 구성되고, 상기 변경 및 재정리된 메모리 커맨드들에 근거하여 상기 메모리 장치의 리프레시 동작을 처리하도록 구성된 리프레시 핸들러를 더 포함할 수 있다.
상기 스케쥴러는 상기 커맨드 큐 내의 상기 메모리 커맨드들에 근거하여 상기 메모리 커맨드들과 상기 메모리 커맨드들에 관련된 어드레스들을 상기 메모리 장치로 송신하도록 구성될 수 있다.
상기 메모리 모듈은 패킷타이저 및 리드 리턴 큐를 더 포함할 수 있다. 상기 메모리 장치로부터 수신된 데이터는 상기 리드 리턴 큐 내에서 놓여지며, 상기 패킷타이저는 상기 데이터를 포함하는 패킷들을 생성하고 상기 패킷들을 링크 버스를 통해 마스터 컨트롤러로 송신하도록 구성될 수 있다.
상기 슬레이브 컨트롤러는 상기 메모리 커맨드들과 상기 메모리 커맨드들에 관련된 어드레스들을, 상기 메모리 커맨드들이 상기 커맨드 큐에 놓여진 순서대로, 상기 메모리 장치로 송신하도록 구성된 제2 스케쥴러를 더 포함할 수 있다.
일 실시 예에 따라, 메모리 시스템의 성능을 개선하는 방법은, 슬레이브 컨트롤러로부터 메모리 장치의 어드레스 맵핑 정보를 링크 버스를 통해 수신하고, 호스트 컴퓨터로부터 메모리 트랜잭션 요청들을 수신하고, 트랜잭션 큐 내에 상기 메모리 트랜잭션 요청들을 두고, 및 상기 메모리 장치의 상기 어드레스 맵핑 정보를 이용하여 상기 트랜잭션 큐 내에서 상기 메모리 트랜잭션 요청들을 재정리하는 것을 포함한다.
상기 어드레스 맵핑 정보는 채널 ID, 랭크 ID, 뱅크 ID, 및 행 ID를 포함할 수 있다.
상기 방법은, 복수의 플래그들을 구성하고, 상기 복수의 플래그들을 상기 링크 버스를 통해 상기 슬레이브 컨트롤러로 송신하는 것을 더 포함할 수 있다.
상기 복수의 플래그들은 요구 활성화 플래그 및 요구 프리차아지 플래그를 포함할 수 있다.
상기 방법은 상기 호스트 컴퓨터로부터 수신되는 인컴잉 메모리 트랜잭션 요구가 상기 트랜잭션 큐 내의 펜딩 메모리 트랜잭션 요청 중의 채널 ID, 랭크 ID, 뱅크 ID, 행 ID를 포함할 때, 상기 메모리 장치의 활성화된 페이지가 오픈되도록 하기 위해 상기 요구 프리차아지 플래그를 설정하는 것을 더 포함할 수 있다.
일 실시 예에 따라, 메모리 시스템의 성능을 개선하는 방법은, 메모리 장치의 어드레스 맵핑 정보를 링크 버스를 통해 마스터 컨트롤러로 송신하고, 메모리 트랜잭션 요청들을 수신하고, 상기 메모리 트랜잭션 요청들을 디코딩 하고 상기 디코딩된 메모리 트랜잭션 요청들에 근거하여 메모리 커맨드들을 생성하고, 커맨드 큐 내에 상기 메모리 커맨드들을 두고, 복수의 플래그들을 수신하고, 및 상기 복수의 플래그들에 근거한 상기 커맨드 큐 내에서 상기 메모리 커맨드들을 재정리하는 것을 포함한다.
상기 방법은, 상기 복수의 플래그들에 근거하여 상기 커맨드 큐 내에서 상기 메모리 커맨드들을 변경하고 재정리하는 것 및 상기 변경 및 재정리된 메모리 커맨드들에 기반하여 상기 메모리 장치의 리프레시 동작을 처리하는 것을 더 포함할 수 있다.
상기 방법은, 상기 커맨드 큐 내의 상기 메모리 커맨드들에 근거하여 상기 메모리 커맨드들과 상기 메모리 커맨드들에 관련된 어드레스들을 상기 메모리 장치로 송신하는 것을 더 포함할 수 있다.
상기 방법은, 상기 메모리 장치로부터 수신된 데이터를 상기 리드 리턴 큐 내에 두고, 상기 데이터를 포함하는 패킷들을 생성하고 상기 패킷들을 링크 버스를 통해 마스터 컨트롤러로 송신하는 것을 더 포함할 수 있다.
상기 방법은, 상기 메모리 커맨드들과 상기 메모리 커맨드들에 관련된 어드레스들을, 상기 메모리 커맨드들이 상기 커맨드 큐에 놓여진 순서대로, 상기 메모리 장치로 송신하는 것을 더 포함할 수 있다.
상기한 예시적 실시 예들은, 코 프로세서들과 입출력 장치들을 메인 메모리 시스템을 경유하여 인터페이싱하는 시스템 및 방법을 구현하는 다양한 실시 예들을 설명하기 위해 상술한 바와 같이 개시되었다. 개시된 예시적 실시 예들로부터 다양한 변경들 및 출발이 본 분야의 통상의 지식을 가진 자에 있어 일어날 수 있을 것이다. 본 발명의 범위 이내로 의도될 수 있는 기술적 사상은 이하의 청구항들 에서 언급된다.

Claims (20)

  1. 어드레스 맵핑 디코더, 트랜잭션 큐, 및 스케쥴러를 포함하는 마스터 컨트롤러;
    호스트 컴퓨터에 대한 인터페이스; 및
    슬레이브 컨트롤러에 연결되도록 구성된 링크 버스를 포함하고,
    상기 어드레스 맵핑 디코더는 상기 슬레이브 컨트롤러에 연결된 메모리 장치의 어드레스 맵핑 정보를 디코딩하도록 구성되며,
    상기 마스터 컨트롤러의 상기 스케쥴러는 상기 메모리 장치의 상기 어드레스 맵핑 정보를 이용하여 상기 트랜잭션 큐 내에서 상기 호스트 컴퓨터로부터 수신된 메모리 트랜잭션 요청들을 재정리하도록 구성되는 메모리 시스템.
  2. 제1항에 있어서, 상기 어드레스 맵핑 정보는 채널 ID, 랭크 ID, 뱅크 ID, 및 행 ID를 포함하는 메모리 시스템.
  3. 제1항에 있어서, 상기 마스터 컨트롤러는 플래그 구성기를 더 포함하고, 상기 플래그 구성기에 의해 구성된 복수의 플래그들을 상기 링크 버스를 통해 상기 슬레이브 컨트롤러로 송신하는 메모리 시스템.
  4. 제3항에 있어서, 상기 복수의 플래그들은 요구 활성화 플래그 및 요구 프리차아지 플래그를 포함하는 메모리 시스템.
  5. 제4항에 있어서, 상기 플래그 구성기는, 상기 호스트 컴퓨터로부터 수신되는 인컴잉 메모리 트랜잭션 요구가 상기 트랜잭션 큐 내의 펜딩 메모리 트랜잭션 리퀘스트 중의 채널 ID, 랭크 ID, 뱅크 ID, 행 ID를 포함할 때, 상기 메모리 장치의 활성화된 페이지가 오픈되도록 하기 위해 상기 요구 프리차아지 플래그를 설정하도록 구성되는 메모리 시스템.
  6. 디코더, 스케쥴러, 커맨드 큐, 및 리드 리턴 큐를 포함하는 슬레이브 컨트롤러; 및
    메모리 장치를 포함하고,
    상기 디코더는 메모리 트랜잭션 요청들을 수신하고, 상기 메모리 트랜잭션 요청들에 근거하여 메모리 커맨드들을 생성하고, 상기 커맨드 큐 내에 상기 메모리 커맨드들을 두도록 구성되며,
    상기 디코더는 복수의 플래그들을 수신하고, 상기 복수의 플래그들에 근거한 상기 커맨드 큐 내에서 상기 메모리 커맨드들을 재정리하도록 더 구성되는 메모리 모듈.
  7. 제6항에 있어서, 상기 슬레이브 컨트롤러는, 상기 복수의 플래그들에 근거하여 상기 메모리 커맨드들을 상기 커맨드 큐 내에서 변경하고 재정리하도록 구성되고, 상기 변경 및 재정리된 메모리 커맨드들에 근거하여 상기 메모리 장치의 리프레시 동작을 처리하도록 구성된 리프레시 핸들러를 더 포함하는 메모리 모듈.
  8. 제6항에 있어서, 상기 스케쥴러는 상기 커맨드 큐 내의 상기 메모리 커맨드들에 근거하여 상기 메모리 커맨드들과 상기 메모리 커맨드들에 관련된 어드레스들을 상기 메모리 장치로 송신하도록 구성된 메모리 모듈.
  9. 제6항에 있어서, 패킷타이저 및 리드 리턴 큐를 더 포함하고, 상기 메모리 장치로부터 수신된 데이터는 상기 리드 리턴 큐 내에서 놓여지며, 상기 패킷타이저는 상기 데이터를 포함하는 패킷들을 생성하고 상기 패킷들을 링크 버스를 통해 마스터 컨트롤러로 송신하도록 구성되는 메모리 모듈.
  10. 제6항에 있어서, 슬레이브 컨트롤러는 상기 메모리 커맨드들과 상기 메모리 커맨드들에 관련된 어드레스들을, 상기 메모리 커맨드들이 상기 커맨드 큐에 놓여진 순서대로, 상기 메모리 장치로 송신하도록 구성된 제2 스케쥴러를 더 포함하는 메모리 모듈.
  11. 슬레이브 컨트롤러로부터 메모리 장치의 어드레스 맵핑 정보를 링크 버스를 통해 수신하고;
    호스트 컴퓨터로부터 메모리 트랜잭션 요청들을 수신하고;
    트랜잭션 큐 내에 상기 메모리 트랜잭션 요청들을 두고; 및
    상기 메모리 장치의 상기 어드레스 맵핑 정보를 이용하여 상기 트랜잭션 큐 내에서 상기 메모리 트랜잭션 요청들을 재정리하는 것을 포함하는 방법.
  12. 제11항에 있어서, 상기 어드레스 맵핑 정보는 채널 ID, 랭크 ID, 뱅크 ID, 및 행 ID를 포함하는 방법.
  13. 제11항에 있어서, 복수의 플래그들을 구성하고, 상기 복수의 플래그들을 상기 링크 버스를 통해 상기 슬레이브 컨트롤러로 송신하는 것을 더 포함하는 방법.
  14. 제13항에 있어서, 상기 복수의 플래그들은 요구 활성화 플래그 및 요구 프리차아지 플래그를 포함하는 방법.
  15. 제14항에 있어서, 상기 호스트 컴퓨터로부터 수신되는 인컴잉 메모리 트랜잭션 요구가 상기 트랜잭션 큐 내의 펜딩 메모리 트랜잭션 리퀘스트 중의 채널 ID, 랭크 ID, 뱅크 ID, 행 ID를 포함할 때, 상기 메모리 장치의 활성화된 페이지가 오픈되도록 하기 위해 상기 요구 프리차아지 플래그를 설정하는 것을 더 포함하는 방법.
  16. 메모리 장치의 어드레스 맵핑 정보를 링크 버스를 통해 마스터 컨트롤러로 송신하고;
    메모리 트랜잭션 요청들을 수신하고;
    상기 메모리 트랜잭션 요청들을 디코딩 하고 상기 디코딩된 메모리 트랜잭션 요청들에 근거하여 메모리 커맨드들을 생성하고;
    커맨드 큐 내에 상기 메모리 커맨드들을 두고;
    복수의 플래그들을 수신하고; 및
    상기 복수의 플래그들에 근거한 상기 커맨드 큐 내에서 상기 메모리 커맨드들을 재정리하는 것을 포함하는 방법.
  17. 제16항에 있어서, 상기 복수의 플래그들에 기반한 상기 커맨드 큐 내에서 상기 메모리 커맨드들을 변경하고 재정리하는 것과, 상기 변경 및 재정리된 메모리 커맨드들에 기반한 상기 메모리 장치의 리프레시 동작을 처리하는 것을 더 포함하는 방법.
  18. 제16항에 있어서, 상기 커맨드 큐 내의 상기 메모리 커맨드들에 근거하여 상기 메모리 커맨드들과 상기 메모리 커맨드들에 관련된 어드레스들을 상기 메모리 장치로 송신하는 것을 더 포함하는 방법.
  19. 제16항에 있어서, 상기 메모리 장치로부터 수신된 데이터를 상기 리드 리턴 큐 내에 두고, 상기 데이터를 포함하는 패킷들을 생성하고 상기 패킷들을 링크 버스를 통해 마스터 컨트롤러로 송신하는 것을 더 포함하는 방법.
  20. 제16항에 있어서, 상기 메모리 커맨드들과 상기 메모리 커맨드들에 관련된 어드레스들을, 상기 메모리 커맨드들이 상기 커맨드 큐에 놓여진 순서대로, 상기 메모리 장치로 송신하는 것을 더 포함하는 방법.
KR1020160086235A 2015-08-27 2016-07-07 고성능 트랜잭션 기반 메모리 시스템 KR102401594B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201562210935P 2015-08-27 2015-08-27
US62/210,935 2015-08-27
US14/959,773 2015-12-04
US14/959,773 US9904635B2 (en) 2015-08-27 2015-12-04 High performance transaction-based memory systems

Publications (2)

Publication Number Publication Date
KR20170026116A true KR20170026116A (ko) 2017-03-08
KR102401594B1 KR102401594B1 (ko) 2022-05-24

Family

ID=58095608

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160086235A KR102401594B1 (ko) 2015-08-27 2016-07-07 고성능 트랜잭션 기반 메모리 시스템

Country Status (5)

Country Link
US (1) US9904635B2 (ko)
JP (1) JP6796430B2 (ko)
KR (1) KR102401594B1 (ko)
CN (1) CN106484317B (ko)
TW (1) TWI681290B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11501832B2 (en) 2020-10-07 2022-11-15 SK Hynix Inc. Memory controller for controlling resistive memory device and memory system including the same

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180188976A1 (en) * 2016-12-30 2018-07-05 Intel Corporation Increasing read pending queue capacity to increase memory bandwidth
TWI645295B (zh) 2017-06-20 2018-12-21 慧榮科技股份有限公司 資料儲存裝置與資料儲存方法
US10140222B1 (en) * 2017-07-06 2018-11-27 Micron Technology, Inc. Interface components
US10437482B2 (en) * 2017-07-25 2019-10-08 Samsung Electronics Co., Ltd. Coordinated near-far memory controller for process-in-HBM
CN108628759B (zh) * 2017-12-29 2020-09-01 贵阳忆芯科技有限公司 乱序执行nvm命令的方法与装置
CN110870286B (zh) 2018-06-28 2021-07-09 华为技术有限公司 容错处理的方法、装置和服务器
KR102495539B1 (ko) 2018-07-16 2023-02-06 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
US11100013B2 (en) * 2018-08-08 2021-08-24 Apple Inc. Scheduling of read and write memory access requests
US10936507B2 (en) * 2019-03-28 2021-03-02 Intel Corporation System, apparatus and method for application specific address mapping
KR20200129843A (ko) * 2019-05-10 2020-11-18 에스케이하이닉스 주식회사 연산 회로를 포함하는 메모리 장치, 이를 제어하는 메모리 컨트롤러 및 이를 포함하는 메모리 시스템
US11526632B2 (en) * 2019-09-04 2022-12-13 Rambus Inc. Securing address information in a memory controller
CN111459414B (zh) * 2020-04-10 2023-06-02 上海兆芯集成电路有限公司 存储器调度方法及存储器控制器
CN114168495A (zh) * 2020-09-10 2022-03-11 西部数据技术公司 存储设备的增强的预读能力
US20230060826A1 (en) * 2021-09-01 2023-03-02 Micron Technology, Inc. Command scheduling component for memory
US20240020058A1 (en) * 2022-07-14 2024-01-18 Xilinx, Inc. Memory controller with a preprocessor
CN116893992B (zh) * 2023-09-11 2023-12-26 西安智多晶微电子有限公司 一种ddr2/3内存控制器的命令重排方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007026366A (ja) * 2005-07-21 2007-02-01 Canon Inc メモリコントローラ
KR20150086514A (ko) * 2013-01-17 2015-07-28 인텔 코포레이션 공유 메모리 패브릭을 통한 메모리 액세스 중재

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2675981B2 (ja) * 1993-09-20 1997-11-12 インターナショナル・ビジネス・マシーンズ・コーポレイション スヌープ・プッシュ・オペレーションを回避する方法
US6195724B1 (en) * 1998-11-16 2001-02-27 Infineon Technologies Ag Methods and apparatus for prioritization of access to external devices
US6715046B1 (en) * 2001-11-29 2004-03-30 Cisco Technology, Inc. Method and apparatus for reading from and writing to storage using acknowledged phases of sets of data
US7089379B1 (en) 2002-06-28 2006-08-08 Emc Corporation Large high bandwidth memory system
US7076617B2 (en) * 2003-09-30 2006-07-11 Intel Corporation Adaptive page management
US7162583B2 (en) * 2003-12-29 2007-01-09 Intel Corporation Mechanism to store reordered data with compression
TWI307837B (en) * 2004-09-20 2009-03-21 Novatek Microelectronics Corp Apparatus and method of microcontroller for memory mapping
US7461190B2 (en) * 2005-08-11 2008-12-02 P.A. Semi, Inc. Non-blocking address switch with shallow per agent queues
US20080189479A1 (en) 2007-02-02 2008-08-07 Sigmatel, Inc. Device, system and method for controlling memory operations
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
US8055816B2 (en) * 2009-04-09 2011-11-08 Micron Technology, Inc. Memory controllers, memory systems, solid state drives and methods for processing a number of commands
JP5428687B2 (ja) * 2009-09-14 2014-02-26 株式会社リコー メモリ制御装置
US8380940B2 (en) 2010-06-25 2013-02-19 Qualcomm Incorporated Multi-channel multi-port memory
US20120054455A1 (en) 2010-08-31 2012-03-01 Qualcomm Incorporated Non-Uniform Interleaving Scheme In Multiple Channel DRAM System
US8949501B1 (en) * 2010-10-31 2015-02-03 Integrated Device Technology, Inc. Method and apparatus for a configurable packet routing, buffering and scheduling scheme to optimize throughput with deadlock prevention in SRIO-to-PCIe bridges
JP2012128815A (ja) * 2010-12-17 2012-07-05 Toshiba Corp メモリシステム
TW201239632A (en) 2011-03-16 2012-10-01 Sunplus Technology Co Ltd Memory access system and method for optimizing SDRAM bandwidth
JP5863076B2 (ja) * 2011-08-17 2016-02-16 ▲ホア▼▲ウェイ▼技術有限公司 パケットを再構築し再順序付けするための方法、装置、およびシステム
WO2013028849A1 (en) 2011-08-24 2013-02-28 Rambus Inc. Methods and systems for mapping a peripheral function onto a legacy memory interface
US20140068125A1 (en) 2012-08-30 2014-03-06 Lsi Corporation Memory throughput improvement using address interleaving
US9141561B2 (en) * 2012-10-25 2015-09-22 Texas Instruments Incorporated Master circuits having dynamic priority leads coupled with memory controller
CN103870408B (zh) * 2012-12-18 2017-06-06 群联电子股份有限公司 数据处理方法、存储器控制器与存储器储存装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007026366A (ja) * 2005-07-21 2007-02-01 Canon Inc メモリコントローラ
KR20150086514A (ko) * 2013-01-17 2015-07-28 인텔 코포레이션 공유 메모리 패브릭을 통한 메모리 액세스 중재

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11501832B2 (en) 2020-10-07 2022-11-15 SK Hynix Inc. Memory controller for controlling resistive memory device and memory system including the same

Also Published As

Publication number Publication date
US20170060788A1 (en) 2017-03-02
KR102401594B1 (ko) 2022-05-24
TWI681290B (zh) 2020-01-01
CN106484317A (zh) 2017-03-08
JP6796430B2 (ja) 2020-12-09
JP2017045452A (ja) 2017-03-02
US9904635B2 (en) 2018-02-27
TW201710904A (zh) 2017-03-16
CN106484317B (zh) 2019-04-19

Similar Documents

Publication Publication Date Title
KR102401594B1 (ko) 고성능 트랜잭션 기반 메모리 시스템
EP3729281B1 (en) Scheduling memory requests with non-uniform latencies
US8683126B2 (en) Optimal use of buffer space by a storage controller which writes retrieved data directly to a memory
JP5453546B2 (ja) 複数の仮想キューを含むアドレス変換ユニット
JP4742116B2 (ja) アウトオブオーダdramシーケンサ
US10095526B2 (en) Technique for improving performance in multi-threaded processing units
US7281110B1 (en) Random access memory controller with out of order execution
US20190196996A1 (en) Dynamically determining memory access burst length
US20210073152A1 (en) Dynamic page state aware scheduling of read/write burst transactions
US10572389B2 (en) Cache control aware memory controller
JP4809890B2 (ja) メモリマイクロタイリングリクエストの並べ替え
US10740006B2 (en) System and method for enabling high read rates to data element lists
TW201234188A (en) Memory access device for memory sharing among multiple processors and access method for the same
EP3732578B1 (en) Supporting responses for memory types with non-uniform latencies on same channel
WO2014206230A1 (zh) 内存访问方法和内存控制器
US9104531B1 (en) Multi-core device with multi-bank memory
US10853070B1 (en) Processor suspension buffer and instruction queue

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