KR20220113736A - 메모리 액세스 요청 스테이징 - Google Patents

메모리 액세스 요청 스테이징 Download PDF

Info

Publication number
KR20220113736A
KR20220113736A KR1020227022687A KR20227022687A KR20220113736A KR 20220113736 A KR20220113736 A KR 20220113736A KR 1020227022687 A KR1020227022687 A KR 1020227022687A KR 20227022687 A KR20227022687 A KR 20227022687A KR 20220113736 A KR20220113736 A KR 20220113736A
Authority
KR
South Korea
Prior art keywords
memory access
access request
memory
staging buffer
command queue
Prior art date
Application number
KR1020227022687A
Other languages
English (en)
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 KR20220113736A publication Critical patent/KR20220113736A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1626Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
    • G06F13/1631Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests through address comparison
    • 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
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/406Management or control of the refreshing or charge-regeneration cycles
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/12Group selection circuits, e.g. for memory block selection, chip selection, array selection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Hardware Design (AREA)
  • Memory System (AREA)

Abstract

메모리 액세스 요청들을 스테이징하는 것은 동적 랜덤 액세스 메모리로 향하는 메모리 액세스 요청을 수신하는 단계; 스테이징 버퍼에 메모리 액세스 요청을 저장하는 단계; 및 메모리 액세스 요청을 스테이징 버퍼로부터 커맨드 큐로 이동시키는 단계를 포함한다.

Description

