KR20210036986A - 커맨드 스케줄링을 위한 대역폭을 증가시키기 위한 메모리 서브 시스템 - Google Patents
커맨드 스케줄링을 위한 대역폭을 증가시키기 위한 메모리 서브 시스템 Download PDFInfo
- Publication number
- KR20210036986A KR20210036986A KR1020217008402A KR20217008402A KR20210036986A KR 20210036986 A KR20210036986 A KR 20210036986A KR 1020217008402 A KR1020217008402 A KR 1020217008402A KR 20217008402 A KR20217008402 A KR 20217008402A KR 20210036986 A KR20210036986 A KR 20210036986A
- Authority
- KR
- South Korea
- Prior art keywords
- command
- commands
- bank
- priority
- queue
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- 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/18—Handling requests for interconnection or transfer for access to memory bus based on priority control
-
- 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/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4234—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
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)
- Memory System (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
커맨드들이 커맨드 큐에서 수신되는 것에 기초하여 초기화가 수행된다. 초기화를 수행하기 위해, 커맨드들에 의해 액세스되는 뱅크들의 리스트, 및 리스트에서의 뱅크들 각각에 대한 뱅크 터치 카운트를 포함하는 뱅크 터치 카운트 리스트가 업데이트된다. 뱅크 터치 카운트는 뱅크들 각각에 액세스하는 커맨드들의 수를 식별한다. 뱅크 터치 카운트 리스트는 각각, 각자의 뱅크 터치 카운트에 기초하여 뱅크들 각각에 뱅크 우선 순위 랭크를 할당함으로써 업데이트된다. 초기화되면, 커맨트 큐에서의 커맨드들은 뱅크 터치 카운트 리스트에 기초하여 커맨드들 각각을 우선 순위 큐들로 삽입함으로써 스케줄링된다.
Description
우선권 출원
본 출원은 2018년 8월 24일자로 출원된 미국 출원 제16/111,974호의 이익을 주장하며, 이는 전문이 참조로 여기에 포함된다.
기술분야
본 개시의 실시 예들은 일반적으로 메모리 서브 시스템들에 관한 것으로서, 판독 우선 순위를 갖는 선준비, 선착순 처리("FRFCFS", first-ready, first-come, first-serve) 커맨드 스케줄링 정책과 같은 커맨드 스케줄링 정책들을 위한 대역폭을 증가시키기 위한 메모리 제어기 아키텍처에 관한 것이다.
메모리 서브 시스템은 저장 시스템, 이를테면 고체 상태 드라이브(SSD, solid-state drive)일 수 있고, 데이터를 저장하는 하나 이상의 메모리 구성요소를 포함할 수 있다. 메모리 구성요소들은 예를 들어, 비휘발성 메모리 구성요소들 및 휘발성 메모리 구성요소들일 수 있다. 일반적으로, 호스트 시스템은 메모리 서브 시스템을 이용하여 메모리 구성요소들에 데이터를 저장하고 메모리 구성요소들로부터 데이터를 검색할 수 있다.
본 개시는 아래에 주어지는 발명을 실시하기 위한 구체적인 내용 및 본 개시의 다양한 실시 예들의 첨부 도면들로부터 보다 충분히 이해될 것이다.
도 1은 본 개시의 일부 실시 예들에 따른 메모리 서브 시스템을 포함하는 예시적인 컴퓨팅 환경을 도시한다.
도 2는 본 개시의 일부 실시 예들에 따른 커맨드 스케줄링을 위한 대역폭을 증가시키기 위한 예시적인 방법의 흐름도이다.
도 3은 본 개시의 일부 실시 예들에 따른 커맨드 스케줄링을 위한 대역폭을 증가시키기 위한 방법에서 초기화(도 2의 동작 202)를 수행하는 예시적인 방법의 흐름도이다.
도 4는 본 개시의 일부 실시 예들에 따른 커맨드 스케줄링을 위한 대역폭을 증가시키기 위한 방법에서 커맨드들을 스케줄링하고 메모리 구성요소들에 발행하는(도 2의 동작 203) 예시적인 방법의 흐름도이다.
도 5는 본 개시의 일부 실시 예들에 따른 커맨드 스케줄링을 위한 대역폭을 증가시키기 위한 방법에서 커맨드 선택 프로세스(도 4의 동작 403)를 수행하는 예시적인 방법의 흐름도이다.
도 6은 본 개시의 일부 실시 예들에 따른 커맨드 스케줄링을 위한 대역폭을 증가시키기 위한 방법에서 높아진 커맨드 또는 판독 트랜잭션을 위한 판독 커맨드(도 4의 동작 409)를 프로세싱하는 예시적인 방법의 흐름도이다.
도 7은 본 개시의 일부 실시 예들에 따른 커맨드 스케줄링을 위한 대역폭을 증가시키기 위한 방법에서 판독-수정-기록(RMW, read-modify-write) 트랜잭션을 위한 판독 커맨드(도 4의 동작 411)를 프로세싱하는 예시적인 방법의 흐름도이다.
도 8은 본 개시의 일부 실시 예들에 따른 커맨드 스케줄링을 위한 대역폭을 증가시키기 위한 방법에서 기록 커맨드 또는 RMW 커맨드에 대한 기록 커맨드(도 4의 동작 412)를 프로세싱하는 예시적인 방법의 흐름도이다.
도 9는 본 개시의 실시 예들이 동작할 수 있는 예시적인 컴퓨터 시스템의 블록도이다.
도 1은 본 개시의 일부 실시 예들에 따른 메모리 서브 시스템을 포함하는 예시적인 컴퓨팅 환경을 도시한다.
도 2는 본 개시의 일부 실시 예들에 따른 커맨드 스케줄링을 위한 대역폭을 증가시키기 위한 예시적인 방법의 흐름도이다.
도 3은 본 개시의 일부 실시 예들에 따른 커맨드 스케줄링을 위한 대역폭을 증가시키기 위한 방법에서 초기화(도 2의 동작 202)를 수행하는 예시적인 방법의 흐름도이다.
도 4는 본 개시의 일부 실시 예들에 따른 커맨드 스케줄링을 위한 대역폭을 증가시키기 위한 방법에서 커맨드들을 스케줄링하고 메모리 구성요소들에 발행하는(도 2의 동작 203) 예시적인 방법의 흐름도이다.
도 5는 본 개시의 일부 실시 예들에 따른 커맨드 스케줄링을 위한 대역폭을 증가시키기 위한 방법에서 커맨드 선택 프로세스(도 4의 동작 403)를 수행하는 예시적인 방법의 흐름도이다.
도 6은 본 개시의 일부 실시 예들에 따른 커맨드 스케줄링을 위한 대역폭을 증가시키기 위한 방법에서 높아진 커맨드 또는 판독 트랜잭션을 위한 판독 커맨드(도 4의 동작 409)를 프로세싱하는 예시적인 방법의 흐름도이다.
도 7은 본 개시의 일부 실시 예들에 따른 커맨드 스케줄링을 위한 대역폭을 증가시키기 위한 방법에서 판독-수정-기록(RMW, read-modify-write) 트랜잭션을 위한 판독 커맨드(도 4의 동작 411)를 프로세싱하는 예시적인 방법의 흐름도이다.
도 8은 본 개시의 일부 실시 예들에 따른 커맨드 스케줄링을 위한 대역폭을 증가시키기 위한 방법에서 기록 커맨드 또는 RMW 커맨드에 대한 기록 커맨드(도 4의 동작 412)를 프로세싱하는 예시적인 방법의 흐름도이다.
도 9는 본 개시의 실시 예들이 동작할 수 있는 예시적인 컴퓨터 시스템의 블록도이다.
본 개시의 양태들은 커맨드 스케줄링을 위한 대역폭을 증가시키는 메모리 서브 시스템들에 관한 것이다. 메모리 서브 시스템은 이하에서 "메모리 디바이스(memory device)"라고도 한다. 메모리 서브 시스템의 일례는 고체 상태 드라이브(SSD)와 같은 저장 시스템이다. 일부 실시 예들에서, 메모리 서브 시스템은 하이브리드 메모리/저장 서브 시스템이다. 일반적으로, 호스트 시스템은 하나 이상의 메모리 구성요소를 포함하는 메모리 서브 시스템을 이용할 수 있다. 호스트 시스템은 메모리 서브 시스템에 저장될 데이터를 제공할 수 있고 메모리 서브 시스템으로부터 검색될 데이터를 요청할 수 있다.
메모리 서브 시스템은 호스트 시스템으로부터 데이터를 저장할 수 있는 다수의 메모리 구성요소들을 포함할 수 있다. 호스트 시스템가 겪는 레이턴시를 감소시키기 위한 노력으로, 메모리 서브 시스템은 특정 커맨드들을 우선 순위화하기 위한 커맨드 스케줄링 정책들을 구현할 수 있다. 커맨드 스케줄링 정책의 일례는 판독 우선 순위를 갖는 선준비, 선착순 처리(FRFCFS, first-ready, first-come, first-serve) 정책이다. 판독 우선 순위를 갖는 기본 FRFCFS 정책을 구현하기 위해, 메모리 서브 시스템은 개방 로우들에 대한 판독 커맨드들을 로우들을 가장 높은 우선 순위 큐(예를 들어, 큐 0)로, 폐쇄된 로우들에 대한 판독 커맨드들을 두 번째 높은 우선 순위 큐(예를 들어, 큐 -1)로, 개방 로우들에 대한 판독 커맨드들을 세 번째 높은 우선 순위 큐(예를 들어, 큐 -2)로, 폐쇄된 로우들에 대한 기록 커맨드들을 네 번째 높은 우선 순위 큐(예를 들어, 큐 -3)로 삽입한다. 메모리 서브 시스템은 준비 커맨드에 대해 첫 번째 및 두 번재 높은 우선 순위 큐들(예를 들어, 큐 0, -1)을 검색하고 발행을 위해 발견된 첫 번째 준비 커맨드를 선택할 것이다. 첫 번째 및 두 번재 높은 우선 순위 큐들(예를 들어, 큐 0, -1)에 커맨드들이 없다면, 메모리 서브 시스템세 번째 및 네 번재 높은 우선 순위 큐들(예를 들어, 큐 -2, -3)에서 준비 커맨드를 검색하고 발행을 위해 발견된 첫 번재 준비 커맨드를 선택한다.
판독 우선 순위를 갖는 FRFCFS 정책을 엄격하게 시행하는 기존의 메모리 서브 시스템은 보통 전체 대역폭을 실질적으로 감소시키는 효과를 가질 것이다. 보통, 판독 우선 순위를 갖는 FRFCFS 정책의 엄격한 구현은 기존의 메모리 서브 시스템으로 하여금 모든 판독 커맨드들의 커맨드 큐를 비우게 하여, 커맨드 큐에 기록 커맨드들만을 남긴다. 이후의 판독 커맨드가 커맨드 큐에 진입할 때, 기존의 메모리 서브 시스템은 판독 커맨드를 발행하기 위해 기록 커맨드들을 발행하는 것을 중지한 다음 기록 커맨드들을 발행하는 것으로 리턴할 것이다. 기록 커맨드들을 발행하는 것으로부터 판독 커맨드들로 또는 이 반대로 전환하는 것은 "버스 턴어라운드(turning the bus around)"이라고 하고 "버스 턴어라운드"와 연관된 패널티가 있다. 이에 따라, 기존의 메모리 서브 시스템이 별도로 판독 커맨드를 발행할 때마다, 버스 턴어라운드 페널티가 2회 발생되어 대역폭을 감소시킨다. 유사하게, 판독 우선 순위를 갖는 엄격한 FRFCFS 정책을 구현하면, 기존의 메모리 서브 시스템은 판독-수정-기록(RMW)의 판독 커맨드들을 어드레싱하지 못하고, 이에 따라, 버스 턴어라운드 페널티로 인해 대역폭이 악화된다.
나아가, 판독 우선 순위를 갖는 엄격한 FRFCFS 정책을 구현하는 데 있어서, 판독 커맨드와 동일하지만 상이한 로우에 있는 뱅크에 액세스하는 다수의 미결 기록 커맨드들이 있을 때, 기존의 메모리 서브 시스템은 판독 커맨드와 연관된 로우를 개방하기 위해 기록 커맨드의 로우를 폐쇄해야 할 것이다. 판독 커맨드가 완료되면, 기존의 메모리 서브 시스템은 판독 커맨드와 연관된 로우를 폐쇄하고 기록 커맨드의 로우를 재개방하여 계속해서 기록 커맨드들을 발행해야 한다. 추가 로우 커맨드들과 연관된 페널티들은 또한 전체 대역폭을 감소시킨다.
또한, 판독 우선 순위를 갖는 엄격한 FRFCFS 정책을 구현하는 기존의 메모리 서브 시스템은 액세스되고 있는 메모리 구성요소들 또는 큐에서의 다른 커맨드들의 준비를 고려하지 않고 커맨드 큐에서의 각자의 도달 순서에 의해 준비 기록 커맨드들을 우선 순위화함으로써 기록 커맨드들을 발행할 것이다. 이는 동일한 파티션 또는 뱅크(예를 들어, 메모리 구성요소에서의 논리적 저장 유닛)에 대한 기록 커맨드와 또 다른 커맨드 사이에 긴 지속 시간을 필요로 하는 메모리 구성요소들에 액세스할 때 전체 대역폭을 매우 악화시킬 수 있다.
본 개시의 양태들은 뱅크 액세스들의 수에 기초하여 커맨드들을 우선 순위화하고 대역폭에 대한 레이턴시를 트레이드 오프할 수 있게 하는 파라미터들을 구현하는 메모리 서브 시스템을 가짐으로써 상기한 그리고 다른 결함들을 해결한다.
준비 기록 커맨드들을 발행할 때, 메모리 서브 시스템은 대역폭을 개선하기 위해 커맨드 큐에서의 다른 커맨드들의 준비에 관한 기록 커맨드들을 발행하는 효과들을 고려한다. 메모리 서브 시스템은 소정의 뱅크에 대한 기록 커맨드들을 이러한 소정의 뱅크에 대한 미결 커맨드들의 수에 의해 우선 순위화한다. 소정의 뱅크에 대한 기록 커맨드의 우선 순위는 이러한 소정의 뱅크에 대한 미결 커맨드들의 수에 따라 증가한다. 유사하게, 메모리 서브 시스템은 또한 소정의 뱅크에 대한 RMW 커맨드들과 연관된 판독 커맨드들을 이러한 소정의 뱅크에 대한 미결 커맨드들의 수에 의해 우선 순위화할 수 있다. 소정의 뱅크에 대한 RMW 커맨드들과 연관된 판독 커맨드의 우선 순위는 이러한 소정의 뱅크에 대한 미결 커맨드들의 수에 따라 증가한다.
도 1은 본 개시의 일부 실시 예들에 따른 메모리 서브 시스템(110)을 포함하는 예시적인 컴퓨팅 환경(100)을 도시한다. 메모리 서브 시스템(110)은 메모리 구성요소들(112A 내지 112N)과 같은 매체들을 포함할 수 있다. 메모리 구성요소들(112A 내지 112N)은 휘발성 메모리 구성요소들, 비휘발성 메모리 구성요소들, 또는 이들의 조합일 수 있다. 일부 실시 예들에서, 메모리 서브 시스템은 저장 시스템이다. 저장 시스템의 일례는 SSD이다. 일부 실시 예들에서, 메모리 서브 시스템(110)은 하이브리드 메모리/저장 서브 시스템이다. 일반적으로, 컴퓨팅 환경(100)은 메모리 서브 시스템(110)을 사용하는 호스트 시스템(120)을 포함할 수 있다. 예를 들어, 호스트 시스템(120)은 메모리 서브 시스템(110)에 데이터를 기록하고 메모리 서브 시스템(110)으로부터 데이터를 판독할 수 있다.
호스트 시스템(120)은 컴퓨팅 디바이스 이를테면 데스크탑 컴퓨터, 랩탑 컴퓨터, 네트워크 서버, 모바일 디바이스, 또는 메모리 및 프로세싱 디바이스를 포함하는 컴퓨팅 디바이스일 수 있다. 호스트 시스템(120)은 호스트 시스템(120)이 메모리 서브 시스템(110)으로부터 데이터를 판독하거나 이에 데이터를 기록할 수 있도록 메모리 서브 시스템(110)을 포함하거나 이에 결합될 수 있다. 호스트 시스템(120)은 물리적 호스트 인터페이스를 통해 메모리 서브 시스템(110)에 결합될 수 있다. 여기서 사용될 때, "~에 결합된(coupled to)"은 일반적으로 전기적, 광학적, 자기적 등과 같은 연결들을 포함하여, 유선이든 무선이든, 간접 통신 연결 또는 직접 통신 연결일 수 있는 구성요소들 간 연결을 지칭한다. 물리적 호스트 인터페이스의 예들은 SATA(serial advanced technology attachment) 인터페이스, PCIe(peripheral component Interconnect express) 인터페이스, USB(universal serial bus) 인터페이스, 파이버 채널, 직렬 접속 SCSI(SAS) 등을 포함하나, 이에 제한되지는 않는다. 물리적 호스트 인터페이스는 호스트 시스템(120)과 메모리 서브 시스템(110) 사이에서 데이터를 송신하는 데 사용될 수 있다. 호스트 시스템(120)은 또한 메모리 서브 시스템(110)이 PCIe 인터페이스에 의해 호스트 시스템(120)과 결합될 때 NVMe(NVM Express) 인터페이스를 이용하여 메모리 구성요소들(112A 내지 112N)에 액세스할 수 있다. 물리적 호스트 인터페이스는 메모리 서브 시스템(110)과 호스트 시스템(120) 사이에서 제어, 어드레스, 데이터 및 다른 신호들을 전달하기 위한 인터페이스를 제공할 수 있다.
메모리 구성요소들(112A 내지 112N)은 상이한 유형들의 비휘발성 메모리 구성요소들 및/또는 휘발성 메모리 구성요소들의 임의의 조합을 포함할 수 있다. 비휘발성 메모리 구성요소들의 일례는 부정 곱(NAND) 유형 플래시 메모리를 포함한다. 메모리 구성요소들(112A 내지 112N) 각각은 단일 레벨 셀들(SLC들) 또는 다중 레벨 셀들(MLC들)(예를 들어, 삼중 레벨 셀들(TLC들) 또는 사중 레벨 셀들(QLC들))과 같은 메모리 셀들의 하나 이상의 어레이를 포함할 수 있다. 일부 실시 예에서, 특정 메모리 구성요소는 메모리 셀들의 SLC 부분 및 MLC 부분 양자를 포함할 수 있다. 메모리 셀들 각각은 호스트 시스템(120)에 의해 사용되는 데이터의 하나 이상의 비트(예를 들어, 데이터 블록)를 저장할 수 있다. NAND형 플래시 메모리와 같은 비휘발성 메모리 구성요소들이 설명되지만, 메모리 구성요소들(112A 내지 112N)은 휘발성 메모리와 같은 임의의 다른 유형의 메모리에 기초할 수 있다. 일부 실시 예들에서, 메모리 구성요소들(112A 내지 112N)은 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 동적 랜덤 액세스 메모리(DRAM), 동기식 동적 랜덤 액세스 메모리(SDRAM), 상 변화 메모리(PCM), 자기 랜덤 액세스 메모리(MRAM), 부정 합(NOR) 플래시 메모리, 전기적으로 소거 가능한 프로그래밍 가능한 판독 전용 메모리(EEPROM), 및 비휘발성 메모리 셀들의 크로스 포인트 어레이일 수 있으나, 이에 제한되지는 않는다. 비휘발성 메모리의 크로스 포인트 어레이는 적층 가능한 크로스 그리드 데이터 액세스 어레이와 함께, 벌크 저항의 변화에 기초하여 비트 저장을 수행할 수 있다. 또한, 많은 플래시 기반 메모리들과 대조적으로, 크로스 포인트 비휘발성 메모리는 제자리 기록 동작을 수행할 수 있으며, 여기서 비휘발성 메모리 셀은 비휘발성 메모리 셀이 사전에 소거되지 않고도 프로그래밍될 수 있다. 뿐만 아니라, 메모리 구성요소들(112A 내지 112N)의 메모리 셀들은 데이터를 저장하는 데 사용되는 메모리 유닛을 나타낼 수 있는 메모리 페이지들 또는 데이터 블록들로서 그룹화될 수 있다.
메모리 시스템 제어기(115)(이하 "제어기"라고 함)는 메모리 구성요소들(112A 내지 112N)에서의 데이터 판독, 데이터 기록 또는 데이터 소거와 같은 동작들 및 다른 이러한 동작들을 수행하기 위해 메모리 구성요소들(112A 내지 112N)과 통신할 수 있다. 제어기(115)는 하나 이상의 집적 회로 및/또는 개별 구성요소, 버퍼 메모리, 또는 이들의 조합과 같은 하드웨어를 포함할 수 있다. 제어기(115)는 마이크로 제어기, 특수 목적 논리 회로부(예를 들어, 필드 프로그래밍 가능한 게이트 어레이(FPGA), 용도 특정 집적 회로(ASIC) 등) 또는 다른 적합한 프로세서일 수 있다. 제어기(115)는 로컬 메모리(119)에 저장된 명령어들을 실행하도록 구성된 프로세서(프로세싱 디바이스)(117)를 포함할 수 있다. 도시된 예에서, 제어기(115)의 로컬 메모리(119)는 메모리 서브 시스템(110)과 호스트 시스템(120) 사이의 통신을 핸들링하는 것을 포함하여, 메모리 서브 시스템(110)의 동작을 제어하는 다양한 프로세스들, 동작들, 논리 흐름들, 및 루틴들을 수행하기 위한 명령어들을 저장하도록 구성된 임베디드 메모리를 포함한다. 일부 실시 예들에서, 로컬 메모리(119)는 메모리 포인터들, 페치된 데이터 등을 저장하는 메모리 레지스터들을 포함할 수 있다. 로컬 메모리(119)는 또한 마이크로 코드를 저장하기 위한 판독 전용 메모리(ROM)를 포함할 수 있다. 도 1에서의 예시적인 메모리 서브 시스템(110)은 제어기(115)를 포함하는 것으로 도시되었지만, 본 개시의 또 다른 실시 예에서, 메모리 서브 시스템(110)은 제어기(115)를 포함하지 않을 수 있고, 대신 외부 제어(예를 들어, 외부 호스트에 의해 또는 메모리 서브 시스템과 별개인 프로세서 또는 제어기에 의해 제공되는)에 의존할 수 있다.
일반적으로, 제어기(115)는 호스트 시스템(120)으로부터 커맨드들 또는 동작들을 수신할 수 있고 커맨드들 또는 동작들을 메모리 구성요소들(112A 내지 112N)에의 요구되는 액세스를 이루기 위한 명령어들 또는 적절한 커맨드들로 변환할 수 있다. 제어기(115)는 웨어 레벨링 동작들, 가비지 수집 동작들, 에러 검출 및 에러 정정 코드(ECC, error-correcting code) 동작들, 암호화 동작들, 캐싱 동작들, 및 메모리 구성요소들(112A 내지 112N)과 연관된 논리 블록 어드레스와 물리 블록 어드레스 간의 어드레스 변환과 같은 다른 동작들을 담당할 수 있다. 제어기(115)는 물리적 호스트 인터페이스를 통해 호스트 시스템(120)과 통신하기 위한 호스트 인터페이스 회로부를 더 포함할 수 있다. 호스트 인터페이스 회로부는 호스트 시스템으로부터 수신된 커맨드들을 메모리 구성요소들(112A 내지 112N)에 액세스하기 위한 커맨드 명령어들로 변환할 뿐만 아니라 메모리 구성요소들(112A 내지 112N)과 연관된 응답들을 호스트 시스템(120)에 대한 정보로 변환할 수도 있다.
메모리 서브 시스템(110)은 또한 도시되지 않은 추가 회로부 또는 구성요소들을 포함할 수 있다. 일부 실시 예들에서, 메모리 서브 시스템(110)은 메모리 구성요소들(112A 내지 112N)에 액세스하기 위해 제어기(115)로부터 어드레스를 수신하고 어드레스를 디코딩할 수 있는 어드레스 회로부(예를 들어, 로우 디코더 및 컬럼 디코더) 및 캐시 또는 버퍼(예를 들어, DRAM)를 포함할 수 있다.
메모리 서브 시스템(110)은 대응하는 사용량 임계치에 기초하여 특정 메모리 구성요소에 데이터를 저장하는 데 사용될 수 있는 커맨드 제어기(113)를 포함한다. 일부 실시 예들에서, 제어기(115)는 커맨드 제어기(113)의 적어도 일 부분을 포함한다. 예를 들어, 제어기(115)는 본 명세서에서 설명된 동작들을 수행하기 위해 로컬 메모리(119)에 저장된 명령어들을 실행하도록 구성된 프로세서(117)(프로세싱 디바이스)를 포함할 수 있다. 일부 실시 예들에서, 커맨드 제어기(113)는 호스트 시스템(110), 애플리케이션, 또는 운영 체제의 일부이다.
커맨드 제어기(113)는 호스트 시스템(120)으로부터 커맨드를 수신하고, 커맨드의 유형(예를 들어, 판독 커맨드, 기록 커맨드, RMW 커맨드와 연관된 판독 커맨드 및 RMW 커맨드와 연관된 기록 등) 및 커맨드에 연관된 뱅크에 대한 뱅크 액세스들의 수에 기초하여 커맨드를 스케줄링할 수 있다. 커맨드 제어기(113)는 또한 애플리케이션들의 요구에 기초하여 레이턴시와 대역폭을 트레이드 오프할 수 있게 하는 임계 파라미터들을 사용하여 커맨드를 스케줄링한다. 커맨드 제어기(113)는 스토리지(예를 들어, 로컬 메모리(119))에 임계 파라미터들을 저장할 수 있다. 임계 파라미터들은 (i) 동일한 뱅크에 액세스하는 모든 다른 커맨드들이 차단되기 전에 판독 커맨드가 커맨드 큐에 남아 있을 수 있는 시간량을 특정하는 임계 파라미터인 "최대 판독 커맨드 시기(maximum read command age)", 및 (ii) 판독 커맨드가 커맨드 큐에 놓이고 동일한 채널 상의 임의의 다른 커맨드에 의해 발행되는 것이 방지될 시간량에 관한 하드 한계(hard limit)를 확립하는 임계 파라미터인 "하드 최대 판독 커맨드 에이지(hard maximum read command age)"를 포함한다. 임계 파라미터들은 또한 (iii) 커맨드 제어기(113)가 판독-기록 턴어라운드를 수행할 수 있기 전에 커맨드 큐에 있어야 하는 최소 판독 커맨드들의 수를 설정하는 임계 파라미터인 "턴어라운드 전 최소 판독들"을 포함한다. 임계 파라미터들은 또한 (iv) 판독-수정-기록들에 이용 가능한 판독 응답 버퍼 공간의 양을 설정하는 임계 파라미터인 "판독-수정-기록들에 대한 최대 판독 버퍼 공간"을 포함할 수 있다. 커맨드 제어기(113)의 커맨드의 동작들에 관한 추가 세부 사항들은 후술된다.
도 2는 본 개시의 일부 실시 예들에 따른 커맨드 스케줄링을 위한 대역폭을 증가시키기 위한 예시적인 방법(200)의 흐름도이다. 방법(200)은 하드웨어(예를 들어, 프로세싱 디바이스, 회로부, 전용 로직, 프로그래밍 가능한 로직, 마이크로 코드, 디바이스의 하드웨어, 집적 회로 등), 소프트웨어(예를 들어, 프로세싱 디바이스 상에서 운영 또는 실행되는 명령어들), 또는 이들의 조합을 포함할 수 있는 프로세싱 로직에 의해 수행될 수 있다. 일부 실시 예들에서, 방법(200)은 도 1의 메모리 커맨드 제어기(113)에 의해 수행된다. 특정 시퀀스 또는 순서로 도시되지만, 달리 특정되지 않는 한, 프로세스들의 순서는 수정될 수 있다. 이에 따라, 도시된 실시 예들은 예들로서만 이해되어야 하고, 도시된 프로세스들은 상이한 순서로 수행될 수 있으며, 일부 프로세스들은 병렬적으로 수행될 수도 있다. 또한, 다양한 실시 예들에서는 하나 이상의 프로세스가 생략될 수 있다. 이에 따라, 모든 프로세스들이 모든 실시 예에서 필수적인 것은 아니다. 다른 프로세스 흐름들도 가능하다.
동작 201에서, 프로세싱 디바이스 디바이스는 커맨드 큐에서 호스트 시스템으로부터 커맨드들을 수신한다. 커맨드들은, 예를 들어, 판독 커맨드들, 판독-수정-기록(RMW)커맨드들과 연관된 판독 커맨드들, 기록 커맨드들, 또는 RMW 커맨드들과 연관된 기록 커맨드들일 수 있다. RMW 커맨드는 일부 메모리 구성요소들 또는 시스템 구성들에 대해 메모리의 부분 유닛을 수정하기 위해 필요한 커맨드들의 시퀀스이다. 필요한 판독 및 기록 커맨드들의 시퀀스는 "판독-수정-기록"(RMW, read-modify-write)으로 칭해진다. 동작 202에서, 프로세싱 디바이스는 커맨드들에 기초하여 초기화를 수행한다. 동작 303에서, 프로세싱 디바이스는 커맨드 큐에서의 커맨드들을 스케줄링하고 발행한다.
도 3은 본 개시의 일부 실시 예들에 따른 커맨드 스케줄링을 위한 대역폭을 증가시키기 위한 방법에서 초기화(도 2의 동작 202)를 수행하는 예시적인 방법(300)의 흐름도이다. 방법(300)은 하드웨어(예를 들어, 프로세싱 디바이스, 회로부, 전용 로직, 프로그래밍 가능한 로직, 마이크로 코드, 디바이스의 하드웨어, 집적 회로 등), 소프트웨어(예를 들어, 프로세싱 디바이스 상에서 운영 또는 실행되는 명령어들), 또는 이들의 조합을 포함할 수 있는 프로세싱 로직에 의해 수행될 수 있다. 일부 실시 예들에서, 방법(300)은 도 1의 메모리 커맨드 제어기(113)에 의해 수행된다. 특정 시퀀스 또는 순서로 도시되지만, 달리 특정되지 않는 한, 프로세스들의 순서는 수정될 수 있다. 이에 따라, 도시된 실시 예들은 예들로서만 이해되어야 하고, 도시된 프로세스들은 상이한 순서로 수행될 수 있으며, 일부 프로세스들은 병렬적으로 수행될 수도 있다. 또한, 다양한 실시 예들에서는 하나 이상의 프로세스가 생략될 수 있다. 이에 따라, 모든 프로세스들이 모든 실시 예에서 필수적인 것은 아니다. 다른 프로세스 흐름들도 가능하다.
초기화를 수행하기 위해, 프로세싱 디바이스는 동작 301에서, 커맨드 큐에서 커맨드를 수신한다. 동작 302에서, 프로세싱 디바이스는 커맨드의 진입 시간을 레코딩한다. 커맨드의 진입 시간은 커맨드가 커맨드 큐에 진입한 시간이다. 프로세싱 디바이스는 메모리 서브 시스템에 포함된 시스템 타이머에 기초하여 커맨드의 진입 시간을 레코딩할 수 있다.
동작 303에서, 프로세싱 디바이스는 커맨드가 판독 커맨드인지 여부를 결정한다. 커맨드가 판독 커맨드인 경우, 동작 304에서, 프로세싱 디바이스는 미결 판독들의 수를 증분시킨다. 프로세싱 디바이스는 미결 판독들의 수를 메모리 서브 시스템에 저장할 수 있다. 동작 304에서 미결 판독들의 수가 증분되면, 또는 동작 303에서 커맨드가 판독 커맨드가 아닌 경우, 프로세싱 디바이스는 커맨드 큐에서의 커맨드들에 의해 액세스되고 있는 뱅크들의 리스트, 및 각각, 뱅크들 각각에 액세스하는 커맨드들의 수를 식별하는 리스트에서의 뱅크들 각각에 대한 뱅크 터치 카운트를 포함하는 뱅크 터치 카운트 리스트를 업데이트한다. 프로세싱 디바이스는 메모리 서브 시스템에 뱅크 터치 카운트 리스트를 저장할 수 있다. 뱅크 터치 카운트 리스트를 업데이트하기 위해, 프로세싱 디바이스는 동작 305에서 커맨드의 타겟 뱅크가 뱅크 터치 카운트 리스트에 있는지를 결정한다. 타겟 뱅크는 커맨드에 의해 액세스되고 있는 뱅크이다. 타겟 뱅크가 뱅크 터치 카운트 리스트에 있지 않은 경우, 프로세싱 디바이스는 동작 306에서 타겟 뱅크를 뱅크 터치 카운트 리스트에서의 뱅크들의 리스트로 삽입한다. 동작 306에서, 프로세싱 디바이스는 또한 타겟 뱅크의 뱅크 터치 카운트를 0으로 설정한다. 동작 307에서, 프로세싱 디바이스는 타겟 뱅크의 뱅크 터치 카운트를 1 증가시킨다.
동작 308에서, 프로세싱 디바이스는 뱅크들의 리스트에서의 뱅크들 각각에 뱅크 우선 순위 랭크를 할당한다. 뱅크 우선 순위 랭크는 뱅크들 각각에 대한 뱅크 터치 카운트에 기초한다. 더 높은 뱅크 우선 순위 랭크가 더 높은 뱅크 터치 카운트를 갖는 뱅크들에 할당될 수 있다.
일 실시 예에서, 프로세싱 디바이스는 소정의 뱅크에 대한 기록 커맨드들을 이러한 소정의 뱅크에 대한 미결 커맨드들의 수에 의해 우선 순위화한다. BT 뱅크들이 미결 커맨드들을 갖는다면(여기서 BT는 터치된 뱅크들의 수이다), 대부분 미결 커맨드들을 갖는 뱅크는 P=0을 가질 것이고, 가장 적은 미결 커맨드들을 갖는 뱅크는 P=BT-1을 가질 것이다. 소정의 뱅크에 대한 기록 커맨드(W)의 우선 순위는 이러한 소정의 뱅크(B)에 대한 미결 커맨드들(C)의 수에 따라 증가한다(즉, 대부분 미결 커맨드들을 갖는 뱅크는 가장 높은 우선 순위(P)를 가질 것이고 가장 적은 미결 커맨드들을 갖는 뱅크는 가장 낮은 우선 순위(P)를 가질 것이며, 여기서 P는 뱅크의 우선 순위 값이다). 일 실시 예에서, 메모리 서브 시스템은 커맨드 큐에서의 커맨드들에 의해 터치되거나 액세스되는 각 뱅크에 대한 두 개의 우선 순위 큐들 및 첫 번재 및 두 번째 높은 우선 순위 큐들(예를 들어, 큐들 0, -1)인 두 개의 추가의 우선 순위 큐들을 생성한다. 터치되는 각 뱅크에 대한 두 개의 우선 순위 큐들은 개방 로우들에 액세스하는 커맨드들에 대한 더 높은 우선 순위 큐 및 폐쇄된 로우에 액세스하는 커맨드들에 대한 더 낮은 우선 순위 큐를 포함한다. 프로세싱 디바이스는 판독 커맨드들 및 높아진 커맨드들에 대해 첫 번째 및 두 번재 높은 우선 순위 큐들(예를 들어, 큐들 0, -1)을 예약한다. 높아진 커맨드들은 각자의 발행을 지연시키는 것이 반드시 판독 커맨드의 발행을 지연시킬 것이기 때문에 높아진 커맨드들이다. 예를 들어, 더 이전의 기록 커맨드가 더 새로운 판독 커맨드와 페이지 충돌을 가질 때, 더 이전의 기록 커맨드는 판독이 진행될 수 있도록 높아진 커맨드가 되고 발행된다. 이 다음, 프로세싱 디바이스는 기록 커맨드들을 우선 순위화하기 위해 나머지 우선 순위 큐들 (2*BT, 여기서 BT는 터치된 뱅크들의 수이다)을 예약한다. 이러한 실시 예에서, 프로세싱 디바이스는 2*BT +2(여기서 BT는 터치된 뱅크들의 수이다)와 동일한 총 우선 순위 큐들의 수를 가진다. 일 실시 예에서, 상기한 예에서 기록 커맨드(W)를 스케줄링할 때, 기록 커맨드(W)와 연관된 커맨드 로우가 개방된 경우 프로세싱 디바이스는 기록 커맨드(W)를 우선 순위 큐 (-2*P)-2(여기서 P는 뱅크의 우선 순위 값이다)에 삽입하고, 기록 커맨드(W)와 연관된 커맨드 로우가 폐쇄된 경우 프로세싱 디바이스는 기록 커맨드(W)를 우선 순위 큐 (-2*P)-3(여기서 P는 뱅크의 우선 순위 값이다)에 삽입한다.
일 실시 예에서, 프로세싱 디바이스는 예를 들어, BT 액세스된 뱅크들 각각에 액세스하는 커맨드 큐에서 현재 커맨드들의 수를 추적하기 위해 데이터 구조들을 사용할 수 있다. 뱅크 터치 카운트 리스트에서의 소정의 뱅크(B)에 대해, 뱅크 터치 카운트 리스트에서의 뱅크(B)의 인덱스는 다른 기록 커맨드들에 대한 기록 커맨드들의 우선 순위를 나타낼 수 있다. 일 실시 예에서, 뱅크 터치 카운트 리스트는 뱅크 터치 맵을 더 포함하고 뱅크 터치 카운트 리스트에서의 각 엔트리는 뱅크 터치 맵에서의 대응하는 엔트리를 가진다. 커맨드가 커맨드 큐로부터 삽입되거나 제거될 때, 프로세싱 디바이스는 뱅크 터치 카운트 리스트를 업데이트한다. 일 실시 예에서, 뱅크 터치 카운트 리스트에서의 뱅크들의 리스트는 리스트 데이터 구조이다. 리스트 데이터 구조는 가장 높은 수의 뱅크 터치 카운트들을 갖는 뱅크들 내지 가장 낮은 뱅크 터치 카운트들을 갖는 뱅크들의 순서로 뱅크들의 리스트를 포함한다.
일 실시 예에서, 판독 트랜잭션들의 레이턴시를 감소시키나 또한 버스 턴어라운드와 연관된 페널티들을 지불해야 하는 것을 회피하기 위해, 프로세싱 디바이스는 RMW와 연관된 판독 커맨드들에 기록 커맨드보다 더 높은 우선 순위, 그러나 판독 트랜잭션들과 연관된 판독 커맨드보다 더 낮은 우선 순위를 할당한다. 일 실시 예에서, 프로세싱 디바이스는 소정의 뱅크에 대한 RMW 커맨드들과 연관된 판독 커맨드들을 이러한 소정의 뱅크에 대한 미결 커맨드들의 수에 의해 우선 순위화한다. 소정의 뱅크에 대한 RMW 커맨드들과 연관된 판독 커맨드의 우선 순위는 이러한 소정의 뱅크에 대한 미결 커맨드들의 수에 따라 증가한다. 일 실시 예에서, 판독 커맨드들 및 높아진 커맨드들에 대한 첫 번째 및 두 번재 높은 우선 순위 큐들(예를 들어, 큐 0, -1) 및 기록 커맨드들을 우선 순위화하기 위한 우선 순위 큐들 (2*BT, 여기서 BT는 터치된 뱅크들의 수이다)에 더하여, 프로세싱 디바이스는 또한 RMW 커맨드들과 연관된 판독 커맨드들을 우선 순위화하기 위한 우선 순위 큐들을 생성한다. 이러한 실시 예에서, 프로세싱 디바이스는 RMW 커맨드들과 연관된 판독 커맨드들에 대한 커맨드 큐 (2*BT)에서의 커맨드들에 의해 터치되거나 액세스되는 각 뱅크에 대한 두 개의 우선 순위 큐들을 생성한다. 터치되는 각 뱅크에 대한 두 개의 우선 순위 큐들은 개방 로우들에 액세스하는 커맨드들에 대한 더 높은 우선 순위 큐 및 폐쇄된 로우에 액세스하는 커맨드들에 대한 더 낮은 우선 순위 큐를 포함한다. 이러한 실시 예에서, 프로세싱 디바이스는 2*(2*BT) +2(여기서 BT는 터치된 뱅크들의 수이다)와 동일한 총 우선 순위 큐들의 수를 생성한다. 이러한 실시 예에서, RMW 커맨드들과 연관된 판독 커맨드들에 대한 우선 순위 큐들은 기록 커맨드들 및 RMW 커맨드들과 연관된 기록 커맨드들에 대해 우선 순위 큐들보다 더 높은 우선 순위를 가진다.
도 4는 본 개시의 일부 실시 예들에 따른 커맨드 스케줄링을 위한 대역폭을 증가시키기 위한 방법에서 커맨드들을 스케줄링하고 메모리 구성요소들에 발행하는(도 2의 동작 203) 예시적인 방법(400)의 흐름도이다. 방법(400)은 하드웨어(예를 들어, 프로세싱 디바이스, 회로부, 전용 로직, 프로그래밍 가능한 로직, 마이크로 코드, 디바이스의 하드웨어, 집적 회로 등), 소프트웨어(예를 들어, 프로세싱 디바이스 상에서 운영 또는 실행되는 명령어들), 또는 이들의 조합을 포함할 수 있는 프로세싱 로직에 의해 수행될 수 있다. 일부 실시 예들에서, 방법(400)은 도 1의 메모리 커맨드 제어기(113)에 의해 수행된다. 특정 시퀀스 또는 순서로 도시되지만, 달리 특정되지 않는 한, 프로세스들의 순서는 수정될 수 있다. 이에 따라, 도시된 실시 예들은 예들로서만 이해되어야 하고, 도시된 프로세스들은 상이한 순서로 수행될 수 있으며, 일부 프로세스들은 병렬적으로 수행될 수도 있다. 또한, 다양한 실시 예들에서는 하나 이상의 프로세스가 생략될 수 있다. 이에 따라, 모든 프로세스들이 모든 실시 예에서 필수적인 것은 아니다. 다른 프로세스 흐름들도 가능하다.
동작 401에서, 프로세싱 디바이스는 커맨드 큐에서의 커맨드들과 연관된 인덱스를 0으로 재설정한다. 동작 402에서, 프로세싱 디바이스는 커맨드들 각각이 고려되었는지 그리고/또는 스케줄링되었는지 여부를 결정한다. 프로세싱 디바이스는 커맨드 큐에서의 총 커맨드들의 수와 인덱스를 비교함으로써 동작 402에서 이러한 결정을 내릴 수 있다. 인덱스가 커맨드 큐에서의 총 커맨드들의 수와 동일하면, 커맨드들 각각이 고려되었는지 그리고/또는 스케줄링되었다.
인덱스가 커맨드 큐에서의 총 커맨드들의 수와 동일하면, 동작 403에서, 프로세싱 디바이스는 커맨드 선택 프로세스를 수행한다. 커맨드 선택 프로세스를 수행하는 프로세싱 디바이스에 관한 추가 세부 사항들은 도 5와 관련하여 아래에서 설명된다.
인덱스가 커맨드 큐에서의 총 커맨드들의 수와 동일하지 않으면, 동작 404에서, 프로세싱 디바이스는 커맨드가 발행 불가능한 것으로서 마킹되는지 여부를 결정한다. 커맨드가 발행 불가능한 것으로서 마킹되면, 동작 405에서, 프로세싱 디바이스는 인덱스를 증분시키고 다시 동작 402로 진행한다.
커맨드가 발행 불가능한 것으로서 마킹되지 않으면, 동작 406에서, 프로세싱 디바이스는 커맨드가 높아진 커맨드 또는 판독 커맨드(즉, 판독 트랜잭션에 대한 판독 커맨드)인지 여부를 결정한다.
커맨드가 판독 커맨드 또는 높아진 커맨드이면, 동작 407에서, 프로세싱 디바이스는 커맨드 큐에서의 커맨드의 진입 시간에 기초하여 커맨드의 시기를 결정하고, 커맨드의 시기가 제1 임계치를 초과하는지 여부를 결정한다. 일 실시 예에서, 제1 임계치는 판독 커맨드가 커맨드 큐에 놓이고 동일한 채널 상의 임의의 다른 커맨드에 의해 발행되는 것이 방지될 시간량에 관한 하드 한계(hard limit)를 확립하는 임계 파라미터인 "하드 최대 판독 커맨드 에이지"일 수 있다.
커맨드의 시기가 제1 임계치를 초과할 때, 동작 408 에서, 프로세싱 디바이스는 커맨드를 선택하고, 동작 403 에서, 커맨드 선택 프로세스를 수행한다. 커맨드의 시기가 제1 임계치를 초과하지 않을 때, 동작 409에서, 프로세싱 디바이스는 높아진 커맨드 또는 판독 트랜잭션에 대한 판독 커맨드를 프로세싱한다. 프로세싱 디바이스가 높아진 커맨드 또는 판독 트랜잭션에 대한 판독 커맨드를 프로세싱하는 것에 관한 추가 세부 사항들은 도 6과 관련하여 아래에서 설명된다.
동작 406에서, 커맨드가 높아진 커맨드 또는 판독 트랜잭션에 대한 판독 커맨드가 아니면, 프로세싱 디바이스는 동작 410에서, 커맨드가 RMW 커맨드에 대한 판독 커맨드인지 여부를 결정한다. 커맨드가 RMW 커맨드에 대한 판독 커맨드이면, 프로세싱 디바이스는 RMW 커맨드를 위한 판독 커맨드를 프로세싱한다. 프로세싱 디바이스가 RMW 커맨드에 대한 판독 커맨드를 프로세싱하는 것에 관한 추가 세부 사항들은 도 7과 관련하여 아래에서 설명된다.
커맨드가 RMW 커맨드에 대한 판독 커맨드가 아니면, 커맨드는 기록 커맨드 또는 RMW 커맨드의 기록 커맨드이고, 프로세싱 디바이스는 동작 412에서 기록 커맨드 또는 RMW 커맨드에 대한 기록 커맨드를 프로세싱한다. 프로세싱 디바이스가 기록 커맨드 또는 RMW 커맨드에 대한 기록 커맨드를 프로세싱하는 것에 관한 추가 세부 사항들은 도 8과 관련하여 아래에서 설명된다.
도 5는 본 개시의 일부 실시 예들에 따른 커맨드 스케줄링을 위한 대역폭을 증가시키기 위한 방법에서 커맨드 선택 프로세스(도 4의 동작 403)를 수행하는 예시적인 방법(500)의 흐름도이다. 방법(500)은 하드웨어(예를 들어, 프로세싱 디바이스, 회로부, 전용 로직, 프로그래밍 가능한 로직, 마이크로 코드, 디바이스의 하드웨어, 집적 회로 등), 소프트웨어(예를 들어, 프로세싱 디바이스 상에서 운영 또는 실행되는 명령어들), 또는 이들의 조합을 포함할 수 있는 프로세싱 로직에 의해 수행될 수 있다. 일부 실시 예들에서, 방법(500)은 도 1의 메모리 커맨드 제어기(113)에 의해 수행된다. 특정 시퀀스 또는 순서로 도시되지만, 달리 특정되지 않는 한, 프로세스들의 순서는 수정될 수 있다. 이에 따라, 도시된 실시 예들은 예들로서만 이해되어야 하고, 도시된 프로세스들은 상이한 순서로 수행될 수 있으며, 일부 프로세스들은 병렬적으로 수행될 수도 있다. 또한, 다양한 실시 예들에서는 하나 이상의 프로세스가 생략될 수 있다. 이에 따라, 모든 프로세스들이 모든 실시 예에서 필수적인 것은 아니다. 다른 프로세스 흐름들도 가능하다.
커맨드 선택 프로세스를 수행하기 위해, 동작 501에서, 프로세싱 디바이스는 커맨드가 컬럼 커맨드인지 여부를 결정한다. 일 실시 예에서, 컬럼 커맨드는 컬럼 기반 어드레싱을 사용하는 메모리 구성요소와 연관된 커맨드이다.
커맨드가 컬럼 커맨드가 아니면, 동작 506에서, 프로세싱 디바이스는 커맨드를 메모리 구성요소로 발행한다. 커맨드가 컬럼 커맨드이면, 동작 502에서, 프로세싱 디바이스는 커맨드에 의해 액세스된 뱅크(예를 들어, 타겟 뱅크)와 연관된 뱅크 터치 카운트를 감산한다. 동작 503에서, 프로세싱 디바이스는 커맨드가 판독 커맨드인지 여부를 결정한다. 커맨드가 판독 커맨드인 경우, 동작 504에서, 프로세싱 디바이스는 미결 판독들의 수를 감산한다. 동작 505에서, 프로세싱 디바이스는 메모리 서브 시스템으로부터의 커맨드의 진입 시간을 소거하고 동작 506에서, 프로세싱 디바이스는 커맨드를 메모리 구성요소로 발행한다.
도 6은 본 개시의 일부 실시 예들에 따른 커맨드 스케줄링을 위한 대역폭을 증가시키기 위한 방법에서 높아진 커맨드 또는 판독 트랜잭션을 위한 판독 커맨드(도 4의 동작 409)를 프로세싱하는 예시적인 방법(600)의 흐름도이다. 방법(600)은 하드웨어(예를 들어, 프로세싱 디바이스, 회로부, 전용 로직, 프로그래밍 가능한 로직, 마이크로 코드, 디바이스의 하드웨어, 집적 회로 등), 소프트웨어(예를 들어, 프로세싱 디바이스 상에서 운영 또는 실행되는 명령어들), 또는 이들의 조합을 포함할 수 있는 프로세싱 로직에 의해 수행될 수 있다. 일부 실시 예들에서, 방법(600)은 도 1의 메모리 커맨드 제어기(113)에 의해 수행된다. 특정 시퀀스 또는 순서로 도시되지만, 달리 특정되지 않는 한, 프로세스들의 순서는 수정될 수 있다. 이에 따라, 도시된 실시 예들은 예들로서만 이해되어야 하고, 도시된 프로세스들은 상이한 순서로 수행될 수 있으며, 일부 프로세스들은 병렬적으로 수행될 수도 있다. 또한, 다양한 실시 예들에서는 하나 이상의 프로세스가 생략될 수 있다. 이에 따라, 모든 프로세스들이 모든 실시 예에서 필수적인 것은 아니다. 다른 프로세스 흐름들도 가능하다.
동작 601에서, 프로세싱 디바이스는 커맨드의 시기가 제2 임계치를 초과하는지 여부를 결정한다. 제2 임계치는 동일한 뱅크에 액세스하는 모든 다른 커맨드들이 차단되기 전에 판독 커맨드가 커맨드 큐에 남아 있을 수 있는 시간량을 특정하는 임계 파라미터인 "최대 판독 커맨드 시기"일 수 있다.
커맨드의 시기가 제2 임계값을 초과할 때, 동작 607에서, 프로세싱 디바이스는 동일한 뱅크에 액세스하는 모든 다른 커맨드들을 발행 불가능한 것으로서 마킹한다. 이 다음, 프로세싱 디바이스는 동작 604로 진행한다.
동작 604에서, 프로세싱 디바이스는 커맨드가 개방 로우에 액세스하는지 여부를 결정한다. 일 실시 예에서, 커맨드는 로우 기반 어드레싱을 사용하는 메모리 구성요소와 연관된다. 커맨드가 개방 로우에 액세스하면, 동작 605에서, 프로세싱 디바이스는 커맨드를 가장 높은 우선 순위 큐(예를 들어, 큐 0 또는 첫 번째 높은 우선 순위 큐)에 삽입한다. 커맨드가 폐쇄된 행에 액세스하면, 동작 606에서, 프로세싱 디바이스는 커맨드를 두 번재 높은 우선 순위 큐(예를 들어, 큐 -1)에 삽입한다.
커맨드의 시기가 제2 임계치를 초과하지 않을 때, 동작 602에서, 프로세싱 디바이스는 (i) 커맨드가 기록 커맨드와 연관된 높아진 커맨드인지 여부 또는 (ii) 미결 판독 커맨드들의 수가 제3 임계치보다 큰지 여부를 결정한다. 제3 임계치는 커맨드 제어기(113)가 판독-기록 턴어라운드를 수행할 수 있기 전에 커맨드 큐에 있어야 하는 최소 판독 커맨드들의 수를 설정하는 임계 파라미터인 "턴어라운드 전 최소 판독들"일 수 있다. "턴어라운드 전 최소 판독들" 임계 파라미터는 버스 턴어라운드와 연관된 큰 페널티들 및 개별 판독들을 발행하기 위한 로우들의 폐쇄 및 개방으로 인해 대역폭을 감소시키는 과도한 오버헤드들을 회피한다.
프로세싱 디바이스가 (i) 커맨드가 기록 커맨드와 연관된 높아진 커맨드라고 또는 (ii) 미결 판독 커맨드들의 수가 제3 임계치보다 크다고 결정하면, 프로세싱 디바이스는 상술된 바와 같이, 동작 604로 진행한다.
프로세싱 디바이스가 (i) 커맨드가 기록 커맨드와 연관된 높아진 커맨드가 아니라고 또는 (ii) 미결 판독 커맨드들의 수가 제3 임계치보다 크지 않다고 결정하면, 동작 603에서, 프로세싱 디바이스는 커맨드를 발행 불가능한 것으로서 마킹한다.
도 7은 본 개시의 일부 실시 예들에 따른 커맨드 스케줄링을 위한 대역폭을 증가시키기 위한 방법에서 판독-수정-기록(RMW, read-modify-write) 트랜잭션을 위한 판독 커맨드(도 4의 동작 411)를 프로세싱하는 예시적인 방법(700)의 흐름도이다. 방법(700)은 하드웨어(예를 들어, 프로세싱 디바이스, 회로부, 전용 로직, 프로그래밍 가능한 로직, 마이크로 코드, 디바이스의 하드웨어, 집적 회로 등), 소프트웨어(예를 들어, 프로세싱 디바이스 상에서 운영 또는 실행되는 명령어들), 또는 이들의 조합을 포함할 수 있는 프로세싱 로직에 의해 수행될 수 있다. 일부 실시 예들에서, 방법(700)은 도 1의 메모리 커맨드 제어기(113)에 의해 수행된다. 특정 시퀀스 또는 순서로 도시되지만, 달리 특정되지 않는 한, 프로세스들의 순서는 수정될 수 있다. 이에 따라, 도시된 실시 예들은 예들로서만 이해되어야 하고, 도시된 프로세스들은 상이한 순서로 수행될 수 있으며, 일부 프로세스들은 병렬적으로 수행될 수도 있다. 또한, 다양한 실시 예들에서는 하나 이상의 프로세스가 생략될 수 있다. 이에 따라, 모든 프로세스들이 모든 실시 예에서 필수적인 것은 아니다. 다른 프로세스 흐름들도 가능하다.
RMW 커맨드와 연관된 판독 커맨드를 프로세싱하기 위해, 동작 701에서, 프로세싱 디바이스는 커맨드에 의해 요구되는 버퍼 공간과 커맨드 큐에서의 RMW 커맨드들에 의해 현재 점유되는 버퍼 공간의 합이 제4 임계치보다 작은지 여부를 결정한다. 제4 임계치는 판독-수정-기록들에 이용 가능한 판독 응답 버퍼 공간의 양을 설정하는 임계 파라미터인 "판독-수정-기록들에 대한 최대 판독 버퍼 공간"일 수 있다. 일 실시 예에서, 판독 응답 버퍼는 프로세싱 디바이스가 데이터를 프로세싱 디바이스로 리턴하기 전에 메모리 구성요소로부터의 데이터를 홀딩하기 위해 사용하는 스토리지이다. RMW 커맨드들은 수정 동안 그리고 데이터를 다시 메모리 구성요소에 기록하기 전에 판독 커맨드들에 의해 판독된 데이터를 일시적으로 저장하기 위해 버퍼 공간을 필요로 한다. 일 실시 예에서, 프로세싱 디바이스는 RMW 커맨드들에 대한 버퍼 공간으로서 판독 응답 버퍼를 사용한다. "판독-수정-기록들을 위한 최대 판독 버퍼 공간" 임계 파라미터는 RMW 커맨드들이 판독 응답 버퍼의 큰 부분을 사용하지 않고, 이에 따라, 인입하는 판독 커맨드들이 판독 응답 버퍼에서의 공간을 예약하는 것을 차단하도록 한다. 판독 응답 버퍼에서의 공간을 예약할 수 없으면, 메모리 구성요소로부터 반환된 데이터를 저장하기 위한 버퍼 공간을 갖지 않기 때문에 판독 커맨드들이 발행되는 것이 방지된다.
합이 제4 임계치보다 작지 않을 때, 동작 702에서, 프로세싱 디바이스는 커맨드를 발행 불가능한 것으로서 마킹한다. 합이 제4 임계치보다 작은 것으로 결정될 때, 동작 703에서, 프로세싱 디바이스는 뱅크 터치 카운트 리스트로부터 커맨드에 의해 액세스되고 있는 뱅크(예를 들어, 타겟 뱅크)의 뱅크 우선 순위 랭크를 획득한다.
동작 704에서, 프로세싱 디바이스는 커맨드가 개방 로우에 액세스하고 있는지 여부를 결정한다. 커맨드가 개방 로우에 액세스하고 있으면, 동작 705에서, 프로세싱 디바이스는 커맨드를 뱅크 우선 순위 랭크와 연관된 우선 순위 큐로 삽입한다. 우선 순위 큐는 또한 커맨드에 의해 액세스되고 있는 뱅크에 할당되는 높은 우선 순위 큐이다. 커맨드가 폐쇄된 로우에 액세스하고 있으면, 동작 706에서, 프로세싱 디바이스는 커맨드를 뱅크 우선 순위 랭크와 연관된 우선 순위 큐로 삽입한다. 우선 순위 큐는 또한 커맨드에 의해 액세스되고 있는 뱅크에 할당되는 낮은 우선 순위 큐이다.
일 실시 예에서, 프로세싱 디바이스는 뱅크 우선 순위 랭크(P)를 2*P가 되도록 업데이트하며, 커맨드에 의해 액세스되고 있는 뱅크에 할당되는 높은 우선 순위 큐는 큐 P이고, 커맨드에 의해 액세스되고 있는 뱅크에 할당되는 낮은 우선 순위 큐는 큐 P-1이다.
도 8은 본 개시의 일부 실시 예들에 따른 커맨드 스케줄링을 위한 대역폭을 증가시키기 위한 방법에서 기록 커맨드 또는 RMW 커맨드에 대한 기록 커맨드(도 4의 동작 412)를 프로세싱하는 예시적인 방법의 흐름도이다. 방법(800)은 하드웨어(예를 들어, 프로세싱 디바이스, 회로부, 전용 로직, 프로그래밍 가능한 로직, 마이크로 코드, 디바이스의 하드웨어, 집적 회로 등), 소프트웨어(예를 들어, 프로세싱 디바이스 상에서 운영 또는 실행되는 명령어들), 또는 이들의 조합을 포함할 수 있는 프로세싱 로직에 의해 수행될 수 있다. 일부 실시 예들에서, 방법(800)은 도 1의 메모리 커맨드 제어기(113)에 의해 수행된다. 특정 시퀀스 또는 순서로 도시되지만, 달리 특정되지 않는 한, 프로세스들의 순서는 수정될 수 있다. 이에 따라, 도시된 실시 예들은 예들로서만 이해되어야 하고, 도시된 프로세스들은 상이한 순서로 수행될 수 있으며, 일부 프로세스들은 병렬적으로 수행될 수도 있다. 또한, 다양한 실시 예들에서는 하나 이상의 프로세스가 생략될 수 있다. 이에 따라, 모든 프로세스들이 모든 실시 예에서 필수적인 것은 아니다. 다른 프로세스 흐름들도 가능하다.
기록 커맨드 또는 RMW 커맨드의 기록 커맨드를 프로세싱하기 위해, 동작 801에서, 프로세싱 디바이스는 뱅크 터치 카운트 리스트로부터 커맨드에 의해 액세스되고 있는 뱅크(예를 들어, 타겟 뱅크)의 뱅크 우선 순위 랭크를 획득한다.
동작 802에서, 프로세싱 디바이스는 커맨드가 개방 로우에 액세스하고 있는지 여부를 결정한다. 커맨드가 개방 로우에 액세스하고 있으면, 동작 803에서, 프로세싱 디바이스는 커맨드를 뱅크 우선 순위 랭크와 연관된 우선 순위 큐로 삽입한다. 우선 순위 큐는 또한 커맨드에 의해 액세스되고 있는 뱅크에 할당되는 높은 우선 순위 큐이다. 커맨드가 폐쇄된 로우에 액세스하고 있으면, 동작 804에서, 프로세싱 디바이스는 커맨드를 뱅크 우선 순위 랭크와 연관된 우선 순위 큐로 삽입한다. 우선 순위 큐는 또한 커맨드에 의해 액세스되고 있는 뱅크에 할당되는 낮은 우선 순위 큐이다.
일 실시 예에서, 프로세싱 디바이스는 뱅크 우선 순위 랭크(P)를 2*(P-BT)(여기서 BT는 액세스되고 있는 뱅크들의 수이다)가 되도록 업데이트한다. 이러한 실시 예에서, 커맨드에 의해 액세스되고 있는 뱅크에 할당되는 높은 우선 순위 큐는 큐 P이고, 커맨드에 의해 액세스되고 있는 뱅크에 할당되는 낮은 우선 순위 큐는 큐 P-1이다.
도 9는 기계로 하여금 본 명세서에서 논의된 방법론들 중 임의의 하나 이상을 수행하게 하기 위한 명령어 세트가 실행될 수 있는 컴퓨터 시스템(900)의 예시적인 기계를 도시한다. 일부 실시 예들에서, 컴퓨터 시스템(900)은 메모리 서브 시스템(예를 들어, 도 1의 메모리 서브 시스템(110))을 포함하거나, 이에 결합되거나, 또는 이를 이용하는 호스트 시스템(예를 들어, 도 1의 호스트 시스템(120))에 대응할 수 있거나 제어기의 동작들을 수행하는 데(예를 들어, 도 1의 커맨드 제어기(113)에 대응하는 동작들을 수행하기 위해 운영 체제를 실행하는 데) 사용될 수 있다. 대안적인 실시 예들에서, 기계는 LAN, 인트라넷, 엑스트라넷, 및/또는 인터넷으로 다른 기계들에 연결(예를 들어, 네트워킹)될 수 있다. 기계는 클라이언트-서버 네트워크 환경에서의 서버 또는 클라이언트 기계로서, 피어-투-피어(또는 분산) 네트워크 환경에서의 피어 기계로서, 또는 클라우드 컴퓨팅 인프라스트럭처 또는 환경에서의 서버 또는 클라이언트 기계로서 동작할 수 있다.
기계는 개인용 컴퓨터(PC), 태블릿 PC, 셋탑 박스(STB), 개인용 정보 단말기(PDA), 휴대 전화, 웹 기기, 서버, 네트워크 라우터, 스위치 또는 브릿지, 또는 해당 기계에 의해 취해질 동작들을 지정하는 명령어 세트(순차적 또는 이 외)를 실행할 수 있는 임의의 기계일 수 있다. 나아가, 단일 기계가 도시되지만, "기계"라는 용어는 또한 본 명세서에서 논의된 방법론들 중 임의의 하나 이상을 수행하기 위한 명령어 세트(또는 다수의 세트들)를 개별적으로 또는 공동으로 실행하는 임의의 기계 모음을 포함하는 것으로 취해져야 한다.
예시적인 컴퓨터 시스템(900)은 버스(930)를 통해 서로 통신하는, 프로세싱 디바이스(902), 메인 메모리(904)(예를 들어, 판독 전용 메모리(ROM), 플래시 메모리, 동적 랜덤 액세스 메모리(DRAM) 이를테면 동기식 DRAM(SDRAM) 또는 램버스 DRAM(RDRAM) 등), 정적 메모리(906)(예를 들어, 플래시 메모리, 정적 랜덤 액세스 메모리(SRAM) 등), 및 데이터 저장 시스템(918)을 포함한다.
프로세싱 디바이스(902)는 마이크로 프로세서, 중앙 프로세싱 유닛 등과 같은 하나 이상의 범용 프로세싱 디바이스를 나타낸다. 보다 구체적으로, 프로세싱 디바이스는 복합 명령어 세트 컴퓨팅(CISC, complex instruction set computing) 마이크로 프로세서, 축소 명령어 세트 컴퓨팅(RISC, reduced instruction set computing) 마이크로 프로세서, 훨씬 긴 명령어(VLIW, very long instruction word) 마이크로 프로세서, 또는 다른 명령어 세트들을 구현하는 프로세서, 또는 명령어 세트들의 조합을 구현하는 프로세서들일 수 있다. 프로세싱 디바이스(902)는 또한 용도 특정 집적 회로(ASIC), 필드 프로그래밍 가능한 게이트 어레이(FPGA), 디지털 신호 프로세서(DSP), 네트워크 프로세서 등과 같은 하나 이상의 특수 목적 프로세싱 디바이스일 수 있다. 프로세싱 디바이스(902)는 본 명세서에서 논의된 동작들 및 단계들을 수행하기 위한 명령어들(926)을 실행하도록 구성된다. 컴퓨터 시스템(900)은 네트워크(920)를 통해 통신하기 위한 네트워크 인터페이스 디바이스(908)를 더 포함할 수 있다.
데이터 저장 시스템(918)은 본 명세서에서 설명된 방법론들 또는 기능들 중 임의의 하나 이상을 구현하는 하나 이상의 명령어 세트(926) 또는 소프트웨어가 저장되는 기계 판독 가능한 저장 매체(924)(컴퓨터 판독 가능한 매체라고도 함)를 포함할 수 있다. 명령어들(926)은 또한 기계 판독 가능한 저장 매체들을 또한 구성하는 컴퓨터 시스템(900), 메인 메모리(904) 및 프로세싱 디바이스(902)에 의한 이것들의 실행 동안 메인 메모리(904) 내에 그리고/또는 프로세싱 디바이스(902) 내에 완전히 또는 적어도 부분적으로 상주할 수 있다. 기계 판독 가능한 저장 매체(924), 데이터 저장 시스템(918), 및/또는 메인 메모리(904)는 도 1의 메모리 서브 시스템(110)에 대응할 수 있다.
일 실시 예에서, 명령어들(926)은 커맨드 스케줄링을 위한 대역폭을 증가시키기 위한 커맨드 제어기(예를 들어, 도 1의 커맨드 제어기(113))에 대응하는 기능을 구현하기 위한 명령어들을 포함한다. 기계 판독 가능한 저장 매체(924)가 예시적인 실시 예에서 단일 매체인 것으로 도시되지만, "기계 판독 가능한 저장 매체"라는 용어는 하나 이상의 명령어 세트를 저장하는 단일의 매체 또는 다수의 매체들을 포함하는 것으로 취해져야 한다. "기계 판독 가능한 매체"라는 용어는 또한 기계에 의한 실행을 위한 명령어 세트를 저장하거나 인코딩할 수 있고 기계로 하여금 본 개시의 방법론들 중 임의의 하나 이상을 수행하게 하는 임의의 매체를 포함하는 것으로 취해져야 한다. 이에 따라, "기계 판독 가능한 저장 매체"라는 용어는 고체 상태 메모리들, 광학 매체들, 및 자기 매체들을 포함하지만, 이에 제한되지는 않는 것으로 취해져야 한다.
선행하는 발명을 실시하기 위한 구체적인 내용의 일부 부분들은 컴퓨터 메모리 내의 데이터 비트들에 관한 동작들의 알고리즘들 및 상징적 표현들과 관련하여 제시되었다. 이러한 알고리즘적 설명 및 표현들은 데이터 프로세싱 분야의 통상의 기술자들에 의해 자신들의 작업 내용을 해당 기술분야의 다른 통상의 기술자들에게 가장 효과적으로 전달하는 데 사용되는 방식들이다. 알고리즘은 여기서, 그리고 일반적으로 요구되는 결과를 도출하는 동작들의 자기 일관적인 시퀀스인 것으로 구상된다. 동작들은 물리적 수량들의 물리적 조작들을 필요로 하는 것들이다. 반드시 그렇지는 아니지만, 일반적으로, 이러한 수량들은 저장, 조합, 비교, 및 이와 다른 방법으로 조작될 수 있는 전기 또는 자기 신호들의 형태를 띤다. 주로 일반적인 용법의 이유로, 이러한 신호들을 비트들, 값들, 요소들, 심볼들, 문자들, 용어들, 숫자들 등으로서 나타내는 것이 때때로 편리한 것으로 입증되었다.
그러나, 이러한 그리고 유사한 용어들은 모두 적절한 물리적 수량들과 연관되어야 하고 이러한 수량들에 적용되는 편리한 라벨들일 뿐임을 명심해야 한다. 본 개시는 컴퓨터 시스템, 또는 컴퓨터 시스템의 레지스터들 및 메모리들 내 물리적(전자적) 수량들로서 표현된 데이터를 조작하고 컴퓨터 시스템 메모리들 또는 레지스터들 또는 다른 이러한 정보 저장 시스템들 내 물리적 수량들로서 유사하게 표현되는 다른 데이터로 변환하는 유사한 전자 컴퓨팅 디바이스의 동작 및 프로세스들을 나타낼 수 있다.
본 개시는 또한 본 명세서에서의 동작들을 수행하기 위한 장치에 관한 것이다. 이러한 장치는 의도된 목적들을 위해 특별히 구성될 수 있거나, 이는 컴퓨터에 저장된 컴퓨터 프로그램에 의해 선택적으로 활성화되거나 재구성되는 범용 컴퓨터를 포함할 수 있다. 이러한 컴퓨터 프로그램은 컴퓨터 판독 가능한 저장 매체 이를테면 이에 제한되지는 않지만, 각각 컴퓨터 시스템 버스에 결합되는, 플로피 디스크, 광학 디스크, CD-ROM, 및 자기 광학 디스크, 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), EPROM, EEPROM, 자기 또는 광학 카드, 또는 전자 명령어들을 저장하는 데 적합한 임의의 유형의 매체를 포함하는 임의의 유형의 디스크에 저장될 수 있다.
본 명세서에서 제시된 알고리즘들 및 디스플레이들은 본질적으로 임의의 특정 컴퓨터 또는 다른 장치와 관되는 것은 아니다. 다양한 범용 시스템들이 본 명세서에서의 교시에 따른 프로그램들과 함께 사용될 수 있거나, 방법을 수행하기 위해 보다 특화된 장치를 구성하는 것이 편리함이 증명될 수 있다. 이러한 다양한 시스템들에 대한 구조는 아래의 설명에서 제시된 바와 같이 나타날 것이다. 또한, 본 개시는 임의의 특정 프로그래밍 언어를 참조하여 설명되지 않는다. 본 명세서에서 설명된 바와 같이 본 개시의 교시를 구현하는 데 다양한 프로그래밍 언어들이 사용될 수 있다는 것이 이해될 것이다.
본 개시는 컴퓨터 프로그램 제품, 또는 소프트웨어로서 제공될 수 있으며, 이는 본 개시에 따라 프로세스를 수행하기 위해 컴퓨터 시스템(또는 다른 전자 디바이스들)을 프로그래밍하는 데 사용될 수 있는 명령어들을 저장한 기계 판독 가능한 매체를 포함할 수 있다. 기계 판독 가능한 매체는 기계(예를 들어, 컴퓨터)에 의해 판독 가능한 형태로 정보를 저장하기 위한 임의의 메커니즘을 포함한다. 일부 실시 예들에서, 기계 판독 가능한(예를 들어, 컴퓨터 판독 가능한) 매체는 기계(예를 들어, 컴퓨터) 판독 가능한 저장 매체 이를테면 판독 전용 메모리("ROM"), 랜덤 액세스 메모리("RAM"), 자기 디스크 저장 매체, 광학 저장 매체, 플래시 메모리 구성요소들 등을 포함한다.
앞에서의 명세서에서, 본 개시의 실시 예들은 이의 구체적인 예시적인 실시 예들을 참조하여 설명되었다. 다음의 청구항들에 제시된 바와 같이 본 개시의 실시 예들의 보다 넓은 사상 및 범위로부터 벗어나지 않고 다양한 수정이 이루어질 수 있음이 명백할 것이다. 따라서, 본 명세서 및 도면들은 제한적인 의미가 아니라 예시적인 의미로 간주되어야 한다.
Claims (20)
- 시스템으로서,
메모리 구성요소 및
상기 메모리 구성요소와 작동 가능하게 결합되어, 동작들을 수행하는 프로세싱 디바이스를 포함하며, 상기 동작들은;
커맨드 큐에서 복수의 커맨드들을 수신하는 동작들;
상기 커맨드들에 기초하여 초기화를 수행하는 동작들로서, 초기화를 수행하는 동작들은:
뱅크 터치 카운트 리스트를 업데이트하는 동작을 포함하되, 상기 뱅크 터치 카운트 리스트는 상기 커맨드들에 의해 액세스되고 있는 복수의 뱅크들의 리스트, 및 각각, 상기 뱅크들 각각에 액세스하는 커맨드들의 수를 식별하는 상기 뱅크들의 리스트에서의 상기 뱅크들 각각에 대한 뱅크 터치 카운트를 포함하되,
상기 뱅크 터치 카운트 리스트를 업데이트하는 동작은 상기 뱅크들 각각에 대한 상기 뱅크 터치 카운트에 기초하여 상기 뱅크들 각각에 뱅크 우선 순위 랭크를 할당하는 동작을 포함하는, 상기 초기화를 수행하는 동작들; 및
상기 커맨드 큐에서의 상기 커맨드들을 스케줄링하는 동작들로서, 상기 커맨드들을 스케줄링하는 동작들은:
상기 뱅크 터치 카운트 리스트에 기초하여 상기 커맨드 큐에서의 상기 커맨드들 각각을 복수의 우선 순위 큐들로 삽입하는 동작을 포함하는, 상기 커맨드들을 스케줄링하는 동작들을 포함하는 것인, 시스템. - 제1항에 있어서, 상기 뱅크들 각각에 상기 뱅크 우선 순위 랭크를 할당하기 위해, 상기 프로세싱 디바이스는 또한:
더 높은 뱅크 터치 카운트를 갖는 뱅크들에 더 높은 뱅크 우선 순위 랭크를 할당하는 동작들을 포함하는 동작들을 수행하는 것인, 시스템. - 제1항에 있어서, 상기 커맨드 큐에서의 상기 커맨드들을 스케줄링하기 위해, 상기 프로세싱 디바이스는 또한:
상기 커맨드들에서의 제1 커맨드에 대해,
상기 제1 커맨드가 판독 커맨드 또는 높아진 커맨드(elevated command)일 때,
상기 커맨드 큐에서의 상기 제1 커맨드의 진입 시간에 기초하여 상기 제1 커맨드의 시기(age)를 결정하는 동작들,
상기 제1 커맨드의 상기 시기가 제1 임계치를 초과할 때,
상기 제1 커맨드를 선택하고 커맨드 선택 프로세스를 수행하는 동작들;
상기 제1 커맨드의 시기가 상기 제1 임계치를 초과하지 않을 때,
상기 제1 커맨드의 시기가 제2 임계치를 초과하는지 여부를 결정하는 동작들,
상기 제1 커맨드의 시기가 상기 제2 임계치를 초과할 때,
상기 제1 커맨드가 개방 로우에 액세스하는 경우 상기 제1 커맨드를 제1 우선 순위 큐에 삽입하는 동작들로서, 상기 제1 우선 순위 큐는 가장 높은 우선 순위인, 상기 제1 우선 순위 큐에 삽입하는 동작들, 및
상기 제1 커맨드가 폐쇄된 로우에 액세스하는 경우 상기 제1 커맨드를 제2 우선 순위 큐에 삽입하는 동작들로서, 상기 제2 우선 순위 큐는 두 번째 높은 우선 순위인, 상기 제2 우선 순위 큐에 삽입하는 동작들을 포함하는 동작들을 수행하는 것인, 시스템. - 제3항에 있어서, 상기 제1 커맨드의 시기가 상기 제2 임계치를 초과하지 않을 때, 상기 프로세싱 디바이스는 또한:
상기 제1 커맨드가 기록 커맨드와 연관된 상기 높아진 커맨드이거나 미결 판독 커맨드들의 수가 제3 임계치보다 클 때,
상기 제1 커맨드가 개방 로우에 액세스하는 경우, 상기 제1 커맨드를 상기 제1 우선 순위 큐에 삽입하는 동작들, 및
상기 제1 커맨드가 폐쇄된 로우에 액세스하는 경우, 상기 제2 커맨드를 상기 제2 우선 순위 큐에 삽입하는 동작들; 및
상기 제1 커맨드가 기록 커맨드와 연관된 상기 높아진 커맨드가 아니고 상기 미결 판독 커맨드들의 수가 상기 제3 임계치보다 크지 않을 때,
상기 제1 커맨드를 발행 불가능한 것으로서 마킹하는 동작들을 포함하는 동작들을 수행하는 것인, 시스템. - 제1항에 있어서, 상기 커맨드 큐에서의 상기 커맨드들을 스케줄링하기 위해, 상기 프로세싱 디바이스는 또한:
상기 커맨드들에서의 제1 커맨드에 대해,
상기 제1 커맨드가 판독-수정-기록 커맨드와 연관된 판독 커맨드일 때,
상기 제1 커맨드에 의해 요구되는 버퍼 공간과 상기 커맨드 큐에서의 판독-수정-기록 커맨드들에 의해 현재 점유되는 버퍼 공간의 합이 제4 임계치보다 작은지 여부를 결정하는 동작들,
상기 합이 상기 제4 임계치보다 작을 때,
상기 뱅크 터치 카운트 리스트로부터 상기 제1 커맨드에 의해 액세스되고 있는 상기 뱅크의 상기 뱅크 우선 순위 랭크를 획득하는 동작들,
상기 제1 커맨드가 개방 로우에 액세스하는 경우 상기 제1 커맨드를 제3 우선 순위 큐에 삽입하는 동작들로서, 상기 제3 우선 순위 큐는 상기 뱅크 우선 순위 랭크와 연관되는, 상기 제3 우선 순위 큐에 삽입하는 동작들, 및
상기 제1 커맨드가 폐쇄된 로우에 액세스하는 경우 상기 제1 커맨드를 제4 우선 순위 큐에 삽입하는 동작들로서, 상기 제4 우선 순위 큐는 상기 뱅크 우선 순위 랭크와 연관되고 상기 제3 우선 순위보다 하나 낮은 우선 순위 레벨인, 상기 제4 우선 순위 큐에 삽입하는 동작들; 및
상기 합이 상기 제4 임계치보다 작지 않을 때, 상기 제1 커맨드를 발행 불가능한 것으로서 마킹하는 동작들을 포함하는 동작들을 수행하는 것인, 시스템. - 제1항에 있어서, 상기 커맨드 큐에서의 상기 커맨드들을 스케줄링하기 위해, 상기 프로세싱 디바이스는 또한:
상기 커맨드들에서의 제1 커맨드에 대해,
상기 제1 커맨드가 기록 커맨드 또는 판독-수정-기록 커맨드와 연관된 기록 커맨드일 때,
상기 뱅크 터치 카운트 리스트로부터 상기 제1 커맨드에 의해 액세스되고 있는 상기 뱅크의 상기 뱅크 우선 순위 랭크를 획득하는 동작들,
상기 제1 커맨드가 개방 로우에 액세스하는 경우 상기 제1 커맨드를 제5 우선 순위 큐에 삽입하는 동작들로서, 상기 제5 우선 순위 큐는 상기 뱅크 우선 순위 랭크와 연관되는, 상기 제5 우선 순위 큐에 삽입하는 동작들, 및
상기 제1 커맨드가 폐쇄된 로우에 액세스하는 경우 상기 제1 커맨드를 제6 우선 순위 큐에 삽입하는 동작들로서, 상기 제6 우선 순위 큐는 상기 뱅크 우선 순위 랭크와 연관되고 상기 제5 우선 순위보다 하나 낮은 우선 순위 레벨인, 상기 제6 우선 순위 큐에 삽입하는 동작들을 포함하는 동작들을 수행하는 것인, 시스템. - 제1항에 있어서, 상기 프로세싱 디바이스는 또한:
커맨드 선택 프로세스를 수행하는 동작들을 포함하는 동작들을 수행하되, 상기 커맨드 선택 프로세스를 수행하는 동작들은:
상기 커맨드들에서의 제1 커맨드에 대해,
상기 제1 커맨드가 컬럼 커맨드가 아닌 경우, 상기 제1 커맨드를 상기 메모리 구성요소로 발행하는 동작들,
상기 제1 커맨드가 컬럼 커맨드인 경우,
상기 제1 커맨드에 의해 액세스된 상기 뱅크와 연관된 상기 뱅크 터치 카운트를 감산하는 동작들, 및
상기 제1 커맨드를 상기 메모리 구성요소로 발행하는 동작들을 포함하는 것인, 시스템. - 제7항에 있어서, 상기 제1 커맨드가 컬럼 커맨드인 경우, 상기 프로세싱 디바이스는 또한:
상기 제1 커맨드가 판독 커맨드인 경우 미결 판독 커맨드들의 수를 감산하는 동작들, 및
상기 제1 커맨드의 진입 시간을 소거하는 동작들을 포함하는 동작들을 수행하는 것인, 시스템. - 제1항에 있어서, 초기화를 수행하기 위해, 상기 프로세싱 디바이스는 또한:
상기 커맨드 큐로 상기 복수의 커맨드들 각각의 진입 시간을 레코딩하는 동작들로서, 상기 복수의 커맨드들은 제1 커맨드를 포함하는, 상기 레코딩하는 동작들, 및
판독 커맨드?? 것으로 결정되는 상기 복수의 커맨드들 각각에 대한 미결 판독 커맨드들의 수를 감산하는 동작들을 포함하는 동작들을 수행하는 것인, 시스템. - 방법으로서,
커맨드 큐에서 복수의 커맨드들을 수신하는 단계;
상기 커맨드들에 기초하여 초기화를 수행하는 단계로서, 상기 초기화를 수행하는 단계는:
뱅크 터치 카운트 리스트를 업데이트하는 단계를 포함하되, 상기 뱅크 터치 카운트 리스트는 상기 커맨드들에 의해 액세스되고 있는 복수의 뱅크들의 리스트, 및 각각, 상기 뱅크들 각각에 액세스하는 커맨드들의 수를 식별하는 상기 뱅크들의 리스트에서의 상기 뱅크들 각각에 대한 뱅크 터치 카운트를 포함하되,
상기 뱅크 터치 카운트 리스트를 업데이트하는 단계는 상기 뱅크들 각각에 대한 상기 뱅크 터치 카운트에 기초하여 상기 뱅크들 각각에 뱅크 우선 순위 랭크를 할당하는 단계를 포함하되, 더 높은 뱅크 터치 카운트를 갖는 뱅크들에 더 높은 뱅크 우선 순위 랭크가 할당되는, 상기 초기화를 수행하는 단계; 및
상기 커맨드 큐에서의 상기 커맨드들을 스케줄링하는 단계로서, 상기 커맨드들을 스케줄링하는 단계는:
상기 뱅크 터치 카운트 리스트에 기초하여 상기 커맨드 큐에서의 상기 커맨드들 각각을 복수의 우선 순위 큐들로 삽입하는 단계를 포함하되, 상기 뱅크들의 리스트에서의 각 뱅크에는 높은 우선 순위 큐 및 낮은 우선 순위 큐가 할당되는, 상기 상기 커맨드들을 스케줄링하는 단계를 포함하는, 방법. - 제10항에 있어서,
상기 뱅크 터치 카운트 리스트는 판독-수정-기록(RMW) 커맨드들과 연관된 판독 커맨드들에 의해 액세스되고 있는 상기 뱅크들의 리스트, 및 기록 커맨드들 및 RMW 커맨드들과 연관된 기록 커맨드들에 의해 액세스되고 있는 뱅크들의 리스트를 포함하되, RMW 커맨드들과 연관된 판독 커맨드들에 의해 액세스되고 있는 상기 뱅크들에는 기록 커맨드들 및 RMW 커맨드들과 연관된 기록 커맨드들에 의해 액세스되고 있는 상기 뱅크들보다 더 높은 뱅크 우선 순위 랭크가 할당되는 것인, 방법. - 제11항에 있어서, 상기 커맨드 큐에서의 상기 커맨드들을 스케줄링하는 단계는:
상기 커맨드들에서의 제1 커맨드에 대해,
상기 제1 커맨드가 판독 커맨드 또는 높아진 커맨드일 때,
상기 커맨드 큐에서의 상기 제1 커맨드의 진입 시간에 기초하여 상기 제1 커맨드의 시기를 결정하는 단계,
상기 제1 커맨드의 시기가 제1 임계치를 초과할 때,
상기 제1 커맨드를 선택하고 커맨드 선택 프로세스를 수행하는 단계;
상기 제1 커맨드의 시기가 상기 제1 임계치를 초과하지 않을 때,
상기 제1 커맨드의 시기가 제2 임계치를 초과하는지 여부를 결정하는 단계,
상기 제1 커맨드의 시기가 상기 제2 임계치를 초과할 때,
상기 제1 커맨드가 개방 로우에 액세스하는 경우 상기 제1 커맨드를 제1 우선 순위 큐에 삽입하는 단계로서, 상기 제1 우선 순위 큐는 가장 높은 우선 순위인, 상기 제1 우선 순위 큐에 삽입하는 단계, 및
상기 제1 커맨드가 폐쇄된 로우에 액세스하는 경우 상기 제1 커맨드를 제2 우선 순위 큐에 삽입하는 단계로서, 상기 제2 우선 순위 큐는 두 번째 높은 우선 순위인, 상기 제2 우선 순위 큐에 삽입하는 단계를 더 포함하는, 방법. - 제12항에 있어서,
상기 제1 커맨드의 시기가 상기 제2 임계치를 초과하지 않을 때,
상기 제1 커맨드가 기록 커맨드와 연관된 상기 높아진 커맨드이거나 미결 판독 커맨드들의 수가 제3 임계치보다 클 때,
상기 제1 커맨드가 개방 로우에 액세스하는 경우 상기 제1 커맨드를 상기 제1 우선 순위 큐에 삽입하는 단계, 및
상기 제1 커맨드가 폐쇄된 로우에 액세스하는 경우 상기 제1 커맨드를 상기 제2 우선 순위 큐에 삽입하는 단계; 및
상기 제1 커맨드가 기록 커맨드와 연관된 상기 높아진 커맨드가 아닐 때 그리고 상기 미결 판독 커맨드들의 수가 상기 제3 임계치보다 크지 않을 때,
상기 제1 커맨드를 발행 불가능한 것으로서 마킹하는 단계를 더 포함하는, 방법. - 제11항에 있어서, 상기 커맨드 큐에서의 상기 커맨드들을 스케줄링하는 단계는:
상기 커맨드들에서의 제1 커맨드에 대해,
상기 제1 커맨드가 상기 RMW 커맨드와 연관된 상기 판독 커맨드일 때,
상기 제1 커맨드에 의해 요구되는 버퍼 공간과 상기 커맨드 큐에서의 RMW 커맨드들에 의해 현재 점유되는 버퍼 공간의 합이 제4 임계치보다 작은지 여부를 결정하는 단계,
상기 합이 상기 제4 임계치보다 작을 때,
상기 뱅크 터치 카운트 리스트로부터 상기 제1 커맨드에 의해 액세스되고 있는 상기 뱅크의 상기 뱅크 우선 순위 랭크를 획득하는 단계,
상기 제1 커맨드가 개방 로우에 액세스하는 경우 상기 제1 커맨드를 제3 우선 순위 큐에 삽입하는 단계로서, 상기 제3 우선 순위 큐는 상기 뱅크 우선 순위 랭크와 연관되고 상기 제1 커맨드에 의해 액세스되고 있는 상기 뱅크에 할당되는 상기 높은 우선 순위 큐인, 상기 제3 우선 순위 큐에 삽입하는 단계, 및
상기 제1 커맨드가 폐쇄된 로우에 액세스하는 경우 상기 제1 커맨드를 제4 우선 순위 큐에 삽입하는 단계로서, 상기 제4 우선 순위 큐는 상기 뱅크 우선 순위 랭크와 연관되고 상기 제1 커맨드에 의해 액세스되고 있는 상기 뱅크에 할당되는 상기 낮은 우선 순위 큐인, 상기 제4 우선 순위 큐에 삽입하는 단계; 및
상기 합이 상기 제4 임계치보다 작지 않을 때, 상기 제1 커맨드를 발행 불가능한 것으로서 마킹하는 단계를 더 포함하는, 방법. - 제11항에 있어서, 상기 커맨드 큐에서의 상기 커맨드들을 스케줄링하는 단계는:
상기 커맨드들에서의 제1 커맨드에 대해,
상기 제1 커맨드가 상기 기록 커맨드 또는 상기 RMW 커맨드와 연관된 상기 기록 커맨드일 때,
상기 뱅크 터치 카운트 리스트로부터 상기 제1 커맨드에 의해 액세스되고 있는 상기 뱅크의 상기 뱅크 우선 순위 랭크를 획득하는 단계,
상기 제1 커맨드가 개방 로우에 액세스하는 경우 상기 제1 커맨드를 제5 우선 순위 큐에 삽입하는 단계로서, 상기 제5 우선 순위 큐는 상기 뱅크 우선 순위 랭크와 연관되고 상기 제1 커맨드에 의해 액세스되고 있는 상기 뱅크에 할당되는 상기 높은 우선 순위 큐인, 상기 제5 우선 순위 큐에 삽입하는 단계, 및
상기 제1 커맨드가 폐쇄된 로우에 액세스하는 경우 상기 제1 커맨드를 제6 우선 순위 큐에 삽입하는 단계로서, 상기 제6 우선 순위 큐는 상기 뱅크 우선 순위 랭크와 연관되고 상기 제1 커맨드에 의해 액세스되고 있는 상기 뱅크에 할당되는 상기 낮은 우선 순위 큐인, 상기 제6 우선 순위 큐에 삽입하는 단계를 더 포함하는 것인, 방법. - 제11항에 있어서,
커맨드 선택 프로세스를 수행하는 단계를 더 포함하되, 상기 커맨드 선택 프로세스를 수행하는 단계는:
상기 커맨드들에서의 제1 커맨드에 대해,
상기 제1 커맨드가 컬럼 커맨드가 아닌 경우,
상기 제1 커맨드를 상기 메모리 구성요소로 발행하는 단계,
상기 제1 커맨드가 컬럼 커맨드인 경우,
상기 제1 커맨드에 의해 액세스된 상기 뱅크와 연관된 상기 뱅크 터치 카운트를 감산하는 단계, 및
상기 제1 커맨드를 상기 메모리 구성요소로 발행하는 단계를 포함하는 것인, 방법. - 제16항에 있어서,
상기 제1 커맨드가 컬럼 커맨드인 경우,
상기 제1 커맨드가 판독 커맨드인 경우 미결 판독 커맨드들의 수를 감산하는 단계, 및
상기 제1 커맨드의 진입 시간을 소거하는 단계를 더 포함하는, 방법. - 제11항에 있어서, 초기화를 수행하는 단계는:
상기 커맨드 큐로 상기 복수의 커맨드들 각각의 진입 시간을 레코딩하는 단계로서, 상기 복수의 커맨드들은 제1 커맨드를 포함하는, 상기 레코딩하는 단계, 및
판독 커맨드?? 것으로 결정되는 상기 복수의 커맨드들 각각에 대한 미결 판독 커맨드들의 수를 감산하는 단계를 더 포함하는, 방법. - 명령어들을 포함하는 컴퓨터 판독 가능한 저장 매체로서, 상기 명령어들은 프로세싱 디바이스에 의해 실행될 때, 상기 프로세싱 디바이스로 하여금:
커맨드 큐에서 복수의 커맨드들을 수신하는 동작들;
상기 커맨드들에 기초하여 초기화를 수행하는 동작들로서, 상기 초기화를 수행하는 동작들은:
뱅크 터치 카운트 리스트를 업데이트하는 동작들을 포함하되, 상기 뱅크 터치 카운트 리스트는 상기 커맨드들에 의해 액세스되고 있는 복수의 뱅크들의 리스트, 및 각각, 상기 뱅크들 각각에 액세스하는 커맨드들의 수를 식별하는 상기 뱅크들의 리스트에서의 상기 뱅크들 각각에 대한 뱅크 터치 카운트를 포함하되,
상기 뱅크 터치 카운트 리스트를 업데이트하는 동작들은 상기 뱅크들 각각에 대한 상기 뱅크 터치 카운트에 기초하여 상기 뱅크들 각각에 뱅크 우선 순위 랭크를 할당하는 동작들을 포함하는, 상기 초기화를 수행하는 동작들; 및
상기 커맨드 큐에서의 상기 커맨드들을 스케줄링하는 동작들로서, 상기 커맨드들을 스케줄링하는 동작들은:
상기 뱅크 터치 카운트 리스트에 기초하여 상기 커맨드 큐에서의 상기 커맨드들 각각을 복수의 우선 순위 큐들로 삽입하는 동작들을 포함하되, 상기 복수의 우선 순위 큐들은:
판독 커맨드들 및 높아진 커맨드들에 대한 첫 번째 높은 우선 순위 큐 및 두 번째 높은 우선 순위 큐,
판독-수정-기록(RMW) 커맨드들과 연관된 판독 커맨드들에 대한 제1 복수의 뱅크 우선 순위 큐들, 및
기록 커맨드들 및 RMW 커맨드들과 연관된 기록 커맨드들에 대한 제2 복수의 뱅크 우선 순위 큐들을 포함하되,
상기 제1 복수의 뱅크 우선 순위 큐들은 상기 제2 복수의 뱅크 우선 순위 큐들보다 우선 순위가 더 높은 것인, 상기 커맨드들을 스케줄링하는 동작들을 수행하게 하는 것인, 컴퓨터 판독 가능한 저장 매체. - 제19항에 있어서, 상기 뱅크들 각각에 상기 뱅크 우선 순위 랭크를 할당하기 위해, 상기 프로세싱 디바이스는 또한:
더 높은 뱅크 터치 카운트를 갖는 뱅크들에 더 높은 뱅크 우선 순위 랭크를 할당하는 동작들을 포함하는 동작들을 수행하는 것인, 컴퓨터 판독 가능한 저장 매체.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/111,974 | 2018-08-24 | ||
US16/111,974 US11144240B2 (en) | 2018-08-24 | 2018-08-24 | Memory sub-system for increasing bandwidth for command scheduling |
PCT/US2019/047887 WO2020041690A1 (en) | 2018-08-24 | 2019-08-23 | Memory sub-system for increasing bandwidth for command scheduling |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20210036986A true KR20210036986A (ko) | 2021-04-05 |
Family
ID=69586876
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020217008402A KR20210036986A (ko) | 2018-08-24 | 2019-08-23 | 커맨드 스케줄링을 위한 대역폭을 증가시키기 위한 메모리 서브 시스템 |
Country Status (5)
Country | Link |
---|---|
US (2) | US11144240B2 (ko) |
EP (1) | EP3841455A4 (ko) |
KR (1) | KR20210036986A (ko) |
CN (1) | CN112840310B (ko) |
WO (1) | WO2020041690A1 (ko) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11144240B2 (en) | 2018-08-24 | 2021-10-12 | Micron Technology, Inc. | Memory sub-system for increasing bandwidth for command scheduling |
US11093174B1 (en) * | 2020-02-19 | 2021-08-17 | Dell Products L.P. | Information handling system having improved host memory buffer for input/output requests |
EP4100825A4 (en) * | 2020-03-10 | 2023-04-12 | Micron Technology, Inc. | QUEUE MANAGEMENT FOR MEMORY SUBSYSTEMS |
US12026055B2 (en) * | 2020-07-13 | 2024-07-02 | Samsung Electronics Co., Ltd. | Storage device with fault resilient read-only mode |
US11526306B1 (en) * | 2021-05-18 | 2022-12-13 | Micron Technology, Inc. | Command scheduling in a memory subsystem according to a selected scheduling ordering |
US12112786B2 (en) | 2021-09-01 | 2024-10-08 | Micron Technology, Inc. | Command scheduling component for memory |
CN116755639B (zh) * | 2023-08-18 | 2024-03-08 | 深圳大普微电子科技有限公司 | 闪存接口的性能评估方法及相关装置 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6246256B1 (en) * | 1999-11-29 | 2001-06-12 | Broadcom Corporation | Quantized queue length arbiter |
US6848020B2 (en) * | 2001-11-27 | 2005-01-25 | International Business Machines Corporation | Command aging method for data storage devices |
US8595459B2 (en) | 2004-11-29 | 2013-11-26 | Rambus Inc. | Micro-threaded memory |
US7877558B2 (en) | 2007-08-13 | 2011-01-25 | Advanced Micro Devices, Inc. | Memory controller prioritization scheme |
US7870351B2 (en) * | 2007-11-15 | 2011-01-11 | Micron Technology, Inc. | System, apparatus, and method for modifying the order of memory accesses |
US8245232B2 (en) * | 2007-11-27 | 2012-08-14 | Microsoft Corporation | Software-configurable and stall-time fair memory access scheduling mechanism for shared memory systems |
US8799912B2 (en) | 2009-07-22 | 2014-08-05 | Empire Technology Development Llc | Application selection of memory request scheduling |
US8854387B2 (en) * | 2010-12-22 | 2014-10-07 | Advanced Micro Devices, Inc. | Bundle-based CPU/GPU memory controller coordination mechanism |
CN103765394B (zh) | 2011-08-23 | 2016-08-24 | 富士通株式会社 | 信息处理装置和调度方法 |
US9021146B2 (en) | 2011-08-30 | 2015-04-28 | Apple Inc. | High priority command queue for peripheral component |
WO2013111019A2 (en) * | 2012-01-27 | 2013-08-01 | Marvell World Trade Ltd. | Systems and methods for dynamic priority control |
US8909874B2 (en) * | 2012-02-13 | 2014-12-09 | International Business Machines Corporation | Memory reorder queue biasing preceding high latency operations |
US9762390B2 (en) | 2012-04-06 | 2017-09-12 | Live Nation Entertainment, Inc. | Enhanced task scheduling for data access control using queue protocols |
US8990473B2 (en) * | 2012-10-04 | 2015-03-24 | Applied Micro Circuits Corporation | Managing requests to open and closed banks in a memory system |
KR20150017526A (ko) | 2013-08-07 | 2015-02-17 | 삼성전자주식회사 | 메모리 명령 스케줄러 및 메모리 명령 스케줄링 방법 |
US9294558B1 (en) * | 2014-03-31 | 2016-03-22 | Amazon Technologies, Inc. | Connection re-balancing in distributed storage systems |
US10540116B2 (en) * | 2017-02-16 | 2020-01-21 | Toshiba Memory Corporation | Method of scheduling requests to banks in a flash controller |
US11144240B2 (en) | 2018-08-24 | 2021-10-12 | Micron Technology, Inc. | Memory sub-system for increasing bandwidth for command scheduling |
-
2018
- 2018-08-24 US US16/111,974 patent/US11144240B2/en active Active
-
2019
- 2019-08-23 EP EP19850864.0A patent/EP3841455A4/en not_active Withdrawn
- 2019-08-23 CN CN201980064639.7A patent/CN112840310B/zh active Active
- 2019-08-23 WO PCT/US2019/047887 patent/WO2020041690A1/en unknown
- 2019-08-23 KR KR1020217008402A patent/KR20210036986A/ko not_active Application Discontinuation
-
2021
- 2021-10-11 US US17/498,415 patent/US11625197B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
CN112840310B (zh) | 2022-10-14 |
EP3841455A1 (en) | 2021-06-30 |
US20220027095A1 (en) | 2022-01-27 |
CN112840310A (zh) | 2021-05-25 |
US11625197B2 (en) | 2023-04-11 |
US11144240B2 (en) | 2021-10-12 |
US20200065027A1 (en) | 2020-02-27 |
WO2020041690A1 (en) | 2020-02-27 |
EP3841455A4 (en) | 2022-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11625197B2 (en) | Memory sub-system for increasing bandwidth for command scheduling | |
US20210271424A1 (en) | Quality of service control for read operations in memory systems | |
US11017847B2 (en) | On-demand high performance mode for memory write commands | |
US11543978B2 (en) | Credit-based scheduling of memory commands | |
US11972152B2 (en) | Memory sub-system for supporting deterministic and non-deterministic commands based on command expiration and the state of the intermediate command queue | |
US10503438B1 (en) | Memory sub-system supporting non-deterministic commands | |
US11461256B2 (en) | Quality of service levels for a direct memory access engine in a memory sub-system | |
US11520699B2 (en) | Using a common pool of blocks for user data and a system data structure | |
CN113129974A (zh) | 跟踪在存储器装置处执行的操作 | |
CN112349334A (zh) | 跨越块池的耗损均衡 | |
CN112835816B (zh) | 存储器子系统及相关硬件存储器控制器和方法 | |
CN114003518A (zh) | 在具有高延迟后备存储的存储器子系统中管理存储器命令的处理 | |
KR20210138497A (ko) | 메모리 서브 시스템에서 메모리 다이들의 피크 전류의 관리 | |
US10691595B2 (en) | Cache in a non-volatile memory subsystem | |
US12112786B2 (en) | Command scheduling component for memory | |
US20240345947A1 (en) | Virtual indexing in a memory device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E601 | Decision to refuse application |