KR101527308B1 - 메모리 인터페이스 - Google Patents
메모리 인터페이스 Download PDFInfo
- Publication number
- KR101527308B1 KR101527308B1 KR1020137027086A KR20137027086A KR101527308B1 KR 101527308 B1 KR101527308 B1 KR 101527308B1 KR 1020137027086 A KR1020137027086 A KR 1020137027086A KR 20137027086 A KR20137027086 A KR 20137027086A KR 101527308 B1 KR101527308 B1 KR 101527308B1
- Authority
- KR
- South Korea
- Prior art keywords
- memory
- memory module
- slot
- read request
- time
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/36—Handling requests for interconnection or transfer for access to common bus or bus system
- G06F13/362—Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
- G06F13/3625—Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control using a time dependent access
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1689—Synchronisation and timing concerns
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
본 개시물은 메모리 액세스 동작을 프로세싱하기 위한 방법을 제공한다. 방법은 메모리 모듈의 총 메모리 레이턴시에 적어도 부분적으로 기초하여 고정 응답 시간을 판단하는 단계를 포함한다. 또한 방법은 데이터 버스를 통해 메모리 모듈로부터 반환 데이터를 수신하기 위한 이용가능 시간 슬롯을 식별하는 단계를 포함하며, 여기서 현재 클럭 사이클과 이용가능 시간 슬롯 사이의 시간 차이는 고정 응답 시간과 같거나 더 크다. 방법은 또한 이용가능 시간 슬롯을 예약함으로써 제 1 슬롯 예약을 생성하는 단계를 포함한다. 방법은 또한 데이터 버스를 통해 메모리 모듈에 대한 읽기 요청을 발행하는 단계를 포함하며, 여기서 읽기 요청은 제 1 슬롯 예약 시간에서 고정 응답 시간을 감산함으로써 결정된 클럭 사이클에서 발행된다.
Description
본 발명은 메모리 액세스 동작을 프로세싱하기 위한 방법에 관한 것이다.
전통적인 마스터/슬레이브 메모리 아키텍처에서, 프로세서는 각 메모리 트랜잭션에 대한 중요한 제어 관리를 제공하는 메모리 컨트롤러를 통해 메인 시스템에 액세스한다. 메모리 트랜잭션을 스케줄링하기 위해, 메모리 컨트롤러는 무엇보다도 어드레스/커맨드 버스, 데이터 뱅크, 및 데이터 버스와 같은 시스템의 다양한 컴포넌트들의 상태에 대한 많은 양의 정보를 관리한다. 각 메모리 읽기 동안, 메모리 컨트롤러는 행 활성화(row activation), 열 선택(column selection), 비트 라인 프리차지(bit line precharge) 등과 같은 동작의 모든 양태를 세세히 관리하기 위해 메모리 모듈에 특정 커맨드를 발행한다. 이것은 성능의 관점에서 어드레스/커맨드 버스에 압력을 가한다. 메모리 컨트롤러는 또한 무충돌 액세스(conflict-free accesses)를 제공하기 위해 잠재적으로 수백개의 독립 메모리 뱅크에 대한 많은 양의 상태를 추적한다. 적절한 시간에, 메모리 컨트롤러는 또한, 예를 들어, DRAM 리프레시(refresh)와 같은 유지 커맨드를 발행할 수 있다. 여러 다른 종류들로 이뤄진 메모리 시스템(heterogeneous memory systems)에서, 메모리 컨트롤러는 상이한 메모리 모듈에 대한 상이한 유지 요구사항을 수행할 수 있다. 또한, 메모리 컨트롤러는 공유 메모리 버스 상의 데이터 전송을 위해 메모리 모듈들 사이에서 중재를 수행한다.
큰 메모리 시스템을 관리하는 것은 매우 복잡하고, 단일 트랜잭션을 완료하는데 주의 깊은 조정 및 많은 양의 상태를 유지하는 것을 요구한다는 것이 분명하다. 이것은 메모리 컨트롤러의 복잡성을 상당히 증가시킨다. 따라서, 완전히 중앙집중된 제어를 가진 메모리 모듈과 메모리 컨트롤러 사이의 현재의 마스터-슬레이브 인터페이스는 미래 컴퓨터 시스템을 위해 바람직한 더 큰 대역폭 요구사항 및 증가하는 용량을 수용하는데 적합하지 않고 확장가능하지 않다.
특정 실시예들이 다음의 상세한 설명으로 도면을 참조하여 설명된다.
도 1은 일 실시예에 따른 메모리 인터페이스의 블록도이다.
도 2는 일 실시예에 따른 슬롯-기반 리소스 할당을 보여주는 타이밍 다이어그램이다.
도 3은 일 실시예에 따라, 메모리 읽기 요청을 프로세싱하는 방법에 관한 프로세스 흐름도이다.
도 4는 일 실시예에 따라 메모리 인터페이스를 구현하기 위한 코드를 저장하는 비일시적 컴퓨터 판독가능 매체를 보여주는 블록도이다.
도 1은 일 실시예에 따른 메모리 인터페이스의 블록도이다.
도 2는 일 실시예에 따른 슬롯-기반 리소스 할당을 보여주는 타이밍 다이어그램이다.
도 3은 일 실시예에 따라, 메모리 읽기 요청을 프로세싱하는 방법에 관한 프로세스 흐름도이다.
도 4는 일 실시예에 따라 메모리 인터페이스를 구현하기 위한 코드를 저장하는 비일시적 컴퓨터 판독가능 매체를 보여주는 블록도이다.
예시의 실시예들은 메모리 액세스를 수행하기 위한 시스템 및 방법에 관한 것이다. 본원에서 설명되는 다양한 실시예들은 메모리 컨트롤러와 하나 이상의 메모리 모듈 사이에서 패킷-기반 메모리 인터페이스를 제공한다. 다양한 디바이스 관리 및 메모리 액세스 작업은, 전통적인 마스터/슬레이브 메모리 시스템에서와 같은 메모리 컨트롤러가 아닌 메모리 모듈에 의해 수행된다. 따라서, 각 메모리 모듈은 전통적인 마스터/슬레이브 메모리 액세스 시스템 내 메모리 모듈에 비해 더 자치적일 수 있다. 메모리 동작 동안, 메모리 컨트롤러는 요청되고 있는 메모리 블록의 어드레스 및 동작이 쓰기인지 읽기인지에 관한 표시를 메모리 모듈에 송신한다. 일 실시예에서, 어떠한 추가적인 제어 정보도 사용되지 않는다. 읽기 요청에서, 메모리 모듈은 요청된 정보를 획득하고 요청된 데이터를 공유 버스를 통해 메모리 컨트롤러로 송신한다. 메모리 인터페이스는 메모리 컨트롤러와 메모리 모듈 사이에서 단일 포인트의 중재를 사용하는데, 이는 공유 데이터 버스 상의 데이터 전송을 위한 하나 이상의 시간 슬롯 예약(time slot reservations)으로서 구현된다. 메모리 트랜잭션과 연관된 동작들은 적시에 발생하여 슬롯 예약을 만족시킨다. 메모리 컨트롤러는 각 읽기 요청을 명시된 시간 슬롯 예약에서 수신된 반환 데이터와 연관시키도록 구성된다. 메모리 모듈은 고정 시간(fixed time)에 각 읽기 요청을 수행하고 이로써 읽기 요청은 예약된 시간 슬롯에 메모리 컨트롤러로 송신된다. 데이터 반환 슬롯으로부터 시간의 역순으로 작업하면서, 모든 다른 리소스는 그 트랜잭션에 대하여 자동으로 예약되고, 더 이상의 중재가 임의의 상태에서 사용되지 않는다. 본원에서 설명되는 기술은 감소된 복잡성과 전력 소비를 가진 간소화된 메모리 액세스 인터페이스를 제공한다. 더욱이, 시간 슬롯 예약 스킴은, 아래에서 더 설명되는 바와 같이, 메모리 컨트롤러에서의 시스템 상태 지식의 의도적인 부족으로 인해 발생하는 특정 상황을 처리하도록 구성될 수 있다.
도 1은 실시예들에 따른 예시의 메모리 인터페이스에 관한 블록도이다. 메모리 인터페이스는 참조 번호 100으로 지칭된다. 도 1에 도시된 바와 같이, 메모리 인터페이스(100)는 메모리 컨트롤러(106)를 통해 하나 이상의 메모리 모듈(104)에 동작가능하게 연결된 프로세서(102)를 포함한다. 프로세서(102)는 빈번하게 액세스된 데이터를 저장하는 하나 이상의 메모리 캐시(108)를 포함할 수 있다. 실시예들에서, 메모리 컨트롤러(106)는, 예를 들어, 프로세서(102)로서 동일한 칩 패키지에 위치되거나 동일한 다이 상에 제조된 프로세서(102)로 통합될 수 있다. 실시예들에서, 메모리 컨트롤러(106)는 주문형 반도체(Application Specific Integrated Circuit: ASIC)와 같은 별도의 집적 회로일 수 있다. 메모리 컨트롤러(106)는 메모리 버스(110)를 통해 메모리 모듈(104)에 연결될 수 있다.
메모리 모듈(104)은 양면 메모리 모듈(Dual-inline Memory Modules: DIMMs)일 수 있고 동적 랜덤 액세스 메모리(DRAM), 동기 동적 랜덤 액세스 메모리(SDRAM), 플래시 메모리 등과 같은 임의의 적합한 타입의 랜덤 액세스 메모리를 포함할 수 있다. 각 메모리 모듈(104)은 복수의 메모리 뱅크(112)를 포함할 수 있다. 각 메모리 모듈(104)은, 메모리 읽기 요청을 수신하는 것과 요청된 데이터를 제공하는 것 사이의 클럭 사이클의 수를 설명하는 총 메모리 레이턴시와 연관될 수 있다. 총 메모리 레이턴시는 커맨드 전송을 위해 사용된 클럭 사이클의 수, 카운트되지 않은 뱅크 액세스, 온 칩 네트워크 액세스, 및 데이터 반환에 기초할 수 있다. 총 메모리 레이턴시는 직렬 프레즌스 검출(Serial Presence Detect: SPD)과 같은 각 메모리 모듈(104)의 컨트롤 레지스터에 저장될 수 있다. 상이한 메모리 모듈(104)에 대하여 상이할 수 있는 총 메모리 레이턴시는 메모리 컨트롤러(106)와 통신될 수 있다. 예를 들어, 시스템이 시동되는 동안, 각 메모리 모듈(104)의 총 메모리 레이턴시는 각 메모리 모듈의 직렬 프레즌스 검출로부터 읽힐 수 있고 메모리 컨트롤러(106)의 하나 이상의 컨트롤 레지스터에 저장될 수 있다.
메모리 버스(110)는 임의의 수의 비트 폭(bits wide)일 수 있고 메모리 컨트롤러(106)와 메모리 모듈(104) 사이에서, 어드레스, 데이터, 및 커맨드를 통신하는데 사용된다. 메모리 컨트롤러(106) 및 메모리 모듈(104)은 메모리 버스(110)를 거쳐 전송된 버스 패킷을 통해 통신한다. 메모리 버스(110)는 읽기 및 쓰기 요청을 메모리 컨트롤러(106)로부터 메모리 모듈(104)로 송신하는데 사용되는 공유 요청 채널(a shared request channel)을 포함할 수 있다. 읽기 및 쓰기 요청은, 예를 들어, 다른 정보들 중에서 메모리 어드레스 및 컨트롤 데이터를 포함할 수 있다. 메모리 버스(110)는 또한 메모리 모듈(104)로부터 메모리 컨트롤러(106)로 응답 정보를 다시 송신하는데 사용되는 공유 응답 채널을 포함할 수 있다. 응답 정보는, 예를 들어, 다른 데이터 중에서도 요청된 데이터 또는 쓰기 승인(write acknowledgements)을 포함할 수 있다. 일 실시예에서, 메모리 버스는 메모리 읽기 동작을 위한 응답 채널과 공유 요청 및 메모리 쓰기 동작을 위한 응답 채널과 별도의 공유 요청을 포함할 수 있다.
각 메모리 모듈(104)은 자신의 메모리 뱅크(112)에 포함된 메모리를 액세스하는 것 및 유지하는 것과 관련된 다양한 작업을 처리하는 모듈 컨트롤러(114)를 포함한다. 전통적인 메모리 시스템과는 달리, 메모리 모듈(104)은 행 활성화(row activation), 열 선택(column selection), 비트 라인 프리차지 등과 같은 저-레벨 메모리 액세스 동작에 대한 특정 요청을 송신하는데 메모리 컨트롤러(106)에 의존하지 않는다. 그 대신, 모듈 컨트롤러(114)가 메모리 어드레스를 포함하는 요청 패킷을 수락하고 이러한 저-레벨 메모리 액세스 동작을 처리한다. 모듈 컨트롤러(114)는 또한 메모리 리프레시 및 플래시 메모리 내 마모 레벨링(wear leveling)과 같은 다른 메모리 유지 기능을 수행하도록 구성될 수 있다. 메모리 액세스와 관련된 타이밍 제한 및 메모리 리프레시를 처리하는 로직은 메모리 컨트롤러(106)로부터 제거될 수 있다.
메모리 쓰기 동작을 수행하기 위해, 메모리 컨트롤러(106)는 쓰기 요청 패킷을 메모리 버스(110)의 요청 채널을 통해 메모리 모듈(104)의 풀에 송신한다. 쓰기 요청 패킷은 메모리 어드레스, 동작이 쓰기인지를 나타내는 컨트롤 정보, 및 메모리 어드레스에 저장될 데이터를 포함한다. 쓰기 요청 패킷은, 데이터 버스의 폭 및 어드레스 버스의 폭에 따라, 하나 이상의 클럭 사이클에서 메모리 모듈(104)의 풀에 송신될 수 있다. 예를 들어, 64비트 아키텍처에서, 메모리 어드레스는 전용 어드레스 버스 상의 2개 클럭 사이클에서 송신될 수 있고 데이터는 8개 클럭 사이클에서 송신될 수 있다. 각 메모리 모듈(104)은 쓰기 요청 패킷을 디코딩하고 쓰기 동작에 대응하는 타겟팅된 모듈 컨트롤러(114)는 쓰기 요청을 프로세싱한다. 어드레싱된 데이터 블록이 이용가능한 경우, 데이터는 대응하는 메모리 어드레스에 쓰기 된다. 데이터가 성공적으로 메모리에 쓰기된 경우, 긍정 승인(ACK)이 메모리 컨트롤러(106)에 반환된다. 어드레싱된 데이터 블록이 사용 중이거나 그 외에 이용가능하지 않은 경우, 타겟팅된 모듈 컨트롤러(114)는 부정 승인(NACK)을 메모리 컨트롤러(106)에 다시 송신할 수 있다. 일 실시예에서, 메모리 쓰기 동작은 각 메모리 모듈(104)에 버퍼링될 수 있고 NACK는 버퍼가 가득찬 경우 메모리 컨트롤러(106)로 송신될 수 있다. 메모리 컨트롤러(106)가 쓰기 요청에 대한 응답으로 NACK를 수신하는 경우, 메모리 컨트롤러(106)는 특정 수의 클럭 사이클 동안 기다릴 수 있고 쓰기 요청 패킷을 재송신할 수 있다.
메모리 읽기 동작을 수행하기 위해, 메모리 컨트롤러(106)는 메모리 버스(110)의 요청 채널을 통해 메모리 모듈(104)의 풀로 읽기 요청 패킷을 송신한다. 읽기 요청 패킷은 대응 메모리 어드레스 및 읽기 요청이 메모리 읽기 동작이라는 표시를 포함한다. 풀 내 각 메모리 모듈(104)은 읽기 요청 패킷을 디코딩하고, 타겟팅된 모듈 컨트롤러(114)는 읽기 요청 패킷에 의해 표시된 메모리 어드레스로부터 요청된 데이터를 획득함으로써 읽기 요청을 프로세싱한다. 그 이후 타겟팅된 모듈 컨트롤러(114)는, 요청된 데이터를 메모리 버스(110)의 공유 응답 채널을 거쳐 데이터 패킷을 통해 메모리 컨트롤러(106)로 송신한다.
전형적인 메모리 구성에서, 메모리 뱅크(112)로의 각 액세스는 다수의 캐시 라인을 읽을 것이고 이를 행 버퍼(row buffer) 내에 둘 것이다. 어드레스가 행 버퍼 내 컨텐트와 일치하는 어드레스를 가진 후속 액세스는 프레시(fresh) 읽기 또는 쓰기를 행하는 것에 비해 더 빠르게 수행된다. 이 방침은 행 버퍼가 원래 요청 이후에 유효 데이터를 계속해서 이동시키기 때문에 오픈 페이지(open page)라 불린다. 오픈 페이지 방침에서, 메모리 뱅크(112)로의 액세스 시간은 메모리 액세스가 행 버퍼 내에 도달했는지에 따라 달라질 것이다. 이 오픈 페이지 방침은 액세스 스트림 내 높은 로컬리티(high locality)가 있는 경우 유용하다. 행 버퍼 내에 오류(miss)가 있는 경우, 그 이후 다른 페이지를 읽기 전에 원래 페이지를 닫는 추가 단계가 수행되며, 이는 액세스 시간을 증가시킨다. 따라서, 랜덤 액세스는 일반적으로 오픈 페이지 방침으로부터 유용하지 않다. 클로즈드 페이지 방침(a closed page policy)에서, 페이지는 메모리 액세스가 완료된 이후 클로즈되고 뱅크는 다음 프레시 액세스를 위해 준비된다. 일 실시예에서, 메모리 인터페이스(100)는 클로즈드 페이지 방침을 사용한다.
2개 이상의 메모리 모듈이 동시에 버스(110)에 액세스하고자 시도하는 버스 충돌을 방지하기 위해, 메모리 컨트롤러(106)는 각 읽기 요청 또는 쓰기 요청을 송신하기 전에 중재 절차를 수행한다. 중재 절차 동안, 메모리 컨트롤러(106)는 공유 메모리 버스(110)에서 반환 데이터를 수신하기 위해 하나 이상의 시간 슬롯을 예약한다. 메모리 버스(110)의 응답 채널 상에의 모든 전송은 메모리 컨트롤러(106)에 의한 분명한 요청으로 인해 발생한다. 추가적으로, 클로즈드 페이지 메모리 구성은 오픈 페이지 구성에 비해 더 결정적인 액세스 레이턴시를 제공한다. 따라서, 데이터 버스의 시간 슬롯은 각 메모리 모듈(104)에 의해 명시된 알려진 총 메모리 레이턴시에 기초하여 메모리 컨트롤러(106)에 의해 예약될 수 있고, 반환 데이터가 이용가능할 때 메모리 버스(110)에 액세스하기 위한 메모리 모듈들(104) 사이의 중재에 관한 서로 다른 라운드는 제거될 수 있다. 더욱이, 메모리 컨트롤러(106)는 특정 시간 슬롯에 반환된 데이터를 예약된 시간 슬롯에 대응하는 특정 읽기 또는 쓰기 요청과 연관시키도록 구성된다. 따라서, 메모리 컨트롤러(106)의 읽기 또는 쓰기 요청을 메모리 모듈(104)의 대응하는 반환 데이터와 연관시키는 추가 태그의 사용이 제거될 수 있다.
일부 경우들에서, 대응 시간 슬롯 예약 시 메모리 컨트롤러(106)에 데이터를 송신하는 시간에 메모리로부터 데이터가 읽히지 않을 수 있다. 예를 들어, 읽기 요청이 이전 읽기 요청을 프로세싱하는데 현재 수반되는 메모리 뱅크(112)를 참조하는 경우 뱅크 충돌이 발생할 수 있으며, 이 경우 제 2 읽기 요청은 제 1 읽기 요청이 완료된 이후에까지 시작하지 못할 수 있다. 그러한 경우에서, 이용 불가능한 메모리 뱅크(112)에 의해 추가된 추가 레이턴시는 제 2 읽기 요청에 대한 응답이 대응 시간 슬롯 예약을 놓치게 할 수 있다. 메모리 뱅크(112)가 읽기 요청이 도착한 시간에 저전력 슬립 모드 또는 주기적인 리프레시 동작에 관련되는 경우와 같은 이벤트들은 또한 읽기 응답이 자신의 시간 슬롯 예약 기한을 놓치도록 할 수 있다. 메모리 컨트롤러(106)는 가능한 뱅크 충돌 또는 다른 지연을 예상할 수 있도록 하는 정보를 갖지 않는데, 왜냐하면 메모리 컨트롤러(106)는 뱅크 상태 마다의 세부사항을 다루지 않기 때문이다.
요청된 데이터가 예약된 시간 슬롯에서 이용가능하지 않은 경우, 타겟팅된 모듈 컨트롤러(114)는 예약된 시간 슬롯에서 메모리 컨트롤러(106)에 NACK를 반환할 것이다. 일 실시예에서, NACK가 특정 시간 슬롯에서, 예를 들어, 특정 시간 지연 후에 수신되는 경우, 메모리 컨트롤러(106)는 읽기 요청 패킷을 재송신할 수 있다. 일 실시예에서, 메모리 컨트롤러(106)에 의해 이용되는 슬롯 예약 스킴은, 메모리 모듈(104)에 의해 반환될 데이터가 대응 시간 슬롯 예약 시 반환될 때 이용가능하지 않는 경우를 처리할 수 있도록 구성된다. 예를 들어, 메모리 컨트롤러(106)는 메모리 모듈(104)의 풀에 송신된 각 읽기 요청에 대하여 2개의 시간 슬롯을 예약할 수 있다. 데이터가 제 1 시간 슬롯 예약 시 이용가능하지 않는 경우 제 2 시간 슬롯 예약이 사용될 수 있다. 슬롯 예약 스킴은 도 2를 참조하여 더 잘 이해될 수 있다.
도 2는 일 실시예에 따라, 슬롯 기반 리소스 할당을 도시하는 타이밍 다이어그램이다. 타이밍 다이어그램은 참조 번호 200으로 지칭된다. 타이밍 다이어그램(200)은 공유 데이터 버스 상의 데이터 플로우를 나타내는 일련의 시간 슬롯(202)을 보여준다. 각 시간 슬롯(202)은 데이터가 메모리 모듈(104)(도 1)로부터 메모리 컨트롤러(106)로 반환될 수 있는 하나 이상의 클럭 사이클에 대응한다. 각 시간 슬롯(202)의 폭은 클럭 사이클의 관점에서 응답 채널의 폭 및 캐시 라인의 크기에 기초하여 판단될 수 있다. 예를 들어, 64 바이트 캐시 라인 및 64 비트 응답 채널과 함께 각 읽기 요청은, 이중 데이터 레이트 전송(dual data rate transmission)과 함께 완전히 파이프라이닝된 데이터 버스를 추정하면서 4개의 사이클마다 서비스될 수 있다. 비어있는 박스로 도시된 점유되지 않은 시간 슬롯(204)은, 현재 예약되지 않은 시간 슬롯(202)을 나타낸다. "X"가 있는 박스로 도시된 점유된 시간 슬롯(206)은 이전 읽기 요청 또는 쓰기 요청의 결과로서 현재 예약된 시간 슬롯(202)을 나타낸다.
프로세서(102)(도 1)에 의해 발행된 읽기 요청은 메모리 컨트롤러(106)에 의해 유지되는 읽기 요청 큐(queue)에 저장될 수 있다. 큐로부터 획득된 읽기 요청을 프로세싱하기 위해, 메모리 컨트롤러(106)는 하나 이상의 시간 슬롯(202)에 대하여 중재하며, 이는 반환 데이터를 수신하는데 사용될 수 있다. 현재 예시에서, 2개의 시간 슬롯(202)이 예약된다. 그러나, 1개, 2개, 3개, 또는 그 이상을 포함하는 임의의 적합한 수의 시간 슬롯(202)이 예약될 수 있다는 것이 이해될 것이다. 메모리 모듈(104)의 풀로 읽기 요청을 송신하기 전에, 이용가능 시간 슬롯(202)은 식별되고 예약될 수 있다.
상술된 바와 같이, 메모리 컨트롤러(106)는 각 메모리 모듈(104)의 총 메모리 레이턴시에 관한 정보를 수신한다. 실시예들에서, 각 메모리 모듈(104)의 총 메모리 레이턴시는 각 메모리 모듈(104)에 대한 고정 응답 시간(a fixed response time)을 판단하는데 사용될 수 있다. 각 메모리 모듈(104)에 명시된 고정 응답 시간은 메모리 모듈(104)의 총 메모리 레이턴시와 같거나 더 클 수 있다. 각 메모리 모듈(104)에 대하여 판단된 고정 응답 시간은 각 대응 메모리 모듈(104)에 다시 통신될 수 있고, 예를 들어, 시스템이 시동될 때 발생할 수 있는 타이밍 구성 단계 동안, 컨트롤 레지스터에 저장될 수 있다. 일 실시예에서, 고정 응답 시간은 메모리 모듈(104)에 의해 명시된 총 메모리 레이턴시와 같을 수 있고, 이러한 경우에 고정 응답 시간을 메모리 모듈에 다시 통신하는 것이 스킵될 수 있고 메모리 모듈(104)에 의해 명시된 총 메모리 레이턴시는 고정 응답 시간으로서 사용될 수 있다. 고정 응답 시간은 메모리 모듈(104)의 총 메모리 레이턴시와 같거나 더 큰 다수의 클럭 사이클로서 표현될 수 있다. 고정 응답 시간은 메모리 모듈(104)로부터 반환 데이터를 수신하기 위해 시간 슬롯을 식별하고 예약하도록 메모리 컨트롤러(106)에 의해 사용될 수 있다. 고정 응답 시간은 언제 특정 읽기 요청에 대하여 응답할지를 판단하기 위해 각 메모리 모듈(104)에 의해 사용될 수 있다. 고정 응답 시간은 도 2에서 참조 번호 208로 표시된다.
도 2에 도시된 바와 같이, 읽기 요청은 화살표 210으로 표시된 시간 0에서 큐로부터 획득될 수 있다. 이용가능 시간 슬롯(202)을 식별하기 위해, 메모리 컨트롤러(106)는 읽기 요청이 큐로부터 획득된 시간인 시간 0에서 떨어진 적어도 하나의 고정 응답 시간인 제 1의 이용가능 시간 슬롯(202)을 식별한다. 도 2에 도시된 바와 같이, 화살표(212)로 표시된, 시간 0에서 떨어진 고정 응답 시간에서 시간 슬롯(202)이 예약된다. 따라서, 화살표(214)로 표시된 그 다음 이용가능 시간 슬롯이 제 1 슬롯 예약을 위해 선택된다.
추가적으로, 제 2 이용가능 시간 슬롯은 제 1 슬롯 예약에서 떨어진 적어도 하나의 고정 응답 시간인 제 1 이용가능 시간 슬롯(202)으로서 식별된다. 화살표 216에 의해 표시된, 제 2 슬롯 예약을 위해 식별된 시간 슬롯(202)은, 점유되어 있지 않고 따라서 제 2 슬롯 예약을 위해 사용될 수 있다. 시간 슬롯(202)이 점유되어 있었다면, 그 다음 이용가능 시간 슬롯(202)은 제 2 슬롯 예약을 위해 식별되었을 수 있고, 제 1 슬롯 예약은 동일한 수의 시간 슬롯에 의해 이동되었을 수 있어 제 1 슬롯 예약과 제 2 슬롯 예약 사이의 거리를 고정 응답 시간(208)과 같도록 유지하도록 한다. 또한, 제 1 및 제 2 시간 슬롯 예약 사이의 시간 간격이 고정 응답 시간(208)과 같더라도, 일 실시예에서, 제 1 슬롯 예약과 제 2 슬롯 예약 사이의 간격은 임의의 적합한 간격일 수 있고 고정 응답 시간보다 더 크거나 더 작을 수 있다는 것이 이해될 것이다. 또한 제 2 슬롯 예약은 제 1 슬롯 예약으로부터 떨어진 하나의 총 메모리 레이턴시보다 더 적게 위치될 수 있다는 것이 이해될 것이다. 만약 제 1 시간 슬롯 예약과 제 2 시간 슬롯 예약 사이의 시간 간격이 고정 응답 시간과 같지 않다면, 그 이후 제 2 고정 응답 시간은 제 2 슬롯 예약에 대하여 명시될 수 있고 시간 구성 단계 동안 메모리 모듈(104)과 통신될 수 있다.
반환 데이터에 대하여 사용될 수 있는 두 개의 이용가능 시간 슬롯(202)을 식별하고 나면, 메모리 컨트롤러(106)는 식별된 시간 슬롯을 예약하고 이로써 시간 슬롯은 후속 읽기 요청에 대하여 사용되지 못할 수 있다. 화살표 214로 표시된 제 1 시간 슬롯 예약은, 본원에서 "슬롯 1"로 지칭될 수 있고, 화살표 216으로 표시된 제 2 시간 슬롯 예약은 본원에서 "슬롯 2"로 지칭될 수 있다. 그 이후 메모리 컨트롤러(106)는, 제 1 슬롯 예약 및 고정 응답 시간에 기초하여 판단된 클럭 사이클에서 메모리 버스(110)를 거쳐 메모리 모듈(104)의 풀로 읽기 요청을 발행한다. 예를 들어, 읽기 요청은, 화살표 214로 표시된 바와 같이 제 1 슬롯 예약의 시간에서 고정 응답 시간(208)을 감산함으로써 판단된 클럭 사이클에서 발행될 수 있다. 이러한 방법으로, 시간 슬롯 예약의 위치는, 발행된 읽기 요청에서 떨어져 있는 알려진 수의 시간 슬롯이며, 반환 데이터는 슬롯 예약 시 공유 버스에 도착할 것이다. 일 실시예에서, (화살표 214로 표시된) 제 1 슬롯 예약 시간 및 (화살표 216으로 표시된) 제 2 슬롯 예약 시간은 읽기 요청 패킷을 가진 메모리 모듈(104)과 통신되지 않는다.
메모리 컨트롤러(106)는 슬롯 1(214) 및 슬롯 2(216)를 읽기 요청과 연관시키고, 이로써 데이터가 이러한 타임 슬롯에서 반환될 때, 데이터가 프로세서(102)의 적절한 캐시 라인에 보내질 수 있다. 반환 데이터는 요청된 데이터, 다시 말해, 읽기 요청에 의해 식별된 메모리 어드레스에서의 데이터를 포함할 수 있다. 타겟팅된 메모리 뱅크(112)가 사용 중인 경우 또는 임의의 다른 이유로 대응 메모리 모듈(104)이 요청된 데이터를 슬롯 1(214)에 반환하는데 사용할 수 없는 경우, 슬롯 1(214)에서 메모리 모듈에 의해 반환된 반환 데이터는 부정 승인(NACK)을 포함할 수 있다. 요청된 데이터는 그 이후 슬롯 2(216)에 반환될 수 있고, 그 때쯤 요청된 데이터는 대부분의 상황에서 이용가능한 것처럼 보일 것이다. 대부분의 경우, 요청된 데이터는 슬롯 1(214)에 반환될 것이다.
실시예들에서, 메모리 컨트롤러(106)는, 요청된 데이터가 슬롯 1(214)에 반환되는 경우 슬롯 2(216)의 예약이 비워질 수 있는 것과 같이 구성될 수 있고, 이것은 슬롯이 그 다음 읽기 요청에 대하여 이용가능하게 만든다. 따라서, 슬롯 2(216)의 예약은 메모리 인터페이스(100)의 전체적인 실효 대역폭에 실질적인 영향을 갖지 않을 것이다. 슬롯 2(216)를 슬롯 1(214)로부터 적어도 하나의 총 메모리 레이턴시만큼 떨어져 배치함으로써, 슬롯 2(216)의 예약은 적시에 비워져 슬롯이 후속의 읽기 요청에 대하여 이용가능하도록 비워질 수 있다. 슬롯 1(214)과 슬롯 2(216) 사이의 그러한 시간 갭은 슬롯 2(216) 반환에 대한 일부 추가의 레이턴시를 야기할 수 있으나, 슬롯 2(216)가 낭비될 가능성은 더 적게 만든다.
일부 경우에서, 긴 시리즈의 읽기 또는 쓰기 요청은 모두 동일한 뱅크에서 타겟팅될 수 있다. 이 경우, 메모리 모듈(104)은 슬롯 1(214) 또는 슬롯 2(216) 중 하나에 요청된 데이터를 반환하지 못할 수 있는데, 이는 뱅크 액세스 시간과 같은 시간에 의해 메모리 액세스가 간격을 둘 것이기 때문이다. 메모리 모듈(104)이 슬롯 1(214) 또는 슬롯 2(216)에서 데이터를 반환할 수 없는 경우, NACKs이 슬롯 1(214) 및 슬롯 2(216) 모두에서 반환될 수 있고, 읽기 요청이 나중에 메모리 컨트롤러(106)에 의해 재시도될 수 있다. 일 실시예에서, 요청은 메모리 컨트롤러(106)에 의해 유지되는 읽기 요청 큐의 결과로 푸시된다. 일 실시에에서, 메모리 컨트롤러(106)는 고정시간 동안 기다릴 수 있고, 새로운 세트의 시간 슬롯(202)에 대하여 중재할 수 있고 읽기 요청을 재발행할 수 있다. 이 프로세스는, 큐 점유(queue occupation)의 형태의 리소스, 낭비된 시간 슬롯(202), 및 어드레스 재전송 에너지를 소비하면서 잠정적으로 여러 번 반복될 수 있으나, 임의의 실질적인 방법으로 전체 성능에 영향을 미치지 않을 만큼 드문 것으로 예상된다.
도 3은 일 실시예에 따라 메모리 읽기 요청을 프로세싱하는 방법에 관한 프로세스 흐름도이다. 이 방법은 참조 번호 300으로 지칭되며 도 1의 컨트롤러(106)에 의해 구현될 수 있다. 방법은 블록 302에서 시작할 수 있으며, 여기서 읽기 요청이 큐로부터 수신된다. 블록 304에서, 상술된 바와 같이 메모리 컨트롤러는 이용가능 시간 슬롯을 식별한다. 이용가능 시간 슬롯은, 데이터를 가진 메모리 모듈에 대하여 명시된 고정 응답 시간 이상인 가장 가까운 점유되지 않은 시간 슬롯이다.
블록 306에서, 메모리 컨트롤러는 식별된 시간 슬롯을 예약하고 이로써 시간 슬롯은 후속 읽기 요청에 대하여 사용되지 못할 것이다. 시간 슬롯의 예약은, 반환 데이터가 예약된 시간 슬롯에서 반환할 것으로 예상되는 사이클 동안 어떠한 다른 읽기 요청도 발행되지 않을 수 있다는 것을 보장한다.
블록 308에서, 메모리 컨트롤러는 메모리 버스 상에 읽기 요청 패킷을 발행한다. 블록 304에서의 이용가능 시간 슬롯의 식별은 읽기 요청 패킷이 발행되는 사이클을 판단한다. 다시 말해, 읽기 요청 패킷은, 반환 데이터가 블록 304에서 식별된 시간 슬롯에서 반환하게 될 사이클에서 발행된다. 제 1 예약된 시간 슬롯은, 타겟팅된 메모리 모듈에 대하여 고정 응답 시간에 의해 표시된 사이클의 수에 의해 발행 사이클 이상일 것이다. 제 2 예약된 시간 슬롯은 타겟팅된 메모리 모듈에 대하여 고정 응답 시간에 의해 표시된 사이클의 수에 의해 제 1 예약된 시간 슬롯 이상이다.
블록 310에서, 제 1 예약 시간 슬롯에서 메모리 컨트롤러에 의해 데이터가 수신된다. 데이터는 요청된 데이터 또는 메모리 모듈(104)이 요청된 데이터를 제 1 시간 슬롯에서 반환할 수 없었다는 것을 나타내는 NACK과 같은 표시일 수 있다.
블록 312에서, NACK이 제 1 예약 시간 슬롯에서 반환되었는지에 관한 판단이 행해질 수 있다. NACK이 제 1 예약 시간 슬롯에서 반환되지 않았다면, 프로세스 플로우는 블록 314로 진행할 수 있으며, 여기서 반환된 데이터가 프로세싱된다.
블록 314에서, 요청된 데이터를 블록 308에서 발행된 읽기 요청 패킷과 연관된 프로세서 캐시로 송신함으로써 반환 데이터는 프로세싱된다. 블록 316에서, 제 2 예약 시간 슬롯의 예약은 비워지고, 타임 슬롯이 후속 읽기 요청에 대하여 이용가능하게 한다. 프로세스 플로우는 그 이후 블록 318로 진행할 수 있고 프로세스는 종료된다.
블록 312에서 NACK이 제 1 예약 시간 슬롯에서 반환되었다면, 프로세스 플로우는 블록 320으로 진행할 수 있다. 블록 320에서, 반환 데이터는 제 2 예약 시간 슬롯에서 수신된다. 블록 322에서, NACK이 제 2 예약 시간 슬롯에서 수신되었는지에 관한 판단이 행해진다. NACK이 수신되지 않았었다면, 프로세스 플로우는 블록 324로 진행할 수 있다. 블록 324에서, 요청된 데이터를 블록 308에서 발행된 읽기 요청 패킷과 연관된 프로세서 캐시 라인에 송신함으로써 반환 데이터가 프로세싱된다.
블록 322에서 제 2 NACK이 제 2 예약 시간 슬롯에서 반환되었었다면, 프로세스 플로우는 블록 326으로 진행할 수 있고 읽기 요청은 나중에, 예를 들어, 그러한 인스턴스에 대하여 메모리 컨트롤러(106)에 의해 명시된 시간 지연 이후, 재시도될 수 있다. 그 이후 프로세스 플로우는 블록 304로 돌아갈 수 있으며, 여기서 새로운 세트의 시간 슬롯이 새로운 요청 패킷에 대하여 식별될 수 있다.
도 4는 일 실시예에 따라 메모리 인터페이스를 구현하기 위한 코드를 저장하는 비일시적 컴퓨터 판독가능 매체를 도시하는 블록도이다. 비일시적, 컴퓨터 판독가능 매체는 개괄적으로 참조번호 400으로 지칭된다. 비일시적, 컴퓨터 판독 가능 매체(400)는 프로그래밍 코드 등과 같은 컴퓨터 구현 명령어를 저장하는 임의의 전형적인 저장 디바이스에 대응할 수 있다. 예를 들어, 비일시적, 컴퓨터 판독가능 매체(400)는 하나 이상의 비휘발성 메모리, 휘발성 메모리, 및 하나 이상의 저장 디바이스를 포함할 수 있다. 비휘발성 메모리의 예시들은, EEPROM(electrically erasable programmable read only memory) 및 ROM(read only memory)을 포함하나 이에 한정되지 않는다. 휘발성 메모리의 예시들은, SRAM(static random access memory), 및 DRAM(dynamic random access memory)를 포함하나 이제 한정되지는 않는다. 저장 디바이스의 예시들은, 하드 디스크 드라이브, 컴팩트 디스크 드라이브, 디지털 다기능 디스크(DVD) 드라이브, 광 드라이브, 및 플래시 메모리 디바이스를 포함하나 이에 한정되지 않는다. 비일시적, 컴퓨터 판독가능 매체(400)는 또한 주문형 반도체(ASIC)일 수 있다.
도 1에 도시된 바와 같은 프로세서(102) 또는 별도의 메모리 컨트롤러(106)일 수 있는 프로세서(402)는, 일반적으로 비일시적, 컴퓨터 판독가능 매체(400) 내에 저장된 명령어를 검색하고 실행하여 본원에서 설명된 메모리 인터페이스의 실시예들에 따른 메모리 동작을 프로세싱한다. 일 실시예에서, 유형의, 머신 판독가능 매체(400)는 컴퓨터 버스(404)를 거쳐 프로세서(402)에 의해 액세스될 수 있다. 제 1 영역(406)은, 메모리 모듈의 총 메모리 레이턴시에 적어도 부분적으로 기초하여 메모리 모듈의 고정 응답 시간을 판단하도록 구성된 타이밍 구성 모듈(a timing configuration module)을 포함할 수 있다.
제 2 영역(408)은, 읽기 요청에 대응하는 반환 데이터를 수신하기 위한 시간 슬롯을 식별하고 예약하도록 구성된 중재자(an arbitrator)를 포함할 수 있다. 중재자는 읽기 요청에 대응하는 반환 데이터를 수신하기 위해 이용가능 시간 슬롯을 식별할 수 있고, 여기서 현재 클럭 사이클과 이용가능 시간 사이의 시간 차이는 고정 응답 시간과 같거나 더 크다. 그 이후 중재자는 이용가능 시간 슬롯을 예약함으로써 제 1 슬롯 예약을 생성한다. 일 실시예에서, 중재자는 또한 읽기 요청에 대응하는 반환 데이터를 수신하기 위해 제 2 이용가능 시간 슬롯을 식별하고 제 2 이용가능 시간 슬롯을 예약함으로써 제 2 슬롯 예약을 생성한다. 제 1 슬롯 예약과 제 2 슬롯 예약 사이의 시간 간격은 고정 응답 시간과 같을 수 있다.
제 3 영역(410)은 메모리 모듈로 읽기 요청을 발행하도록 구성된 메모리 액세스 인터페이스를 포함할 수 있다. 읽기 요청은 제 1 슬롯 예약 시간에서 고정 응답 시간을 감산함으로써 판단된 클럭 사이클에서 발행될 수 있다. 일 실시예에서, 슬롯 예약들 중 어떤 것도 읽기 요청 패킷을 가진 메모리 모듈과 통신되지 않는다. 메모리 모듈이 고정 응답 시간에 읽기 요청에 응답하도록 구성되기 때문에, 반환 데이터는 제 1 슬롯 예약 시 공유 버스 상에 도착할 것이다. 반환 데이터는 읽기 요청에 의해 요청된 데이터 또는 데이터가 고정 응답 시간에 의해 명시된 시간에 이용가능하지 않았다는 표시를 포함할 수 있다. 메모리 액세스 인터페이스는 제 1 슬롯 예약 시 반환된 반환 데이터를 대응하는 읽기 요청과 연관시킨다. 추가적으로, 제 1 슬롯 예약 시 반환된 반환 데이터가 요청된 데이터에 의해 식별된 데이터인 경우, 메모리 액세스 인터페이스는 제 2 슬롯 예약을 비울 수 있다.
연속인 블록으로서 도시되었으나, 소프트웨어 컴포넌트들은 임의의 순서 또는 구성으로 저장될 수 있다. 예를 들어, 비일시적, 컴퓨터 판독가능 매체(400)가 하드 드라이브인 경우, 소프트웨어 컴포넌트는 비연속(non-contiguous) 또는 심지어 오버래핑(overlapping) 섹터에 저장될 수 있다.
Claims (15)
- 공유 버스를 통해 연결된 메모리 모듈의 풀(a pool of memory modules)을 동작시키는 방법으로서,
상기 메모리 모듈의 각각의 총 메모리 레이턴시(a total memory latency)에 기초하여 상기 메모리 모듈의 각각의 고정 응답 시간(a fixed response time)을 판단하는 단계와,
데이터 버스를 통해 상기 메모리 모듈의 타겟 메모리 모듈로부터 상기 메모리 모듈에 대한 읽기 요청에 대응하는 반환 데이터를 수신하기 위한 이용가능 시간 슬롯 ― 현재 클럭 사이클과 상기 이용가능 시간 슬롯 사이의 시간 차이는 상기 타겟 메모리 모듈의 고정 응답 시간과 같거나 더 큼 ― 을 식별하는 단계와,
상기 이용가능 시간 슬롯을 예약함으로써 제 1 슬롯 예약을 생성하는 단계와,
상기 데이터 버스를 통해 상기 메모리 모듈에 대한 상기 읽기 요청 ― 상기 읽기 요청은 상기 제 1 슬롯 예약의 시간에서 상기 타겟 메모리 모듈의 고정 응답 시간을 감산함으로써 결정된 클럭 사이클에서 발행됨 ― 을 발행하는 단계를 포함하는
메모리 모듈을 동작시키는 방법.
- 제 1 항에 있어서,
상기 타겟 메모리 모듈은 상기 고정 응답 시간에 대응하는 기한(deadline)에 상기 데이터 버스로 상기 반환 데이터를 송신하도록 구성되는
메모리 모듈을 동작시키는 방법.
- 제 1 항에 있어서,
상기 고정 응답 시간에 상기 반환 데이터를 수신하는 것에 기초하여 상기 반환 데이터를 대응하는 읽기 요청과 매칭하는(matching) 단계를 포함하는
메모리 모듈을 동작시키는 방법.
- 제 1 항에 있어서,
상기 타겟 메모리 모듈로부터 상기 반환 데이터를 수신하기 위한 상기 제 1 슬롯 예약은 상기 메모리 모듈과 통신되지 않는
메모리 모듈을 동작시키는 방법.
- 제 1 항에 있어서,
상기 제 1 슬롯 예약보다 더 늦은 시간에 제 2 이용가능 시간 슬롯을 식별하고 예약함으로써 상기 제 1 슬롯 예약과 관련된 상기 읽기 요청과 관련된 제 2 슬롯 예약을 생성하는 단계를 포함하되,
상기 타겟 메모리 모듈이 상기 읽기 요청에 의해 표시된 요청된 데이터를, 상기 제 1 슬롯 예약 시 상기 요청된 데이터가 도착하기 위한 시간 내에 반환할 수 없는 경우, 상기 읽기 요청에 대응하는 제 2 반환 데이터가 상기 제 2 슬롯 예약 시에 수신되는
메모리 모듈을 동작시키는 방법.
- 제 5 항에 있어서,
상기 제 1 슬롯 예약과 상기 제 2 슬롯 예약 사이의 시간 간격은 상기 타겟 메모리 모듈의 고정 응답 시간과 같은
메모리 모듈을 동작시키는 방법.
- 공유 버스를 통해 메모리 컨트롤러에 동작가능하게 연결된 메모리 모듈의 풀(a pool of memory modules)을 포함하는 시스템으로서,
상기 메모리 컨트롤러는 상기 메모리 모듈 각각의 총 메모리 레이턴시에 기초하여 상기 메모리 모듈 각각의 고정 응답 시간을 판단하도록 구성되고,
상기 메모리 컨트롤러는,
상기 메모리 모듈에 대한 읽기 요청에 대응하는 반환 데이터를 상기 메모리 모듈의 타겟 메모리 모듈로부터 수신하기 위한 이용가능 시간 슬롯을 식별 ― 현재 클럭 사이클과 상기 이용가능 시간 슬롯 사이의 시간 차이는 상기 타겟 메모리 모듈의 고정 응답 시간과 같거나 더 큼 ― 하고,
상기 이용가능 시간 슬롯을 예약함으로써 제 1 슬롯 예약을 생성하고,
상기 공유 버스를 통해 상기 읽기 요청 ― 상기 읽기 요청은 상기 타겟 메모리 모듈의 고정 응답 시간에 기초하여 결정된 클럭 사이클에서 발행되며 이로써 상기 반환 데이터는 상기 제 1 슬롯 예약 시 상기 공유 버스에 도착할 것임 ― 을 발행함으로써
상기 메모리 모듈의 풀의 상기 타겟 메모리 모듈에 대한 상기 읽기 요청을 발행하도록 구성되는
시스템.
- 제 7 항에 있어서,
상기 메모리 모듈 각각은 상기 읽기 요청에 의해 표시된 메모리 어드레스로부터 요청된 데이터를 획득하도록 구성된 모듈 컨트롤러를 포함하는
시스템.
- 제 8 항에 있어서,
상기 요청된 데이터가 상기 고정 응답 시간 내에 이용가능한 경우, 상기 모듈 컨트롤러는 상기 타겟 메모리 모듈의 상기 고정 응답 시간에 상기 요청된 데이터를 포함하는 상기 반환 데이터를 상기 공유 버스로 송신하는
시스템.
- 제 8 항에 있어서,
상기 요청된 데이터가 상기 고정 응답 시간 내에 이용가능하지 않은 경우, 상기 모듈 컨트롤러는 상기 타겟 메모리 모듈의 상기 고정 응답 시간에 부정 승인(a negative acknowledgment)을 포함하는 상기 반환 데이터를 상기 공유 버스로 송신하는
시스템.
- 제 7 항에 있어서,
상기 메모리 컨트롤러는 상기 제 1 슬롯 예약 시 상기 타겟 메모리 모듈에 의해 반환된 상기 반환 데이터를 대응하는 읽기 요청과 매칭하도록 구성되는
시스템.
- 제 7 항에 있어서,
상기 메모리 컨트롤러는 상기 제 1 슬롯 예약과 관련된 상기 읽기 요청과 동일한 읽기 요청에 관련된 제 2 슬롯 예약을 생성하도록 구성되되, 상기 제 1 슬롯 예약과 상기 제 2 슬롯 예약 사이의 시간 간격은 상기 타겟 메모리 모듈의 고정 응답 시간과 같은
시스템.
- 코드를 포함하는 비일시적 컴퓨터 판독가능 매체로서,
상기 코드는 프로세서로 하여금
공유 버스를 통해 연결된 메모리 모듈의 풀의 각각의 메모리 모듈의 총 메모리 레이턴시에 기초하여 상기 메모리 모듈의 풀의 각각의 고정 응답 시간을 판단하고,
상기 메모리 모듈에 대한 읽기 요청에 대응하는 반환 데이터를 상기 메모리 모듈의 타겟 메모리 모듈로부터 수신하기 위한 이용가능 시간 슬롯을 식별하고 ― 현재 클럭 사이클과 상기 이용가능 시간 슬롯 사이의 시간 차이는 상기 타겟 메모리 모듈의 고정 응답 시간과 같거나 더 큼 ―,
상기 이용가능 시간 슬롯을 예약함으로써 제 1 슬롯 예약을 생성하고,
상기 메모리 모듈에 대한 상기 읽기 요청 ― 상기 읽기 요청은 상기 제 1 슬롯 예약의 시간에서 상기 타겟 메모리 모듈의 고정 응답 시간을 감산함으로써 결정된 클럭 사이클에서 발행됨 ― 을 발행하도록 지시하도록 구성되는
비일시적 컴퓨터 판독가능 매체.
- 제 13 항에 있어서,
상기 프로세서로 하여금 상기 제 1 슬롯 예약 시 반환된 상기 반환 데이터를 상기 읽기 요청과 연관시키도록 지시하도록 구성되는 코드를 포함하되, 상기 제 1 슬롯 예약은 상기 메모리 모듈과 통신되지 않는
비일시적 컴퓨터 판독가능 매체.
- 제 13 항에 있어서,
상기 프로세서로 하여금
상기 읽기 요청에 대응하는 반환 데이터를 수신하기 위한 제 2 이용가능 시간 슬롯을 식별하고,
상기 제 2 이용가능 시간 슬롯을 예약함으로써 상기 제 1 슬롯 예약과 관련된 상기 읽기 요청과 동일한 읽기 요청에 관련된 제 2 슬롯 예약을 생성하도록 지시하는 코드를 포함하는
비일시적 컴퓨터 판독가능 매체.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2011/028357 WO2012125149A1 (en) | 2011-03-14 | 2011-03-14 | Memory interface |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20130136535A KR20130136535A (ko) | 2013-12-12 |
KR101527308B1 true KR101527308B1 (ko) | 2015-06-09 |
Family
ID=46831015
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020137027086A KR101527308B1 (ko) | 2011-03-14 | 2011-03-14 | 메모리 인터페이스 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9411757B2 (ko) |
EP (1) | EP2686774B1 (ko) |
JP (1) | JP5666722B2 (ko) |
KR (1) | KR101527308B1 (ko) |
WO (1) | WO2012125149A1 (ko) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102609378B (zh) * | 2012-01-18 | 2016-03-30 | 中国科学院计算技术研究所 | 一种消息式内存访问装置及其访问方法 |
US10116564B2 (en) * | 2014-11-10 | 2018-10-30 | Cavium, Inc. | Hybrid wildcard match table |
US11218410B2 (en) | 2014-11-10 | 2022-01-04 | Marvell Asia Pte, Ltd. | Hybrid wildcard match table |
US11943142B2 (en) | 2014-11-10 | 2024-03-26 | Marvell Asia Pte, LTD | Hybrid wildcard match table |
US9781225B1 (en) * | 2014-12-09 | 2017-10-03 | Parallel Machines Ltd. | Systems and methods for cache streams |
US9866498B2 (en) * | 2014-12-23 | 2018-01-09 | Intel Corporation | Technologies for network packet cache management |
US10810142B2 (en) | 2017-05-15 | 2020-10-20 | Xilinx, Inc. | Adaptive scheduling of memory requests |
US10140222B1 (en) | 2017-07-06 | 2018-11-27 | Micron Technology, Inc. | Interface components |
US10706005B2 (en) * | 2017-12-08 | 2020-07-07 | Vmware, Inc. | File system interface for remote direct memory access |
US10275352B1 (en) * | 2017-12-28 | 2019-04-30 | Advanced Micro Devices, Inc. | Supporting responses for memory types with non-uniform latencies on same channel |
WO2022025318A1 (ko) | 2020-07-30 | 2022-02-03 | 김영일 | Mmi 인터페이스 장치 및 그에 기반한 컴퓨팅 시스템 |
US11409684B2 (en) | 2020-07-31 | 2022-08-09 | Alibaba Group Holding Limited | Processing accelerator architectures |
US11625341B2 (en) * | 2020-08-11 | 2023-04-11 | Alibaba Group Holding Limited | Narrow DRAM channel systems and methods |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004310394A (ja) * | 2003-04-07 | 2004-11-04 | Sharp Corp | Sdramアクセス制御装置 |
WO2007105376A1 (ja) * | 2006-03-10 | 2007-09-20 | Matsushita Electric Industrial Co., Ltd. | 集積回路、及び集積回路システム |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS58159127A (ja) * | 1982-03-17 | 1983-09-21 | Nec Corp | メモリ制御装置 |
JPS60140451A (ja) * | 1983-12-28 | 1985-07-25 | Hitachi Ltd | メモリバス方式 |
JPH04119445A (ja) * | 1990-09-11 | 1992-04-20 | Canon Inc | 計算機システム |
US5699520A (en) | 1994-08-25 | 1997-12-16 | Hewlett-Packard Company | Flow control apparatus and method for a computer interconnect using adaptive credits and flow control tags |
US5717931A (en) * | 1994-12-20 | 1998-02-10 | Motorola, Inc. | Method and apparatus for communicating between master and slave electronic devices where the slave device may be hazardous |
JP3563541B2 (ja) | 1996-09-13 | 2004-09-08 | 株式会社東芝 | データ格納装置及びデータ格納方法 |
JPH11119923A (ja) | 1997-10-20 | 1999-04-30 | Fujitsu Ltd | データアクセス制御装置及びデータアクセス制御プログラムを記録した媒体 |
JPH11232040A (ja) * | 1998-02-17 | 1999-08-27 | Sony Corp | データ出力装置及び方法 |
US6377582B1 (en) | 1998-08-06 | 2002-04-23 | Intel Corporation | Decentralized ring arbitration for multiprocessor computer systems |
US6738845B1 (en) | 1999-11-05 | 2004-05-18 | Analog Devices, Inc. | Bus architecture and shared bus arbitration method for a communication device |
US6868486B1 (en) * | 2000-08-25 | 2005-03-15 | Ncr Corporation | Providing multiple memory controllers on a memory bus |
US6415369B1 (en) | 2000-08-29 | 2002-07-02 | Agere Systems Guardian Corp. | Shared devices and memory using split bus and time slot interface bus arbitration |
US7336283B2 (en) | 2002-10-24 | 2008-02-26 | Hewlett-Packard Development Company, L.P. | Efficient hardware A-buffer using three-dimensional allocation of fragment memory |
US20050080999A1 (en) * | 2003-10-08 | 2005-04-14 | Fredrik Angsmark | Memory interface for systems with multiple processors and one memory system |
US7925168B2 (en) | 2007-10-16 | 2011-04-12 | Hewlett-Packard Development Company, L.P. | Optical interconnect system providing communication between computer system components |
CN101911288B (zh) | 2007-10-23 | 2012-12-26 | 惠普开发有限公司 | 计算机系统设备中的全光学快速分布式仲裁 |
US7532785B1 (en) | 2007-10-23 | 2009-05-12 | Hewlett-Packard Development Company, L.P. | Photonic interconnects for computer system devices |
WO2010134201A1 (ja) * | 2009-05-22 | 2010-11-25 | 株式会社日立製作所 | 半導体装置 |
-
2011
- 2011-03-14 KR KR1020137027086A patent/KR101527308B1/ko active IP Right Grant
- 2011-03-14 WO PCT/US2011/028357 patent/WO2012125149A1/en active Application Filing
- 2011-03-14 US US14/005,196 patent/US9411757B2/en not_active Expired - Fee Related
- 2011-03-14 EP EP11860733.2A patent/EP2686774B1/en not_active Not-in-force
- 2011-03-14 JP JP2013557998A patent/JP5666722B2/ja not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004310394A (ja) * | 2003-04-07 | 2004-11-04 | Sharp Corp | Sdramアクセス制御装置 |
WO2007105376A1 (ja) * | 2006-03-10 | 2007-09-20 | Matsushita Electric Industrial Co., Ltd. | 集積回路、及び集積回路システム |
Also Published As
Publication number | Publication date |
---|---|
US9411757B2 (en) | 2016-08-09 |
EP2686774A4 (en) | 2014-08-20 |
WO2012125149A1 (en) | 2012-09-20 |
JP2014508361A (ja) | 2014-04-03 |
JP5666722B2 (ja) | 2015-02-12 |
EP2686774A1 (en) | 2014-01-22 |
KR20130136535A (ko) | 2013-12-12 |
EP2686774B1 (en) | 2017-02-01 |
US20140040518A1 (en) | 2014-02-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101527308B1 (ko) | 메모리 인터페이스 | |
CN110729006B (zh) | 存储器控制器中的刷新方案 | |
US20150046642A1 (en) | Memory command scheduler and memory command scheduling method | |
US7127574B2 (en) | Method and apparatus for out of order memory scheduling | |
EP2223217B1 (en) | System, apparatus, and method for modifying the order of memory accesses | |
US8909874B2 (en) | Memory reorder queue biasing preceding high latency operations | |
CN101609438B (zh) | 存储器系统、其访问控制方法和计算机程序 | |
US20210073152A1 (en) | Dynamic page state aware scheduling of read/write burst transactions | |
US8938589B2 (en) | Interface methods and apparatus for memory devices using arbitration | |
CN111742305A (zh) | 调度具有不统一等待时间的存储器请求 | |
TWI710910B (zh) | 使用同步化和非同步化記憶體裝置之適應性機制的混合記憶體、其方法及其儲存節點 | |
EP3732578B1 (en) | Supporting responses for memory types with non-uniform latencies on same channel | |
CN112382321B (zh) | 动态随机存取存储器的刷新方法及内存控制器、电子装置 | |
US8127087B2 (en) | Memory controller for improved read port selection in a memory mirrored system | |
US6934823B2 (en) | Method and apparatus for handling memory read return data from different time domains | |
US9620215B2 (en) | Efficiently accessing shared memory by scheduling multiple access requests transferable in bank interleave mode and continuous mode | |
US10852956B1 (en) | Structure of a high-bandwidth-memory command queue of a memory controller with external per-bank refresh and burst reordering | |
KR20230023014A (ko) | Dram 커맨드 스트리크 관리 | |
US20040059880A1 (en) | Low latency memory access method using unified queue mechanism | |
CN112259141B (zh) | 动态随机存取存储器的刷新方法及内存控制器、电子装置 | |
JP2020170315A (ja) | アクセス管理装置 | |
JP2006164099A (ja) | メモリ制御装置 | |
JP2000250850A (ja) | バス制御装置、マスタ装置及びスレーブ装置並びにバス制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20180601 Year of fee payment: 4 |