메모리 액세스 요청 스테이징
커맨드 큐(command queue)는 실행 전에 메모리 액세스 요청을 저장한다. 커맨드 큐에 대한 아비트레이션(arbitration) 및 저장 압력이 증가하여 성능이 저하된다.
도 1은 일부 실시예에 따른 메모리 액세스 요청을 스테이징하기 위한 예시적인 프로세서의 블록도이다.
도 2는 일부 실시예에 따른 메모리 액세스 요청을 스테이징하기 위한 예시적인 방법의 흐름도이다.
도 3은 일부 실시예에 따른 메모리 액세스 요청을 스테이징하기 위한 예시적인 방법의 흐름도이다.
도 4는 일부 실시예에 따른 메모리 액세스 요청을 스테이징하기 위한 예시적인 방법의 흐름도이다.
도 5는 일부 실시예에 따른 메모리 액세스 요청을 스테이징하기 위한 예시적인 방법의 흐름도이다.
도 6은 일부 실시예에 따른 버퍼 아비트레이션을 스테이징하기 위한 예시적인 방법의 흐름도이다.
도 7은 일부 실시예에 따른 버퍼 아비트레이션을 스테이징하기 위한 예시적인 방법의 흐름도이다.
도 8은 일부 실시예에 따른 버퍼 아비트레이션을 스테이징하기 위한 예시적인 방법의 흐름도이다.
도 9는 일부 실시예에 따른 버퍼 아비트레이션을 스테이징하기 위한 예시적인 방법의 흐름도이다.
도 10은 일부 실시예에 따른 버퍼 아비트레이션을 스테이징하기 위한 예시적인 방법의 흐름도이다.
도 11은 일부 실시예에 따른 버퍼 아비트레이션을 스테이징하기 위한 예시적인 방법의 흐름도이다.
도 12는 일부 실시예에 따른 버퍼 아비트레이션을 스테이징하기 위한 예시적인 방법의 흐름도이다.
도 13은 일부 실시예에 따른 버퍼 아비트레이션을 스테이징하기 위한 예시적인 방법의 흐름도이다.
일부 실시예에서, 메모리 액세스 요청들을 스테이징하는 방법은 동적 랜덤 액세스 메모리로 향하는 메모리 액세스 요청을 수신하는 단계; 스테이징 버퍼에 메모리 액세스 요청을 저장하는 단계; 및 메모리 액세스 요청을 스테이징 버퍼로부터 커맨드 큐로 이동시키는 단계를 포함한다.
일부 실시예에서, 방법은 커맨드 큐로부터 메모리 액세스 요청을 선택하는 단계; 및 메모리 액세스 요청을 실행하는 단계를 포함한다. 일부 실시예에서, 방법은 다른 메모리 액세스 요청을 수신하는 단계; 스테이징 버퍼가 가득 찼다고 결정하는 단계; 및 스테이징 버퍼에 다른 메모리 액세스 요청을 저장하지 않고 커맨드 큐에 다른 메모리 액세스 요청을 저장하는 단계를 포함한다. 일부 실시예에서, 방법은 커맨드 큐로의 이동을 위해 하나 이상의 아비트레이션 규칙들에 기초하여 스테이징 버퍼의 복수의 메모리 액세스 요청들 중 메모리 액세스 요청을 선택하는 단계를 포함한다. 일부 실시예에서, 하나 이상의 아비트레이션 규칙들에 기초하여 메모리 액세스 요청을 선택하는 단계는 열린 동적 랜덤 액세스 메모리 페이지, 뱅크 그룹 회전, 메모리 액세스 요청의 요청 유형 또는 서브채널 밸런싱 중 하나 이상에 기초하여 메모리 액세스 요청을 선택하는 단계를 포함한다
일부 실시예에서, 메모리 액세스 요청을 스테이징하기 위한 메모리 관리 유닛은 동적 랜덤 액세스 메모리로 향하는 메모리 액세스 요청을 수신하는 단계; 스테이징 버퍼에 메모리 액세스 요청을 저장하는 단계; 및 메모리 액세스 요청을 스테이징 버퍼로부터 커맨드 큐로 이동시키는 단계를 포함하는 단계들을 수행한다.
일부 실시예에서, 단계들은 커맨드 큐로부터 메모리 액세스 요청을 선택하는 단계; 및 메모리 액세스 요청을 실행하는 단계를 포함한다. 일부 실시예에서, 단계들은 다른 메모리 액세스 요청을 수신하는 단계; 스테이징 버퍼가 가득 찼다고 결정하는 단계; 및 스테이징 버퍼에 다른 메모리 액세스 요청을 저장하지 않고 커맨드 큐에 다른 메모리 액세스 요청을 저장하는 단계를 포함한다. 일부 실시예에서, 단계들은 하나 이상의 아비트레이션 규칙들에 기초하여 커맨드 큐로의 이동을 위해 스테이징 버퍼의 복수의 메모리 액세스 요청들 중 메모리 액세스 요청을 선택하는 단계를 포함한다. 일부 실시예에서, 하나 이상의 아비트레이션 규칙들에 기초하여 메모리 액세스 요청을 선택하는 단계는 열린 동적 랜덤 액세스 메모리 페이지, 뱅크 그룹 회전, 메모리 액세스 요청의 요청 유형 또는 서브채널 밸런싱 중 하나 이상에 기초하여 메모리 액세스 요청을 선택하는 단계를 포함한다.
일부 실시예에서, 메모리 액세스 요청을 스테이징하기 위한 프로세서는 동적 랜덤 액세스 메모리로 향하는 메모리 액세스 요청을 수신하는 단계; 스테이징 버퍼에 메모리 액세스 요청을 저장하는 단계; 및 메모리 액세스 요청을 스테이징 버퍼에서 커맨드 큐로 이동시키는 단계를 포함하는 단계들을 수행하기 위한 메모리 관리 유닛을 포함한다:
일부 실시예에서, 단계들은 커맨드 큐로부터 메모리 액세스 요청을 선택하는 단계; 및 메모리 액세스 요청을 실행하는 단계를 포함한다. 일부 실시예에서, 단계들은 다른 메모리 액세스 요청을 수신하는 단계; 스테이징 버퍼가 가득 찼다고 결정하는 단계; 및 스테이징 버퍼에 다른 메모리 액세스 요청을 저장하지 않고 커맨드 큐에 다른 메모리 액세스 요청을 저장하는 단계를 포함한다. 일부 실시예에서, 단계들은 커맨드 큐로의 이동을 위해 하나 이상의 아비트레이션 규칙들에 기초하여 스테이징 버퍼의 복수의 메모리 액세스 요청들 중 메모리 액세스 요청을 선택하는 단계를 포함한다. 일부 실시예에서, 하나 이상의 아비트레이션 규칙들에 기초하여 메모리 액세스 요청을 선택하는 단계는 열린 동적 랜덤 액세스 메모리 페이지, 뱅크 그룹 회전, 메모리 액세스 요청의 요청 유형 또는 서브채널 밸런싱 중 하나 이상에 기초하여 메모리 액세스 요청을 선택하는 단계를 포함한다.
일부 실시예에서, 메모리 액세스 요청을 스테이징하기 위한 시스템은 프로세서를 포함하는 장치를 포함하고, 프로세서는 동적 랜덤 액세스 메모리에 대한 메모리 액세스 요청을 수신하는 단계; 스테이징 버퍼에 메모리 액세스 요청을 저장하는 단계; 및 메모리 액세스 요청을 스테이징 버퍼로부터 커맨드 큐로 이동시키는 단계를 포함하는 단계들을 수행하기 위한 메모리 관리 유닛을 포함한다.
일부 실시예에서, 단계들은 커맨드 큐로부터 메모리 액세스 요청을 선택하는 단계; 및 메모리 액세스 요청을 실행하는 단계를 포함한다. 일부 실시예에서, 단계들은 다른 메모리 액세스 요청을 수신하는 단계; 스테이징 버퍼가 가득 찼다고 결정하는 단계; 및 스테이징 버퍼에 다른 메모리 액세스 요청을 저장하지 않고 커맨드 큐에 다른 메모리 액세스 요청을 저장하는 단계를 포함한다. 일부 실시예에서, 단계들은 커맨드 큐로의 이동을 위해 하나 이상의 아비트레이션 규칙들에 기초하여 스테이징 버퍼의 복수의 메모리 액세스 요청들 중 메모리 액세스 요청을 선택하는 단계를 포함한다. 일부 실시예에서, 하나 이상의 아비트레이션 규칙들에 기초하여 메모리 액세스 요청을 선택하는 단계는 열린 동적 랜덤 액세스 메모리 페이지, 뱅크 그룹 회전, 메모리 액세스 요청의 요청 유형 또는 서브채널 밸런싱 중 하나 이상에 기초하여 메모리 액세스 요청을 선택하는 단계를 포함한다.
도 1은 일부 실시예에 따른 비제한적인 예시적인 프로세서(100)의 블록도이다. 예시적인 프로세서(100)는 모바일 디바이스, 개인용 컴퓨터, 주변 하드웨어 컴포넌트, 게임 디바이스, 셋톱 박스 등을 포함하는 다양한 컴퓨팅 디바이스에서 구현될 수 있다. 프로세서(100)는 메모리 관리 유닛(102)을 포함한다. 메모리 관리 유닛(102)은 메모리 액세스 요청(예를 들어, 메모리의 특정 영역에 대한 데이터 판독 및/또는 기록 요청)을 수신한다. 메모리 관리 유닛(102)은 또한 메모리 액세스 요청을 수행하기 위해 메모리 액세스 요청의 가상 메모리 어드레스를 물리적 메모리 어드레스로 변환하는 작업을 수행한다.
메모리 관리 유닛(102)은 커맨드 큐(104)를 포함한다. 커맨드 큐(104)는 동적 랜덤 액세스 메모리(106)에 액세스하기 위한 실행 전에 수신된(예를 들어, 중앙 처리 장치 또는 프로세서(100)의 다른 컴포넌트로부터) 메모리 액세스 요청을 저장한다. 동적 랜덤 액세스 메모리(106)는 프로세서(100)와 별개인 것으로 도시되어 있지만, 동적 랜덤 액세스 메모리(106)는 온-칩(on-chip) 동적 랜덤 액세스 메모리(106)를 포함할 수 있다는 것(예를 들어, 프로세서(100)의 컴포넌트로서)이 이해된다. 동적 랜덤 액세스 메모리(106)가 다중 뱅크들을 포함하는 경우, 메모리 관리 유닛(102)은 각각의 뱅크에 각각 대응하는 다중 커맨드 큐들(104)을 포함할 수 있다.
메모리 관리 유닛(102)은 FCFS(first-come-first-served), FR-FCFS(first-ready, first-come-first-served), FIFO(first-in-first-out) 등과 같은 하나 이상의 방식(scheme)들을 사용하여 커맨드 큐(104)로부터 실행을 위한 메모리 액세스 요청들을 선택한다. 메모리 관리 유닛(102)은 하나 이상의 규칙들을 사용하여 실행을 위해 커맨드 큐(104)로부터 메모리 액세스 요청들을 선택하는 커맨드 큐 아비터(arbiter)(108)를 포함한다. 예를 들어, 하나 이상의 규칙들은 타이밍 또는 클록 정보(예를 들어, 메모리 액세스 요청의 연령)를 기초로 한다. 다른 예로서, 하나 이상의 규칙들은 페이지 테이블(page table)(110)에 기초한다. 예를 들어, 페이지 테이블(110) 히트(hit)를 초래할 메모리 액세스 요청들은 실행을 위해 커맨드 큐(104)로부터 우선적으로 선택된다.
기존 접근 방식에서, 메모리 관리 유닛(102)에 의해 수신된 메모리 액세스 요청들은 후속 실행을 위해 커맨드 큐(104)에 직접 배치된다. 성능을 개선하고 커맨드 큐(104)에 대한 압력을 완화하기 위해 메모리 관리 유닛(102)은 스테이징 버퍼(staging buffer)(112)를 포함한다. 메모리 관리 유닛(102)에 의해 수신된 메모리 액세스 요청들은 스테이징 버퍼(112)에 배치된다. 그 다음, 스테이징 버퍼 아비터(114)는, 하나 이상의 아비트레이션 규칙들에 기초하여, 커맨드 큐(104)로의 이동을 위해 스테이징 버퍼(112)로부터의 메모리 액세스 요청을 선택한다.
일부 실시예에서, 아비트레이션 규칙은 메모리 액세스 요청의 타겟이 되는 동적 랜덤 액세스 메모리(106) 페이지를 기초로 한다. 예를 들어, 열려 있는 동적 랜덤 액세스 메모리(106) 페이지를 타겟으로 하는 메모리 액세스 요청은 페이지를 닫고 열 때 요구되는 오버헤드(overhead)가 감소함에 따라 커맨드 큐(104)로의 이동을 위해 우선적으로 선택된다. 다른 예로서, 커맨드 큐(104)의 다른 메모리 액세스 요청에 의해 또한 타겟이 되고 따라서 선택된 메모리 액세스 요청이 실행될 때 열릴 동적 랜덤 액세스 메모리(106) 페이지를 타겟으로 하는 메모리 액세스 요청이 우선적으로 선택된다.
일부 실시예에서, 아비트레이션 규칙은 뱅크 그룹 회전 또는 랭크 회전에 기초한다. 예를 들어, 동적 랜덤 액세스 메모리(106)가 다중 뱅크들을 포함하는 경우, 메모리 액세스 요청들은 커맨드 큐(104)에 추가하기 위해 스테이징 버퍼(112)로부터 선택되어 연속적으로 추가된 요청들이 동일한 뱅크를 타겟으로 하지 않도록 한다. 예를 들어, 제1 뱅크를 타겟으로 하는 메모리 액세스 요청이 커맨드 큐(104)로 이동된 다음, 제2 뱅크를 타겟으로 하는 메모리 액세스 요청이 커맨드 큐(104)로 이동된다. 제1 뱅크를 타겟으로 하는 다른 메모리 액세스 요청이 그 후 커맨드 큐(104)에 추가되는 방식 등이다. 일부 실시예에서, 메모리 액세스 요청은 동일하거나 상이한 뱅크들 내의 상이한 랭크들을 타겟으로 하거나 대안적으로 동적 랜덤 액세스 메모리(106)의 상이한 서브채널들을 타겟으로 하기 위해(예를 들어, 서브채널 밸런싱) 선택된다.
일부 실시예에서, 아비트레이션 규칙들은 메모리 액세스 요청들에 대한 요청 유형(예를 들어, 판독 또는 기록)에 기초한다. 동적 랜덤 액세스 메모리(106) 판독들 및 기록들 사이의 스위칭에서 계산 오버헤드가 존재하므로, 판독 요청들 및/또는 기록 요청들은 커맨드 큐(104)로의 이동을 위한 요청들의 "버스트(burst)"의 일부로 함께 그룹화된다. 따라서, 판독 요청들의 그룹 및/또는 기록 요청들의 그룹이 연속적으로 실행될 수 있다.
일부 실시예에서, 메모리 관리 유닛(102)은 스테이징 버퍼(112)가 가득 찼다고 결정한다. 따라서, 메모리 관리 유닛(102)은 수신된 메모리 액세스 요청을 스테이징 버퍼(112)에 저장하지 않고 수신된 메모리 액세스 요청을 커맨드 큐(104)에 직접 저장한다.
추가 설명을 위해, 도 2는 동적 랜덤 액세스 메모리(106)에 대한 메모리 액세스 요청(204)을 수신하는 단계(202)(예를 들어, 프로세서(100)의 메모리 관리 유닛(102)에 의해)를 포함하는 본 발명의 실시예에 따른 메모리 액세스 요청을 스테이징하기 위한 예시적인 방법을 도시하는 흐름도를 설명한다. 메모리 액세스 요청(204)은 동적 랜덤 액세스 메모리(106)에 데이터를 기록하거나 그로부터 데이터를 판독하기 위한 요청을 포함한다. 메모리 액세스 요청(204)은 메모리 관리 유닛(102)을 중앙 처리 유닛 또는 다른 컴포넌트에 연결하는 데이터 패브릭(data fabric) 또는 다른 상호연결(interconnect)을 통해 수신된다.
도 2의 방법은 또한 메모리 액세스 요청(204)을 스테이징 버퍼(112)에 저장하는 단계(206)(예를 들어, 메모리 관리 유닛(102)에 의해)를 포함한다. 도 2의 방법은 또한 메모리 액세스 요청(204)을 스테이징 버퍼(112)에서 커맨드 큐(104)로 이동시키는 단계(208)를 포함한다. 메모리 액세스 요청(204)을 이동시키는 단계(208)는 스테이징 버퍼(112)로부터 메모리 액세스 요청(204)을 제거하고 커맨드 큐(104)에 메모리 액세스 요청(204)을 저장하는 단계를 포함한다. 일부 실시예에서, 메모리 액세스 요청(204)은 임계치(threshold)를 충족하는 스테이징 버퍼(112)의 메모리 액세스 요청들(204)의 수에 응답하여 이동된다. 일부 실시예에서, 메모리 액세스 요청(204)은 임계치 아래로 떨어지는 커맨드 큐(104)의 메모리 액세스 요청들(204)의 수에 응답하여 이동된다. 일부 실시예에서, 메모리 액세스 요청(204)은 임계치를 충족하는 메모리 액세스 요청(204)의 연령(age)(예를 들어, 메모리 액세스 요청(204)이 수신된 시간)에 응답하여 이동된다. 일부 실시예에서 메모리 액세스 요청(204)은 충족되는 하나 이상의 아비트레이션 규칙들에 응답하여 이동된다.
추가 설명을 위해, 도 3은 동적 랜덤 액세스 메모리(106)로 향하는 메모리 액세스 요청(204)을 수신하는 단계(202)(예를 들어, 프로세서(100)의 메모리 관리 유닛(102)에 의해); 스테이징 버퍼(112)에 메모리 액세스 요청(204)을 저장하는 단계(206); 및 메모리 액세스 요청(204)을 스테이징 버퍼(112)에서 커맨드 큐(104)로 이동시키는 단계(208)를 포함하는 본 개시의 실시예에 따른 메모리 액세스 요청을 스테이징하기 위한 예시적인 방법을 나타내는 흐름도를 설명한다.
도 3의 방법은 도 3의 방법이 커맨드 큐(104)로부터 메모리 액세스 요청(204)을 선택하는 단계(302)(예를 들어, 프로세서(100)의 메모리 관리 유닛(102)에 의해)를 또한 포함한다는 점에서 도 2와 상이하다. 메모리 액세스 요청(204)은 FCFS(first-come-first-served), FR-FCFS(first-ready, first-come-first-served), FIFO(first-in-first-out) 등과 같은 하나 이상의 방식들을 사용하여 커맨드 큐(104)로부터 선택된다. 일부 실시예에서, 메모리 관리 유닛(102)은 하나 이상의 규칙들을 사용하여 실행을 위해 커맨드 큐(104)로부터 메모리 액세스 요청들을 선택하는 커맨드 큐 아비터(108)를 포함한다. 예를 들어, 하나 이상의 규칙들은 타이밍 또는 클록 정보(예를 들어, 메모리 액세스 요청의 연령)를 기초로 한다. 다른 예로서, 하나 이상의 규칙들은 페이지 테이블(110)에 기초한다. 예를 들어, 페이지 테이블(110) 히트를 초래할 메모리 액세스 요청은 실행을 위해 커맨드 큐(104)로부터 우선적으로 선택된다.
도 3의 방법은 도 3의 방법이 메모리 액세스 요청(204)을 실행하는 단계(304)(예를 들어, 메모리 관리 유닛(102)에 의해)를 또한 포함한다는 점에서 도 2와 상이하다. 메모리 액세스 요청(204)을 실행하는 단계(304)는 메모리 액세스 요청(204)에 지정된 동적 랜덤 액세스 메모리(106) 어드레스로부터 데이터를 판독하는 단계 및/또는 메모리 액세스 요청(204)에 지정된 동적 랜덤 액세스 메모리(106) 어드레스에 데이터를 기록하는 단계를 포함한다.
추가 설명을 위해, 도 4는 동적 랜덤 액세스 메모리(106)로 향하는 메모리 액세스 요청(204)을 수신하는 단계(202)(예를 들어, 프로세서(100)의 메모리 관리 유닛(102)에 의해); 스테이징 버퍼(112)에 메모리 액세스 요청(204)을 저장하는 단계(206); 및 메모리 액세스 요청(204)을 스테이징 버퍼(112)에서 커맨드 큐(104)로 이동시키는 단계(208)를 포함하는 본 개시의 실시예에 따른 메모리 액세스 요청을 스테이징하기 위한 예시적인 방법을 예시하는 흐름도를 설명한다.
도 4의 방법은 도 4의 방법이 다른 메모리 액세스 요청(404)을 수신하는 단계(402)를 또한 포함한다는 점에서 도 2와 상이하다. 도 4의 방법은 또한 도 4의 방법이 스테이징 버퍼(112)가 가득 찼다고 결정하는 단계(406)를 포함한다는 점에서 도 2와 상이하다. 스테이징 버퍼(112)는 미리 정해진 최대 수의 메모리 액세스 요청들을 저장하기 위한 미리 정해진 양의 메모리를 포함한다. 따라서, 스테이징 버퍼(112)가 가득 찼다고 결정하는 단계(406)는 스테이징 버퍼(112)가 미리 정의된 최대 수의 메모리 액세스 요청들을 저장하고 있다고 결정하는 단계를 포함한다.
도 4의 방법은 도 4의 방법이 스테이징 버퍼(112)에 다른 메모리 액세스 요청(404)을 저장하지 않고 커맨드 큐(104)에 다른 메모리 액세스 요청(404)을 저장하는 단계(408)를 포함한다는 점에서 도 2와 더 상이하다. 따라서, 스테이징 버퍼(112)는 가득 차면 바이패스된다(bypassed).
추가 설명을 위해, 도 5는 동적 랜덤 액세스 메모리(106)로 향하는 메모리 액세스 요청(204)을 수신하는 단계(202)(예를 들어, 프로세서(100)의 메모리 관리 유닛(102)에 의해); 스테이징 버퍼(112)에 메모리 액세스 요청(204)을 저장하는 단계(206); 및 메모리 액세스 요청(204)을 스테이징 버퍼(112)에서 커맨드 큐(104)로 이동시키는 단계(208)를 포함하는 본 개시의 실시예에 따른 메모리 액세스 요청을 스테이징하기 위한 예시적인 방법을 나타내는 흐름도를 설명한다.
도 5의 방법은 도 5의 방법이 커맨드 큐(104)로 이동시키기 위해, 하나 이상의 아비트레이션 규칙들에 기초하여 스테이징 버퍼(112)의 복수의 메모리 액세스 요청들로부터 메모리 액세스 요청(204)을 선택하는 단계(502)(예를 들어, 메모리 관리 유닛(102)에 의해, 메모리 관리 유닛(102)의 스테이징 버퍼 아비터(114)에 의해)를 포함한다는 점에서 도 2와 상이하다.
일부 실시예에서, 아비트레이션 규칙들은 메모리 액세스 요청의 타겟이 되는 동적 랜덤 액세스 메모리(106) 페이지를 기초로 한다. 예를 들어, 열려 있는 동적 랜덤 액세스 메모리(106) 페이지를 타겟으로 하는 메모리 액세스 요청은 페이지를 닫고 열 때 요구되는 오버헤드가 감소함에 따라 커맨드 큐(104)로의 이동을 위해 우선적으로 선택된다. 다른 예로서, 커맨드 큐(104)의 다른 메모리 액세스 요청에 의해 또한 타겟이 되고 따라서 선택된 메모리 액세스 요청이 실행될 때 열릴 동적 랜덤 액세스 메모리(106) 페이지를 타겟으로 하는 메모리 액세스 요청이 우선적으로 선택된다.
일부 실시예에서, 아비트레이션 규칙들은 뱅크 그룹 회전 또는 랭크 회전에 기초한다. 예를 들어, 동적 랜덤 액세스 메모리(106)가 멀티 뱅크들을 포함하는 경우, 연속적으로 추가된 요청들이 동일한 뱅크를 타겟으로 하지 않도록 커맨드 큐(104)에 추가하기 위해 메모리 액세스 요청들이 스테이징 버퍼(112)로부터 선택된다. 예를 들어, 제1 뱅크를 타겟으로 하는 메모리 액세스 요청이 커맨드 큐(104)로 이동된 다음, 제2 뱅크를 타겟으로 하는 메모리 액세스 요청이 커맨드 큐(104)로 이동된다. 제1 뱅크를 타겟으로 하는 또 다른 메모리 액세스 요청이 커맨드 큐(104)에 추가되는 방식 등에 따른다. 일부 실시예에서, 메모리 액세스 요청들은 동일하거나 상이한 뱅크들 내의 상이한 랭크들을 타겟으로 하도록 선택된다. 메모리 액세스 요청들은 또한 서로 교대로(alternatively) 동적 랜덤 액세스 메모리(106)의 상이한 서브채널들을 타겟으로 하도록 선택된다(예를 들어, 서브채널 밸런싱).
일부 실시예에서, 아비트레이션 규칙들은 메모리 액세스 요청들에 대한 요청 유형(예를 들어, 판독 또는 기록)에 기초한다. 동적 랜덤 액세스 메모리(106) 판독들 및 기록들 사이의 스위칭에서 계산 오버헤드가 존재하기 때문에, 판독 요청들 및/또는 기록 요청들은 커맨드 큐(104)로의 이동을 위해 요청들의 "버스트"의 일부로 함께 그룹화된다. 따라서 판독 요청들의 그룹 및/또는 기록 요청들의 그룹이 연속적으로 실행된다.
추가 설명을 위해, 도 6은 스테이징 버퍼(112)에 복수의 메모리 액세스 요청들을 저장하는 단계(602)(예를 들어, 프로세서(100)의 메모리 관리 유닛(102)에 의해)를 포함하는 본 개시의 실시예에 따른 버퍼 아비트레이션을 스테이징하기 위한 예시적인 방법을 예시하는 흐름도를 설명한다. 메모리 액세스 요청은 동적 랜덤 액세스 메모리(106)에 데이터를 기록하거나 그로부터 데이터를 판독하기 위한 요청을 포함한다. 메모리 액세스 요청은 메모리 관리 유닛(102)을 중앙 처리 유닛 또는 다른 컴포넌트에 연결하는 데이터 패브릭 또는 다른 상호연결을 통해 이루어진다.
도 6의 방법은 또한, 하나 이상의 아비트레이션 규칙들에 기초하여, 스테이징 버퍼(112)로부터의 복수의 메모리 액세스 요청들 중 메모리 액세스 요청(608)을 선택하는 단계(606)를 포함한다. 예를 들어, 스테이징 버퍼 아비터(114)는 하나 이상의 아비트레이션 규칙들에 기초하여 메모리 액세스 요청(608)을 선택한다. 아비트레이션 규칙들은 스테이징 버퍼(112)에 저장된 메모리 액세스 요청들, 커맨드 큐(104), 페이지 테이블(110)에 저장된 메모리 액세스 요청들의 다양한 속성들, 및/또는 기타 속성들에 적용된다. 예를 들어, 아비트레이션 규칙들은 스테이징 버퍼(112) 및/또는 커맨드 큐(104)의 메모리 액세스 요청의 요청 유형, 현재 열려 있는 동적 랜덤 액세스 메모리(106) 페이지, 스테이징 버퍼(112) 및/또는 커맨드 큐(104)의 메모리 액세스 요청에 의해 타겟이 되는 뱅크 그룹들, 스테이징 버퍼(112) 및/또는 커맨드 큐(104)의 메모리 액세스 요청에 의해 타겟이 되는 페이지 또는 뱅크의 리프레시 상태, 및/또는 스테이징 버퍼(112) 및/또는 커맨드 큐(104)의 메모리 액세스 요청의 대상이 되는 서브채널에 기초한다.
도 6의 방법은 또한 메모리 액세스 요청(608)을 스테이징 버퍼(112)로부터 커맨드 큐(104)로 이동시키는 단계(610)를 포함한다. 메모리 액세스 요청(608)을 이동시키는 단계(610)는 스테이징 버퍼(112)로부터 메모리 액세스 요청(608)을 삭제하는 단계 및/또는 후속 덮어쓰기(overwriting)를 위해 메모리 액세스 요청(608)을 저장하는 스테이징 버퍼(112)의 일부를 해제하는 단계(freeing)를 포함한다. 메모리 액세스 요청(608)을 이동시키는 단계(610)는 또한 메모리 액세스 요청(608)을 커맨드 큐(104)에 추가하는 단계를 포함한다. 따라서, 메모리 액세스 요청(608)은 메모리 관리 유닛(102)에 의해 커맨드 큐(104)로부터 나중에 실행된다.
추가 설명을 위해, 도 7은 스테이징 버퍼(112)에 복수의 메모리 액세스 요청들을 저장하는 단계(602)(예를 들어, 프로세서(100)의 메모리 관리 유닛(102)에 의해); 하나 이상의 아비트레이션 규칙들에 기초하여, 스테이징 버퍼(112)로부터의 복수의 메모리 액세스 요청들 중 메모리 액세스 요청(608)을 선택하는 단계(606); 및 메모리 액세스 요청(608)을 스테이징 버퍼(112)에서 커맨드 큐(104)로 이동시키는 단계(610)를 포함하는 본 개시의 실시예에 따른 버퍼 아비트레이션을 스테이징하기 위한 예시적인 방법을 예시하는 흐름도를 설명한다.
도 7의 방법은 하나 이상의 아비트레이션 규칙들에 기초하여, 스테이징 버퍼(112)로부터의 복수의 메모리 액세스 요청들 중 메모리 액세스 요청(608)을 선택하는 단계(606)가 동일한 요청 유형의 메모리 액세스 요청 버스트를 선택하는 단계(702)를 포함하고, 여기서 메모리 액세스 요청 버스트는 메모리 액세스 요청(608)을 포함한다는 점에서 도 6과 상이하다. 메모리 액세스 요청 버스트는 동일한 유형(예를 들어, 판독 또는 기록)의 복수의 메모리 액세스 요청들을 포함한다. 메모리 액세스 요청 버스트의 메모리 액세스 요청들은 연속적으로 및/또는 적어도 부분적으로 동시에 커맨드 큐(104)로의 이동을 위해 선택되어 메모리 액세스 요청 버스트의 메모리 액세스 요청들이 나중에 연속적으로 및/또는 적어도 부분적으로 동시에 실행될 수 있도록 한다. 예를 들어, 판독 요청들의 버스트는 중간 판독 요청을 실행하지 않고 실행된다. 다른 예로서, 기록 요청들의 버스트는 중간 기록 요청을 실행하지 않고 실행된다. 동적 랜덤 액세스 메모리(106)에 대한 판독 및 기록 요청들의 실행 사이의 스위칭은 계산 오버헤드를 소모하므로, 이 계산 오버헤드는 동일한 요청 유형의 다중 메모리 액세스 요청들을 실행함으로써 방지된다. 따라서, 메모리 액세스 요청(608)은 커맨드 큐(104)에 추가된 동일한 요청 유형의 다른 메모리 액세스 요청들 및 또는 메모리 액세스 요청 버스트의 일부로서 커맨드 큐(104)에 후속적으로 추가되는 스테이징 버퍼(112)에 저장되는 동일한 요청 유형의 다른 메모리 액세스 요청들에 기초하여 선택된다.
추가 설명을 위해, 도 8은 스테이징 버퍼(112)에 복수의 메모리 액세스 요청들을 저장하는 단계(602)(예를 들어, 프로세서(100)의 메모리 관리 유닛(102)에 의해); 하나 이상의 아비트레이션 규칙들에 기초하여 스테이징 버퍼(112)로부터의 복수의 메모리 액세스 요청들 중 메모리 액세스 요청(608)을 선택하는 단계(606); 및 메모리 액세스 요청(608)을 스테이징 버퍼(112)에서 커맨드 큐(104)로 이동시키는 단계(610)를 포함하는 본 개시의 실시예에 따른 버퍼 아비트레이션을 스테이징하기 위한 예시적인 방법을 예시하는 흐름도를 설명한다.
도 8의 방법은 하나 이상의 아비트레이션 규칙들에 기초하여 스테이징 버퍼(112)로부터의 복수의 메모리 액세스 요청들 중 메모리 액세스 요청(608)을 선택하는 단계(606)가 다른 메모리 액세스 요청에 의해 타겟이 되는 뱅크, 메모리 액세스 요청에 의해 타겟이 되는 랭크, 또는 다른 메모리 액세스 요청에 의해 타겟이 되는 메모리 서브채널 중 하나 이상에 기초하여 메모리 액세스 요청(608)을 선택하는 단계(802)를 포함한다는 점에서 도 6과 상이하다. 예를 들어, 일부 실시예에서 메모리 액세스 요청들이 커맨드 큐(104)에 추가되어 실행된 메모리 액세스 요청들이 교대로 상이한 동적 랜덤 액세스 메모리(106) 랭크들 또는 뱅크들을 타겟으로 하게 한다(예를 들어, 랭크 밸런싱, 뱅크 밸런싱). 다른 실시예에서, 메모리 액세스 요청들이 커맨드 큐(104)에 추가되어 실행된 메모리 액세스 요청은 밸런싱된(balanced) 접근 방식으로 동적 랜덤 액세스 메모리(106) 서브채널들을 타겟으로 하도록 한다. 따라서, 메모리 액세스 요청(608)은 커맨드 큐(104)에 이미 추가된 메모리 액세스 요청(예를 들어, 상이한 순위, 뱅크 또는 서브채널을 타겟으로 하는 큐잉된(queued) 메모리 액세스 커맨드)의 타겟이 되는 랭크, 뱅크 또는 서브채널에 기초하여 선택된다. 메모리 액세스 요청(608)은 또한 나중에 커맨드 큐(104)에 추가되는 스테이징 버퍼(112)의 메모리 액세스 요청(예를 들어, 상이한 순위, 뱅크 또는 서브채널을 타겟으로 하는 스테이징된 메모리 액세스 커맨드)이 타겟으로 하는 랭크, 뱅크 또는 서브채널에 기초하여 선택된다.
추가 설명을 위해, 도 9는 스테이징 버퍼(112)에 복수의 메모리 액세스 요청들을 저장하는 단계(602)(예를 들어, 프로세서(100)의 메모리 관리 유닛(102)에 의해); 하나 이상의 아비트레이션 규칙들에 기초하여 스테이징 버퍼(112)로부터의 복수의 메모리 액세스 요청들 중 메모리 액세스 요청(608)을 선택하는 단계(606); 및 메모리 액세스 요청(608)을 스테이징 버퍼(112)에서 커맨드 큐(104)로 이동시키는 단계(610)를 포함하는 본 개시의 실시예에 따른 버퍼 아비트레이션을 스테이징하기 위한 예시적인 방법을 예시하는 흐름도를 설명한다.
도 9의 방법은 하나 이상의 아비트레이션 규칙들에 기초하여 스테이징 버퍼(112)로부터의 복수의 메모리 액세스 요청들 중 메모리 액세스 요청(608)을 선택하는 단계(606)가 다른 메모리 액세스 요청에 의해 타겟이 되는 동적 랜덤 액세스 메모리(106) 페이지에 기초하여 메모리 액세스 요청(608)을 선택하는 단계(902)를 포함한다는 점에서 도 6과 상이하다. 실행된 메모리 액세스 요청이 현재 열려 있지 않은 페이지를 타겟으로 하는 경우, 현재 열려 있는 페이지를 닫고 타겟 페이지를 열 때 오버헤드가 발생한다. 동일한 (예를 들어, 열린) 페이지를 타겟으로 하는 메모리 액세스 요청들을 실행하면 이러한 오버헤드가 줄어든다. 따라서, 일부 실시예에서, 메모리 액세스 요청(608)은 이미 실행된 메모리 액세스 요청에 의해 타겟이 된 페이지(예를 들어, 이미 열려 있는 페이지)에 기초하여 선택된다. 일부 실시예에서, 메모리 액세스 요청(608)은 선택된 메모리 액세스 요청(608)이 실행될 때 타겟 페이지가 열리도록 선택된 메모리 액세스 요청(308) 이전에 실행될 커맨드 큐(104)에 저장된 메모리 액세스 요청의 타겟이 되는 페이지에 기초하여 선택된다. 일부 실시예에서, 메모리 액세스 요청(608)은 다른 메모리 액세스 요청이 실행될 때 타겟 페이지가 열리도록 커맨드 큐(104)로의 이동을 위해 후속적으로 선택될 스테이징 버퍼(112)에 저장된 다른 메모리 액세스 요청에 의해 타겟이 되는 페이지에 기초하여 선택된다.
추가 설명을 위해, 도 10은 스테이징 버퍼(112)에 복수의 메모리 액세스 요청들을 저장하는 단계(602)(예를 들어, 프로세서(100)의 메모리 관리 유닛(102)에 의해); 하나 이상의 아비트레이션 규칙들에 기초하여 스테이징 버퍼(112)로부터의 복수의 메모리 액세스 요청들 중 메모리 액세스 요청(608)을 선택하는 단계(606); 및 메모리 액세스 요청(608)을 스테이징 버퍼(112)에서 커맨드 큐(104)로 이동시키는 단계(610)를 포함하는 본 개시의 실시예에 따른 버퍼 아비트레이션을 스테이징하기 위한 예시적인 방법을 예시하는 흐름도를 설명한다.
도 10의 방법은 하나 이상의 아비트레이션 규칙들에 기초하여, 스테이징 버퍼(112)로부터의 복수의 메모리 액세스 요청들 중 메모리 액세스 요청(608)을 선택하는 단계(606)가 우선순위 값에 기초하여 메모리 액세스 요청(1002)을 선택하는 단계(1002)를 포함한다는 점에서 도 6과 상이하다. 일부 실시예에서, 우선순위 값은 메모리 액세스 요청들(608)에 할당된 명시적 우선순위 값이다(예를 들어, 우선순위 티어). 다른 실시예에서, 우선순위 값은 메모리 액세스 요청의 연령(예를 들어, 주어진 메모리 액세스 요청이 생성되거나 메모리 관리 유닛(102)에 의해 수신된 시간)과 같은 메모리 액세스 요청의 속성에 기초하여 계산된다.
추가 설명을 위해, 도 11은 스테이징 버퍼(112)에 복수의 메모리 액세스 요청들을 저장하는 단계(602)(예를 들어, 프로세서(100)의 메모리 관리 유닛(102)에 의해); 하나 이상의 아비트레이션 규칙들에 기초하여 스테이징 버퍼(112)로부터의 복수의 메모리 액세스 요청들 중 메모리 액세스 요청(608)을 선택하는 단계(606); 및 메모리 액세스 요청(608)을 스테이징 버퍼(112)에서 커맨드 큐(104)로 이동시키는 단계(610)를 포함하는 본 개시의 실시예에 따른 버퍼 아비트레이션을 스테이징하기 위한 예시적인 방법을 예시하는 흐름도를 설명한다.
도 11의 방법은 하나 이상의 아비트레이션 규칙들에 기초하여, 스테이징 버퍼(112)로부터의 복수의 메모리 액세스 요청들 중 메모리 액세스 요청(608)을 선택하는 단계(606)가 스테이징 버퍼(112)에서 제1 페이지 미스(page miss)와 연관된 다른 메모리 액세스 요청을 식별하는 단계(1102)를 포함한다는 점에서 도 6과 상이하다. 즉, 다른 메모리 액세스 요청을 실행하면 페이지 미스 및 해당 계산 오버헤드가 발생한다. 예를 들어, 페이지 테이블(110)은 다른 메모리 액세스 요청의 실행이 페이지 미스를 초래할 것인지를 결정하기 위해 액세스된다.
도 11의 방법은 하나 이상의 아비트레이션 규칙들에 기초하여 스테이징 버퍼(112)로부터의 복수의 메모리 액세스 요청들 중 메모리 액세스 요청(608)을 선택하는 단계(606)가 또한 커맨드 큐(104)에서, 제1 페이지 미스와 상이한 제2 페이지 미스와 연관된 큐잉된 메모리 액세스 요청을 식별하는 단계(1104)를 포함한다는 점에서 도 6과 또한 상이하다. 예를 들어, 큐잉된 메모리 액세스 요청은 스테이징 버퍼의 다른 메모리 액세스 요청과 동일한 요청 유형을 갖고 동일한 동적 랜덤 액세스 메모리 뱅크를 타겟으로 하는 것으로 식별되지만 상이한 로우 페이지 미스(row page miss)를 초래할 것이다.
도 11의 방법은 하나 이상의 아비트레이션 규칙들에 기초하여 스테이징 버퍼(112)로부터의 복수의 메모리 액세스 요청들 중 메모리 액세스 요청(608)을 선택하는 단계(606)가 또한 다른 메모리 액세스 요청 및 큐잉된 메모리 액세스 요청을 식별하는 것에 응답하여, 메모리 액세스 요청(608)을 선택하는 단계(1106)를 포함한다는 점에서 도 6과 또한 상이하다. 다시 말해서, 메모리 액세스 요청(608)은 제1 페이지 미스와 연관된 스테이징 버퍼(112)의 다른 메모리 액세스 요청보다 우선적으로 선택된다.
추가 설명을 위해, 도 12는 스테이징 버퍼(112)에 복수의 메모리 액세스 요청들을 저장하는 단계(602)(예를 들어, 프로세서(100)의 메모리 관리 유닛(102)에 의해); 하나 이상의 아비트레이션 규칙들에 기초하여 스테이징 버퍼(112)로부터의 복수의 메모리 액세스 요청들 중 메모리 액세스 요청(608)을 선택하는 단계(606); 및 메모리 액세스 요청(608)을 스테이징 버퍼(112)에서 커맨드 큐(104)로 이동시키는 단계(610)를 포함하는 본 개시의 실시예에 따른 버퍼 아비트레이션을 스테이징하기 위한 예시적인 방법을 예시하는 흐름도를 설명한다.
도 12의 방법은 하나 이상의 아비트레이션 규칙들에 기초하여, 스테이징 버퍼(112)로부터의 복수의 메모리 액세스 요청들 중 메모리 액세스 요청(608)을 선택하는 단계(606)가 제1 페이지 충돌(page conflict)과 연관된 다른 메모리 액세스 요청을 스테이징 버퍼(112)에서 식별하는 단계(1202)를 포함한다는 점에서 도 6과 상이하다. 다시 말해, 다른 메모리 액세스 요청을 실행하면 페이지 충돌과 대응하는 계산 오버헤드가 발생한다. 예를 들어, 페이지 테이블(110)은 다른 메모리 액세스 요청의 실행이 페이지 충돌을 야기할 것인지를 결정하기 위해 액세스된다.
도 12의 방법은 하나 이상의 아비트레이션 규칙들에 기초하여 스테이징 버퍼(112)로부터의 복수의 메모리 액세스 요청들 중 메모리 액세스 요청(608)을 선택하는 단계(606)가 또한 커맨드 큐(104)에서, 제1 페이지 충돌과 상이한 제2 페이지 충돌과 연관된 큐잉된 메모리 액세스 요청을 식별하는 단계(1204)를 포함한다는 점에서 도 6과 또한 상이하다. 예를 들어, 큐잉된 메모리 액세스 요청은 동일한 요청 유형을 갖고 스테이징 버퍼(112)의 다른 메모리 액세스 요청과 동일한 동적 랜덤 액세스 메모리 뱅크를 타겟으로 하는 것으로 식별되지만 다른 로우 페이지 충돌을 초래할 것이다.
도 12의 방법은 하나 이상의 아비트레이션 규칙들에 기초하여 스테이징 버퍼(112)로부터의 복수의 메모리 액세스 요청들 중 메모리 액세스 요청(608)을 선택하는 단계(606)가 또한 다른 메모리 액세스 요청 및 큐잉된 메모리 액세스 요청을 식별하는 것에 응답하여 메모리 액세스 요청(608)을 선택하는 단계(1206)를 포함한다는 점에서 도 6과 또한 상이하다. 다시 말해서, 메모리 액세스 요청(608)은 제1 페이지 충돌과 연관된 스테이징 버퍼(112)에서 다른 메모리 액세스 요청보다 우선적으로 선택된다.
추가 설명을 위해, 도 13은 스테이징 버퍼(112)에 복수의 메모리 액세스 요청들을 저장하는 단계(602)(예를 들어, 프로세서(100)의 메모리 관리 유닛(102)에 의해); 하나 이상의 아비트레이션 규칙들에 기초하여 스테이징 버퍼(112)로부터의 복수의 메모리 액세스 요청들 중 메모리 액세스 요청(608)을 선택하는 단계(606); 및 메모리 액세스 요청(608)을 스테이징 버퍼(112)에서 커맨드 큐(104)로 이동시키는 단계(610)를 포함하는 본 개시의 실시예에 따른 메모리 액세스 요청을 스테이징하기 위한 예시적인 방법을 나타내는 흐름도를 설명한다.
도 13의 방법은 하나 이상의 아비트레이션 규칙들에 기초하여, 스테이징 버퍼(112)로부터의 복수의 메모리 액세스 요청들 중 메모리 액세스 요청(608)을 선택하는 단계(606)가 커맨드 큐(104)에서 페이지 히트 요청을 식별하는 단계(1302)를 포함한다는 점에서 도 6과 상이하다. 페이지 히트 요청은 동적 랜덤 액세스 메모리(106)의 현재 열려 있는 페이지를 타겟으로 하는 메모리 액세스 요청을 포함한다. 도 13의 방법은 하나 이상의 아비트레이션 규칙들에 기초하여, 스테이징 버퍼(112)로부터의 복수의 메모리 액세스 요청들 중 메모리 액세스 요청(608)을 선택하는 단계(606)가 메모리 액세스 요청(608)이 다른 페이지 히트 요청인 것에 기초하여 메모리 액세스 요청(608)을 선택하는 단계(1304)를 포함한다는 점에서 도 6과 또한 상이하다. 다시 말해서, 메모리 액세스 요청(608)은 페이지 미스를 초래할 다른 메모리 액세스 요청보다 커맨드 큐(104)로의 이동을 위해 우선적으로 선택된다. 따라서, 스테이징 버퍼(112)는 페이지 히트 요청을 홀딩(holding)할 것이다. 일부 구현예들에서, 메모리 액세스 요청(608)은 커맨드 큐(104)는 우선적으로 각 뱅크에 대한 하나 이상의 메모리 액세스 요청을 홀딩하지 않도록 커맨드 큐(104)로의 이동을 위해 선택된다.
위에 설명된 설명의 관점에서, 독자는 본 개시의 실시예에 따른 메모리 액세스 요청들을 스테이징하는 것의 이점이 다음을 포함한다는 것을 인식할 것이다:
Figure pct00001
추가 스테이징 버퍼의 사용을 통해 커맨드 큐 압력을 완화함으로써 컴퓨팅 시스템의 향상된 성능.
Figure pct00002
계산 오버헤드를 줄이기 위해 커맨드 큐에 추가할 메모리 액세스 요청을 최적으로 선택함으로써 컴퓨팅 시스템의 향상된 성능.
본 개시의 예시적인 실시예는 메모리 액세스 요청들을 스테이징하기 위한 완전한 기능의 컴퓨터 시스템과 관련하여 크게 설명된다. 그러나, 당업자는 본 개시가 임의의 적합한 데이터 처리 시스템과 함께 사용하기 위해 컴퓨터 판독가능 저장 매체 상에 배치된 컴퓨터 프로그램 제품으로 구현될 수도 있음을 인식할 것이다. 그러한 컴퓨터 판독가능 저장 매체는 자기 매체, 광학 매체, 또는 다른 적절한 매체를 포함하는 머신 판독가능 정보를 위한 임의의 저장 매체일 수 있다. 그러한 매체의 예는 하드 드라이브 또는 디스켓의 자기 디스크, 광학 드라이브용 콤팩트 디스크, 자기 테이프, 및 당업자가 알 수 있는 기타 매체를 포함한다. 당업자는 적절한 프로그래밍 수단을 갖는 임의의 컴퓨터 시스템이 컴퓨터 프로그램 제품에 구현된 바와 같이 본 개시의 방법의 단계를 실행할 수 있다는 것을 즉시 인식할 것이다. 당업자는 또한 본 명세서에 기술된 예시적인 실시예 중 일부가 컴퓨터 하드웨어에 설치되고 실행되는 소프트웨어를 지향하지만, 그럼에도 불구하고, 펌웨어 또는 하드웨어로서 구현되는 대안적인 실시예가 본 개시의 범위 내에 있음을 인식할 것이다.
본 개시는 시스템, 방법, 및/또는 컴퓨터 프로그램 제품일 수 있다. 컴퓨터 프로그램 제품은 프로세서로 하여금 본 개시의 양태들을 수행하게 하기 위한 컴퓨터 판독가능 프로그램 명령어를 갖는 컴퓨터 판독가능 저장 매체(또는 미디어)를 포함할 수 있다.
컴퓨터 판독 가능 저장 매체는 명령어 실행 디바이스에 의해 사용하기 위한 명령어를 보유하고 저장할 수 있는 유형의 디바이스일 수 있다. 컴퓨터 판독 가능 저장 매체는 예를 들어 전자 저장 디바이스, 자기 저장 디바이스, 광 저장 디바이스, 전자기 저장 디바이스, 반도체 저장 디바이스, 또는 이들의 임의의 적절한 조합일 수 있지만 이에 제한되지는 않는다. 컴퓨터 판독 가능 저장 매체의 보다 구체적인 예의 비포괄적인 목록은 다음을 포함한다: 휴대용 컴퓨터 디스켓, 하드 디스크, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 소거 가능한 프로그래밍 가능한 판독 전용 메모리(EPROM 또는 플래시 메모리), 정적 랜덤 액세스 메모리(SRAM), 휴대용 콤팩트 디스크 판독 전용 메모리(CD-ROM), 디지털 다목적 디스크(DVD), 메모리 스틱, 플로피 디스크, 명령어가 기록된 그루브의 펀치 카드 또는 돌출된 구조와 같은 기계적으로 인코딩된 디바이스 및 전술한 것의 임의의 적절한 조합. 본 명세서에서 사용되는 컴퓨터 판독 가능 저장 매체는 전파 또는 기타 자유롭게 전파되는 전자파, 도파관 또는 기타 송신 매체를 통해 전파되는 전자기파(예를 들어, 광섬유 케이블을 통과하는 광 펄스), 또는 전선을 통해 전송되는 전기 신호와 같은 일시적인 신호 그 자체로 해석되어서는 안 된다.
본 명세서에 설명된 컴퓨터 판독 가능 프로그램 명령어는 컴퓨터 판독 가능 저장 매체로부터 각각의 컴퓨팅/처리 디바이스로 또는 네트워크, 예를 들어 인터넷, 근거리 통신망, 광역 통신망 및/또는 무선 네트워크를 통해 외부 컴퓨터 또는 외부 저장 디바이스로 다운로드될 수 있다. 네트워크는 구리 송신 케이블, 광 송신 광섬유, 무선 송신, 라우터, 방화벽, 스위치, 게이트웨이 컴퓨터 및/또는 에지 서버를 포함할 수 있다. 각 컴퓨팅/처리 디바이스의 네트워크 어댑터 카드 또는 네트워크 인터페이스는 네트워크로부터 컴퓨터 판독 가능한 프로그램 명령어를 수신하고 각각의 컴퓨팅/처리 디바이스 내의 컴퓨터 판독 가능한 저장 매체에 저장하기 위한 컴퓨터 판독 가능한 프로그램 명령어를 포워딩한다.
본 발명의 동작을 수행하기 위한 컴퓨터 판독 가능 프로그램 명령어는 어셈블러 명령어, 명령어 세트 아키텍처(ISA) 명령어, 머신 명령어, 머신 종속 커맨드, 마이크로코드, 펌웨어 명령어, 상태 설정 데이터 또는 Smalltalk, C++ 등과 같은 객체 지향 프로그래밍 언어 및 "C" 프로그래밍 언어 또는 유사한 프로그래밍 언어와 같은 기존의 절차적 프로그래밍 언어를 포함하는 하나 이상의 프로그래밍 언어의 조합으로 작성된 소스 코드 또는 오브젝트 코드일 수 있다. 컴퓨터가 판독 가능 프로그램 명령어는 전적으로 사용자의 컴퓨터에서, 독립 실행형 소프트웨어 패키지로서 부분적으로 사용자의 컴퓨터에서, 부분적으로 사용자의 컴퓨터에 및 부분적으로 원격 컴퓨터에 또는 전적으로 원격 컴퓨터 또는 서버에서 실행할 수 있다. 후자의 시나리오에서 원격 컴퓨터는 근거리 통신망(LAN) 또는 광역 통신망(WAN)을 포함한 임의의 유형의 네트워크를 통해 사용자의 컴퓨터에 연결될 수 있고 또는 외부 컴퓨터에 대해 연결이 이루어질 수 있다(예를 들어, 인터넷 서비스 공급자를 사용하여 인터넷을 통해). 일부 실시예에서, 예를 들어 프로그램 가능 논리 회로, 필드 프로그래밍 가능 게이트 어레이(FPGA) 또는 프로그래밍 가능 논리 어레이(PLA)를 포함하는 전자 회로는 본 개시의 양태를 수행하기 위해, 전자 회로부를 개인화하기 위해 컴퓨터 판독가능 프로그램 명령어의 상태 정보를 이용함으로써 컴퓨터 판독가능 프로그램 명령어를 실행할 수 있다.
본 개시의 양태는 본 개시의 실시예에 따른 방법, 장치(시스템), 및 컴퓨터 프로그램 제품의 흐름도 예시 및/또는 블록도를 참조하여 본 명세서에서 설명된다. 흐름도 예시 및/또는 블록도의 각 블록, 및 흐름도 예시 및/또는 블록도의 블록들의 조합은 컴퓨터 판독 가능 프로그램 명령어에 의해 구현될 수 있음이 이해될 것이다.
이러한 컴퓨터 판독 가능 프로그램 명령어는 머신을 생산하기 위해 범용 컴퓨터, 특수 목적 컴퓨터 또는 기타 프로그램 가능한 데이터 처리 장치의 프로세서에 제공되어 컴퓨터 또는 다른 프로그램 가능한 데이터 처리 장치의 프로세서를 통해 실행되는 명령어가 흐름도 및/또는 블록도 블록 또는 블록들에 지정된 기능/동작을 구현하기 위한 수단을 생성할 수 있게 한다. 이러한 컴퓨터 판독 가능 프로그램 명령어는 또한 컴퓨터, 프로그램 가능 데이터 처리 장치 및/또는 기타 장치가 특정 방식으로 기능하도록 지시할 수 있는 컴퓨터 판독 가능 저장 매체에 저장되어 명령어가 저장된 컴퓨터 판독 가능 저장 매체가 흐름도 및/또는 블록도 블록 또는 블록들에 지정된 기능/동작의 양태를 구현하는 명령어를 갖는 제조 물품을 포함하게 한다.
컴퓨터 판독 가능한 프로그램 명령어는 또한 컴퓨터, 다른 프로그램 가능한 데이터 처리 장치, 또는 다른 장치에 로딩되어 일련의 작동 단계가 컴퓨터, 다른 프로그램 가능한 장치 또는 다른 장치에서 수행되어 컴퓨터 구현 프로세스를 생성하고, 컴퓨터, 기타 프로그래밍 가능한 장치 또는 기타 장치에서 실행되는 명령어는 흐름도 및/또는 블록도 블록 또는 블록들에 지정된 기능/동작을 구현하게 한다.
도면의 흐름도 및 블록도는 본 개시의 다양한 실시예에 따른 시스템, 방법, 및 컴퓨터 프로그램 제품의 가능한 구현예의 아키텍처, 기능 및 동작을 예시한다. 이와 관련하여, 흐름도 또는 블록 다이어그램의 각 블록은 특정 논리 기능(들)을 구현하기 위한 하나 이상의 실행 가능한 명령어를 포함하는 모듈, 세그먼트 또는 커맨드의 일부를 나타낼 수 있다. 일부 대안적인 구현예에서, 블록에 언급된 기능은 도면에 언급된 순서와 다르게 발생할 수 있다. 예를 들어, 연속적으로 표시된 두 블록들은 실제로 실질적으로 동시에 실행될 수 있거나 관련된 기능에 따라 블록이 때때로 역순으로 실행될 수 있다. 블록 다이어그램 및/또는 순서도 예시 각 블록, 블록 다이어그램 및/또는 순서도 예시의 블록들의 조합은 특정 기능을 수행하거나 특수 목적 하드웨어와 컴퓨터 명령어의 조합을 수행하거나 작동하는 특수 목적 하드웨어 기반 시스템에 의해 구현될 수 있다는 것에 또한 유의한다.
본 개시의 다양한 실시예에서 수정 및 변경이 이루어질 수 있음은 전술한 설명으로부터 이해될 것이다. 본 명세서의 설명은 단지 예시를 위한 것이며 제한적인 의미로 해석되어서는 안 된다. 본 개시의 범위는 다음 청구범위의 언어에 의해서만 제한된다.

Claims (21)

  1. 메모리 액세스 요청(memory access request)들을 스테이징(staging)하는 방법으로서,
    동적 랜덤 액세스 메모리(Dynamic Random Access Memory)로 향하는 메모리 액세스 요청을 수신하는 단계;
    스테이징 버퍼(staging buffer)에 상기 메모리 액세스 요청을 저장하는 단계; 및
    상기 메모리 액세스 요청을 상기 스테이징 버퍼에서 커맨드 큐(command queue)로 이동시키는 단계를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 커맨드 큐로부터 상기 메모리 액세스 요청을 선택하는 단계; 및
    상기 메모리 액세스 요청을 실행하는 단계를 더 포함하는, 방법.
  3. 제1항에 있어서,
    다른 메모리 액세스 요청을 수신하는 단계;
    상기 스테이징 버퍼가 가득 찼다고 결정하는 단계; 및
    상기 스테이징 버퍼에 상기 다른 메모리 액세스 요청을 저장하지 않고 상기 커맨드 큐에 상기 다른 메모리 액세스 요청을 저장하는 단계를 더 포함하는, 방법.
  4. 제1항에 있어서, 하나 이상의 아비트레이션 규칙(arbitration rule)들에 기초하여 상기 커맨드 큐로의 이동을 위해 상기 스테이징 버퍼의 복수의 메모리 액세스 요청들 중 상기 메모리 액세스 요청을 선택하는 단계를 더 포함하는, 방법.
  5. 제5항에 있어서, 하나 이상의 아비트레이션 규칙들에 기초하여 상기 메모리 액세스 요청을 선택하는 단계는 열린(open) 동적 랜덤 액세스 메모리 페이지에 기초하여 상기 메모리 액세스 요청을 선택하는 단계를 포함하는, 방법.
  6. 제5항에 있어서, 하나 이상의 아비트레이션 규칙들에 기초하여 상기 메모리 액세스 요청을 선택하는 단계는 뱅크 그룹 회전(bank group rotation)에 기초하여 상기 메모리 액세스 요청을 선택하는 단계를 포함하는, 방법.
  7. 제5항에 있어서, 하나 이상의 아비트레이션 규칙들에 기초하여 상기 메모리 액세스 요청을 선택하는 단계는 서브채널 밸런싱(sub-channel balancing)에 기초하여 상기 메모리 액세스 요청을 선택하는 단계를 포함하는, 방법.
  8. 제5항에 있어서, 하나 이상의 아비트레이션 규칙들에 기초하여 상기 메모리 액세스 요청을 선택하는 단계는 상기 메모리 액세스 요청의 요청 유형에 기초하여 상기 메모리 액세스 요청을 선택하는 단계를 포함하는, 방법.
  9. 메모리 관리 유닛(memory management unit)으로서,
    동적 랜덤 액세스 메모리로 향하는 메모리 액세스 요청을 수신하는 단계;
    스테이징 버퍼에 상기 메모리 액세스 요청을 저장하는 단계; 및
    상기 메모리 액세스 요청을 상기 스테이징 버퍼로부터 커맨드 큐로 이동시키는 단계를 포함하는 단계들을 수행하도록 구성된, 메모리 관리 유닛.
  10. 제9항에 있어서, 상기 단계들은:
    상기 커맨드 큐로부터 상기 메모리 액세스 요청을 선택하는 단계; 및
    상기 메모리 액세스 요청을 실행하는 단계를 더 포함하는, 메모리 관리 유닛.
  11. 제9항에 있어서, 상기 메모리 관리 유닛은:
    다른 메모리 액세스 요청을 수신하는 단계;
    상기 스테이징 버퍼가 가득 찼다고 결정하는 단계; 및
    상기 스테이징 버퍼에 상기 다른 메모리 액세스 요청을 저장하지 않고 상기 커맨드 큐에 상기 다른 메모리 액세스 요청을 저장하는 단계를 포함하는 단계들을 수행하도록 더 구성되는, 메모리 관리 유닛.
  12. 제9항에 있어서, 상기 메모리 관리 유닛은 하나 이상의 아비트레이션 규칙들에 기초하여 상기 커맨드 큐로의 이동을 위해 상기 스테이징 버퍼의 복수의 메모리 액세스 요청들 중 상기 메모리 액세스 요청을 선택하는 단계를 포함하는 단계들을 수행하도록 더 구성되는, 메모리 관리 유닛.
  13. 제12항에 있어서, 상기 메모리 관리 유닛은 열린 동적 랜덤 액세스 메모리 페이지에 기초하여 상기 메모리 액세스 요청을 선택함으로써 하나 이상의 아비트레이션 규칙들에 기초하여 상기 메모리 액세스 요청을 선택하도록 더 구성되는, 메모리 관리 유닛.
  14. 제12항에 있어서, 상기 메모리 관리 유닛은 뱅크 그룹 회전에 기초하여 상기 메모리 액세스 요청을 선택함으로써 하나 이상의 아비트레이션 규칙들에 기초하여 상기 메모리 액세스 요청을 선택하도록 더 구성되는, 메모리 관리 유닛.
  15. 제12항에 있어서, 상기 메모리 관리 유닛은 상기 메모리 액세스 요청의 요청 유형에 기초하여 상기 메모리 액세스 요청을 선택함으로써 하나 이상의 아비트레이션 규칙들에 기초하여 상기 메모리 액세스 요청을 선택하도록 더 구성되는, 메모리 관리 유닛.
  16. 제12항에 있어서, 상기 메모리 관리 유닛은 서브채널 밸런싱에 기초하여 상기 메모리 액세스 요청을 선택함으로써 하나 이상의 아비트레이션 규칙에 기초하여 상기 메모리 액세스 요청을 선택하도록 더 구성되는, 메모리 관리 유닛.
  17. 시스템에 있어서,
    프로세서(processor) 및 동적 랜덤 액세스 메모리를 포함하고, 상기 프로세서는 메모리 관리 유닛을 통해 상기 동적 랜덤 액세스 메모리에 결합되고, 상기 메모리 관리 유닛은:
    상기 동적 랜덤 액세스 메모리로 향하는 메모리 액세스 요청을 수신하고;
    스테이징 버퍼에 메모리 액세스 요청을 저장하고; 및
    상기 메모리 액세스 요청을 스테이징 버퍼에서 커맨드 큐로 이동시키도록 구성되는, 시스템.
  18. 제17항에 있어서, 상기 메모리 관리 유닛은:
    상기 커맨드 큐로부터 상기 메모리 액세스 요청을 선택하고; 및
    상기 메모리 액세스 요청을 실행하도록 더 구성되는, 시스템.
  19. 제17항에 있어서, 상기 메모리 관리 유닛은:
    다른 메모리 액세스 요청을 수신하고;
    스테이징 버퍼가 가득 찼다고 결정하고; 및
    상기 스테이징 버퍼에 상기 다른 메모리 액세스 요청을 저장하지 않고 상기 커맨드 큐에 상기 다른 메모리 액세스 요청을 저장하도록 더 구성되는, 시스템.
  20. 제17항에 있어서, 상기 메모리 관리 유닛은 상기 커맨드 큐로의 이동을 위해 하나 이상의 아비트레이션 규칙들에 기초하여 상기 스테이징 버퍼의 복수의 메모리 액세스 요청들 중 상기 메모리 액세스 요청을 선택하도록 더 구성되는, 시스템.
  21. 제20항에 있어서, 상기 메모리 관리 유닛은 열린 동적 랜덤 액세스 메모리 페이지, 뱅크 그룹 회전, 상기 메모리 액세스 요청의 요청 유형, 또는 서브채널 밸런싱 중 하나 이상에 기초하여 상기 메모리 액세스 요청을 선택함으로써 하나 이상의 아비트레이션 규칙들에 기초하여 상기 메모리 액세스 요청을 선택하도록 더 구성되는, 시스템.
KR1020227022687A 2019-12-27 2020-12-22 메모리 액세스 요청 스테이징 KR20220113736A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/728,114 2019-12-27
US16/728,114 US20210200695A1 (en) 2019-12-27 2019-12-27 Staging memory access requests
PCT/US2020/066618 WO2021133806A1 (en) 2019-12-27 2020-12-22 Staging memory access requests

Publications (1)

Publication Number Publication Date
KR20220113736A true KR20220113736A (ko) 2022-08-16

Family

ID=74181383

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227022687A KR20220113736A (ko) 2019-12-27 2020-12-22 메모리 액세스 요청 스테이징

Country Status (6)

Country Link
US (1) US20210200695A1 (ko)
EP (1) EP4081905A1 (ko)
JP (1) JP2023508460A (ko)
KR (1) KR20220113736A (ko)
CN (1) CN114846454A (ko)
WO (1) WO2021133806A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11422938B2 (en) * 2018-10-15 2022-08-23 Texas Instruments Incorporated Multicore, multibank, fully concurrent coherence controller

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7269709B2 (en) * 2002-05-15 2007-09-11 Broadcom Corporation Memory controller configurable to allow bandwidth/latency tradeoff
US7418540B2 (en) * 2004-04-28 2008-08-26 Intel Corporation Memory controller with command queue look-ahead
JP4843216B2 (ja) * 2004-12-10 2011-12-21 株式会社リコー メモリ制御装置
CN104781845B (zh) * 2012-12-19 2018-11-09 英特尔公司 处理视频内容
KR102034626B1 (ko) * 2013-06-26 2019-10-21 삼성전자 주식회사 메모리 동작을 제어하는 방법 및 장치
CN107577614B (zh) * 2013-06-29 2020-10-16 华为技术有限公司 数据写入方法及内存系统
US9575890B2 (en) * 2014-02-27 2017-02-21 International Business Machines Corporation Supporting atomic accumulation with an addressable accumulator
US10318420B2 (en) * 2014-10-31 2019-06-11 Hewlett Packard Enterprise Development Lp Draining a write queue based on information from a read queue
WO2016117190A1 (ja) * 2015-01-22 2016-07-28 ソニー株式会社 メモリコントローラ、記憶装置、情報処理システムおよびメモリの制御方法
US9639280B2 (en) * 2015-06-18 2017-05-02 Advanced Micro Devices, Inc. Ordering memory commands in a computer system
US10642500B2 (en) * 2015-09-28 2020-05-05 Sandisk Technologies Llc Methods, systems and computer readable media for intelligent fetching of data storage device commands from submission queues
KR101888405B1 (ko) * 2016-06-01 2018-08-14 주식회사 맴레이 메모리 컨트롤러, 그리고 이를 포함하는 메모리 모듈 및 프로세서
US10402120B2 (en) * 2016-07-15 2019-09-03 Advanced Micro Devices, Inc. Memory controller arbiter with streak and read/write transaction management
US10684969B2 (en) * 2016-07-15 2020-06-16 Advanced Micro Devices, Inc. Command arbitration for high speed memory interfaces
EP3270294B1 (en) * 2016-07-15 2018-09-26 Advanced Micro Devices, Inc. Command arbitration for high-speed memory interfaces
WO2018175559A1 (en) * 2017-03-22 2018-09-27 Burlywood, LLC Drive-level internal quality of service
US10310996B2 (en) * 2017-05-31 2019-06-04 International Business Machines Corporation Hardware queue manager with water marking
US10275352B1 (en) * 2017-12-28 2019-04-30 Advanced Micro Devices, Inc. Supporting responses for memory types with non-uniform latencies on same channel
US10901887B2 (en) * 2018-05-17 2021-01-26 International Business Machines Corporation Buffered freepointer management memory system
US10990321B2 (en) * 2019-02-20 2021-04-27 Micron Technology, Inc. Memory sub-system for supporting deterministic and non-deterministic commands based on command expiration and the state of the intermediate command queue

Also Published As

Publication number Publication date
CN114846454A (zh) 2022-08-02
US20210200695A1 (en) 2021-07-01
WO2021133806A1 (en) 2021-07-01
JP2023508460A (ja) 2023-03-02
EP4081905A1 (en) 2022-11-02

Similar Documents

Publication Publication Date Title
US11209982B2 (en) Controlling operation of a data storage system
US10157082B2 (en) Preferential CPU utilization for tasks
US10203878B2 (en) Near memory accelerator
US9569364B1 (en) Multiple history based micro partition prefetch optimization
US10936369B2 (en) Maintenance of local and global lists of task control blocks in a processor-specific manner for allocation to tasks
US9886394B2 (en) Migrating buffer for direct memory access in a computer system
US10956042B2 (en) Tiering data compression within a storage system
KR20220113736A (ko) 메모리 액세스 요청 스테이징
KR20150103886A (ko) 파이프라인 실행 가속을 위한 데이터 처리 장치 및 그 방법
KR20220113735A (ko) 스테이징 버퍼 중재
US20180107617A1 (en) Multiprocessor cache buffer management
JP2022551776A (ja) ページレベル追跡ロードオーダキューを用いた投機的実行
US11281502B2 (en) Dispatching tasks on processors based on memory access efficiency
KR20220139420A (ko) 완전한 스트라이드 디스테이지를 위한 선제적 스테이징
US11669271B2 (en) Memory operations using compound memory commands
US10380040B2 (en) Memory request scheduling to improve bank group utilization
US11055218B2 (en) Apparatus and methods for accelerating tasks during storage caching/tiering in a computing environment
US10671533B2 (en) Fast cache demotions in storage controllers with metadata
KR101523469B1 (ko) 식별 번호를 기록하여 블록 간의 시간적 선후 관계를 추출하는 캐시 방법 및 시스템
US20170199700A1 (en) Dynamicly freeing storage space in tiered storage systems