KR102319248B1 - 비동기 순방향 캐싱 메모리 시스템 및 방법 - Google Patents

비동기 순방향 캐싱 메모리 시스템 및 방법 Download PDF

Info

Publication number
KR102319248B1
KR102319248B1 KR1020217005622A KR20217005622A KR102319248B1 KR 102319248 B1 KR102319248 B1 KR 102319248B1 KR 1020217005622 A KR1020217005622 A KR 1020217005622A KR 20217005622 A KR20217005622 A KR 20217005622A KR 102319248 B1 KR102319248 B1 KR 102319248B1
Authority
KR
South Korea
Prior art keywords
data
memory
subsystem
index
records
Prior art date
Application number
KR1020217005622A
Other languages
English (en)
Other versions
KR20210030984A (ko
Inventor
해롤드 로버트 조지 트라우트
Original Assignee
마이크론 테크놀로지, 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크론 테크놀로지, 인크. filed Critical 마이크론 테크놀로지, 인크.
Publication of KR20210030984A publication Critical patent/KR20210030984A/ko
Application granted granted Critical
Publication of KR102319248B1 publication Critical patent/KR102319248B1/ko

Links

Images

Classifications

    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • 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/1684Details of memory controller using multiple buses
    • 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/1689Synchronisation and timing concerns
    • 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
    • G06F2212/1024Latency reduction
    • 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/1028Power efficiency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6026Prefetching based on access pattern detection, e.g. stride based prefetch

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

메모리 시스템(14) 및 동작과 관련된 시스템, 장치, 및 방법이 설명된다. 메모리 시스템(14)은 하나 이상의 데이터 버스(20)를 통해 프로세서(12)에 통신 가능하게 결합될 수 있다. 추가적으로, 상기 메모리 시스템(14)은 동작을 수행하기 위해 상기 프로세서(12)에 구현된 처리 회로부(16)에 의해 사용될 데이터를 저장하는 하나 이상의 메모리 디바이스(18)를 포함할 수 있다. 더욱이, 상기 메모리 시스템(14)은, 상기 하나 이상의 데이터 버스(20)를 통해 상기 데이터의 반환을 요청하는 메모리 액세스를 수신하고, 이에 응답하여 상기 메모리 액세스 요청에 적어도 부분적으로 기초하여 상기 하나 이상의 메모리 디바이스(18)에서 상기 데이터의 저장 위치를 결정하고, 상기 프로세서(12)에 구현된 상기 처리 회로부(16)가 상기 데이터에 기초하여 상기 동작을 수행할 수 있도록 상기 데이터를 직접 상기 처리 회로부(16)와 통합된 프로세서측 캐시(22)에 저장하도록 상기 메모리 시스템(14)에 명령하는 메모리 제어기(26)를 포함할 수 있다.

Description

비동기 순방향 캐싱 메모리 시스템 및 방법
본 발명은 일반적으로 메모리 디바이스에 관한 것으로, 보다 상세하게는 메모리 서브시스템(memory sub-system)에서 구현되는 어드레스 관리 기술에 관한 것이다.
일반적으로, 컴퓨팅 시스템은 처리 서브시스템, 및 이 처리 서브시스템의 처리 회로부에 액세스 가능한 데이터를 저장할 수 있는 메모리 서브시스템을 포함한다. 예를 들어, 동작을 수행하기 위해, 처리 회로부는 메모리 서브시스템의 메모리 디바이스로부터 검색된 대응하는 명령어를 실행할 수 있다. 일부 경우에, 동작에 입력된 데이터는 또한 메모리 디바이스로부터 검색될 수 있다. 추가적으로 또는 대안적으로, 동작으로부터 출력된 데이터(예를 들어, 결과)는, 예를 들어 후속 검색을 가능하게 하기 위해 메모리 디바이스에 저장될 수 있다. 그러나, 적어도 일부 경우에, 컴퓨팅 시스템의 동작 효율은 예를 들어 컴퓨팅 시스템에서 수행되는 일련의 동작을 제어하는 아키텍처에 의해 제한될 수 있다.
본 발명의 다양한 양태는 도면을 참조하여 이하의 상세한 설명을 읽을 때 더 잘 이해될 수 있을 것이다.
도 1은 본 발명의 일 실시형태에 따른 처리 서브시스템 및 메모리 서브시스템을 포함하는 컴퓨팅 시스템의 블록도;
도 2는 본 발명의 일 실시형태에 따라 도 1의 처리 서브시스템의 일례의 블록도;
도 3은 본 발명의 일 실시형태에 따라 도 2의 처리 서브시스템을 동작시키기 위한 예시적인 프로세스의 흐름도;
도 4는 본 발명의 일 실시형태에 따라 하나 이상의 색인 테이블(index table)을 이용하는 도 1의 메모리 서브시스템의 일례의 블록도;
도 5는 본 발명의 일 실시형태에 따라 도 4의 메모리 서브시스템에서 구현될 수 있는 예시적인 휘발성 메모리 어레이의 블록도;
도 6은 본 발명의 일 실시형태에 따라 도 4의 메모리 서브시스템에 의해 사용될 수 있는 색인 테이블의 개략도;
도 7은 본 발명의 일 실시형태에 따라 도 6의 색인 테이블을 저장하는 색인 테이블 메모리 어레이, 및 이 색인 테이블 메모리 어레이에 결합된 메모리 제어기의 일부의 블록도;
도 8은 본 발명의 일 실시형태에 따라 색인 테이블에 포함될 색인 항목(index entry)을 생성하기 위한 예시적인 프로세스의 흐름도;
도 9는 본 발명의 일 실시형태에 따라 색인 테이블을 생성 및/또는 업데이트하기 위한 예시적인 프로세스의 흐름도;
도 10은 본 발명의 일 실시형태에 따라 도 4의 메모리 서브시스템에 데이터 레코드(data record)를 저장하기 위한 예시적인 프로세스의 흐름도;
도 11은 본 발명의 일 실시형태에 따라 도 4의 메모리 서브시스템을 동작시키기 위한 예시적인 프로세스의 흐름도; 및
도 12는 본 발명의 일 실시형태에 따라 후속적으로 표적화될(targeted) 것으로 예상되는 데이터를 예측적으로 식별하기 위한 예시적인 프로세스의 흐름도.
본 발명은, 예를 들어, 동작 효율을 제한할 수 있는 아키텍처 특징을 완화함으로써 컴퓨팅 시스템의 동작 효율을 향상시키는 기술을 제공한다. 일반적으로, 컴퓨팅 시스템의 처리 서브시스템은 예를 들어 하나 이상의 프로세서 및/또는 하나 이상의 프로세서 코어를 사용하여 구현되는 처리 회로부를 포함한다. 추가적으로, 컴퓨팅 시스템의 메모리 서브시스템은 예를 들어, 이중 인라인 메모리 모듈(dual in-line memory module: DIMM)과 같은 하나 이상의 메모리 모듈에서 구현되는 하나 이상의 메모리 디바이스(예를 들어, 칩 또는 집적 회로)를 포함할 수 있다.
일반적으로, 메모리 디바이스에 구현된 메모리 셀은 예를 들어 메모리 채널에 각각 대응하는 하나 이상의 주 메모리 어레이로 구성될 수 있다. 메모리 어레이를 구현하기 위해, 메모리 셀은 제1 (예를 들어, 수평) 방향으로 형성된 워드 라인과, 제2 (예를 들어, 수직) 방향으로 형성된 비트 라인에 결합될 수 있다. 예를 들어, 메모리 어레이의 행은 하나의 워드 라인에 결합된 메모리 셀을 포함할 수 있다. 추가적으로, 일부 실시형태에서, 메모리 어레이의 열은 다수의 비트 라인에 결합된 메모리 셀을 포함할 수 있다.
다시 말해, 행 어드레스와 열 어드레스 쌍에 연결된 메모리 셀(예를 들어, 저장 위치)은 열 어드레스로 식별되는 열에 포함된 비트 라인의 수에 따라 비트 깊이(예를 들어, 크기)를 갖는 데이터 블록을 저장할 수 있다. 예를 들어, 각 열이 1024 비트 라인을 포함하는 경우, 각 행 어드레스와 열 어드레스 쌍에 구현된 메모리 셀은 64 바이트(예를 들어, 1024 비트) 데이터 블록을 저장할 수 있다. 추가적으로, 메모리 어레이가 16개의 열을 포함하는 경우, 메모리 어레이의 각 행은 최대 16개의 데이터 블록을 저장할 수 있다.
어쨌든, 컴퓨팅 시스템의 동작 동안, 처리 회로부는 대응하는 명령어를 실행함으로써 다양한 동작을 수행할 수 있고, 예를 들어, 입력 데이터에 동작을 수행함으로써 출력 데이터를 결정할 수 있다. 적어도 일부 경우에, 처리 회로부에 액세스 가능한 데이터는 메모리 서브시스템에 저장될 수 있다. 예를 들어, 메모리 서브시스템은 동작에 입력된 데이터, 동작으로부터 출력된 데이터(예를 들어, 결과), 실행 가능한 명령어를 나타내는 데이터, 또는 이들의 임의의 조합을 저장할 수 있다.
따라서, 처리 서브시스템 및 메모리 서브시스템은 시스템 (예를 들어, 데이터) 버스를 통해 통신 가능하게 결합될 수 있다. 일반적으로, 시스템 버스는 유한 통신 대역폭을 제공하도록 구현될 수 있다. 실제로, 적어도 일부 경우에, 시스템 버스는 무선 주파수(RF) 서브시스템과 같은 컴퓨팅 시스템의 다른 서브시스템과 공유될 수 있다. 다시 말해, 시스템 버스를 통한 처리 서브시스템과 메모리 서브시스템 간의 데이터 통신은 다른 컴퓨팅 서브시스템 및/또는 다른 동작에 이용 가능한 통신 대역폭의 양을 제한할 수 있으며, 이는 적어도 일부 경우에, 컴퓨팅 시스템의 동작 효율을 제한할 수 있다.
어쨌든, 처리 서브시스템은 메모리 서브시스템에 저장하기 위해 데이터를 출력할 수 있다. 추가적으로 또는 대안적으로, 메모리 서브시스템은, 시스템 버스를 통해, 예를 들어, 처리 서브시스템에 구현된 처리 회로부에 의한 처리 및/또는 실행을 위해 처리 서브시스템에 데이터를 출력(예를 들어, 반환)할 수 있다. 다시 말해, 메모리 서브시스템은 처리 서브시스템에 의한 후속 액세스를 위해 데이터를 (예를 들어, 주 메모리 어레이에) 저장할 수 있다.
메모리 서브시스템에 저장된 데이터에 액세스하기 위해, 처리 서브시스템은 예를 들어 가상 메모리 어드레스를 통해 데이터를 식별하는 메모리 액세스 요청을 시스템 버스를 통해 메모리 서브시스템에 출력할 수 있다. 일반적으로, 각 메모리 액세스 요청은 오버헤드(예를 들어, 헤더 데이터 및/또는 메타데이터)를 포함할 수 있다. 예를 들어, 시스템 버스는 다른 컴퓨팅 서브시스템과 공유될 수 있기 때문에, 메모리 액세스 요청은 메모리 액세스 요청이 메모리 서브시스템에 의도된 것임을 나타내는 오버헤드를 포함할 수 있다.
메모리 액세스 요청에 적어도 부분적으로 기초하여, 메모리 서브시스템은 예를 들어 가상 메모리 어드레스를 물리적 메모리 어드레스(예를 들어, 행 어드레스와 열 어드레스 쌍)에 매핑함으로써 메모리 서브시스템 내 데이터의 저장 위치를 결정할 수 있다. 그 저장 위치에 적어도 부분적으로 기초하여, 메모리 서브시스템은 예를 들어, 메모리 서브시스템에 구현된 주 (예를 들어, 휘발성) 메모리 어레이 및/또는 비-휘발성 메모리 디바이스로부터 데이터를 검색할 수 있다. 이러한 방식으로, 메모리 서브시스템은 예를 들어 처리 서브시스템에 구현된 처리 회로부에 의한 처리 및/또는 실행을 위해 시스템 버스를 통해 처리 서브시스템에 표적 데이터를 출력(예를 들어, 반환)할 수 있다.
적어도 일부 경우에, 처리 회로부는 예를 들어 애플리케이션 또는 알고리즘을 실행하기 위해 다수의 데이터 블록으로부터의 데이터에 적어도 부분적으로 기초하여 동작을 수행할 수 있다. 따라서, 일부 경우에, 처리 서브시스템은 다수의 데이터 블록 중 하나를 각각 식별하는 메모리 액세스 요청을 연속적으로 출력할 수 있다. 예를 들어, 처리 서브시스템은 제1 데이터 블록을 식별하는 제1 메모리 액세스 요청에 이어서 제2 데이터 블록을 식별하는 제2 메모리 액세스 요청을 시스템 버스를 통해 메모리 서브시스템에 출력할 수 있다.
그러나, 전술한 바와 같이, 시스템 버스를 통한 데이터 통신은 일반적으로 시스템 버스에 의해 제공되는 유한 통신 대역폭의 적어도 일부를 이용(예를 들어, 소비)한다. 또한, 시스템 버스를 통한 데이터 통신은 일반적으로 전기 전력을 소비한다. 실제로, 결과적인 전력 소비량 및/또는 대역폭 사용량은 일반적으로 통신되는 데이터의 크기(예를 들어, 양)에 따라 달라진다. 예를 들어, 시스템 버스를 통해 데이터를 통신하는 데 사용되는 전력 소비량은 데이터의 크기가 증가함에 따라 증가할 수 있다. 추가적으로 또는 대안적으로, 데이터를 통신하는 데 사용되는 시스템 버스에 의해 제공되는 유한 통신 대역폭의 양은 데이터의 크기가 증가함에 따라 증가할 수 있다. 다시 말해, 메모리 액세스 요청은, 시스템 버스를 통해 통신하기 때문에, 예를 들어 각 메모리 액세스 요청이 오버헤드(예를 들어, 헤더 데이터 및/또는 메타데이터)를 포함하는 것으로 인해, 특히 연속적으로 통신하는 경우, 컴퓨팅 시스템의 동작(예를 들어, 통신 및/또는 전력) 효율에 하한을 설정할 수 있다.
따라서, 동작(예를 들어, 통신 및/또는 전력) 효율을 개선하기 위해, 본 발명은 메모리 서브시스템을 통해 어드레스 관리 기능(예를 들어, 동작 또는 프로세스)을 제공하기 위해 컴퓨팅 시스템을 구현 및/또는 동작시키는 기술을 제공한다. 어드레스 관리 기능을 제공하기 위해, 메모리 서브시스템은 메모리 제어기를 포함할 수 있다. 추가적으로, 어드레스 관리 기능을 제공하기 위해, 메모리 서브시스템은 하나 이상의 특정 데이터 필드(data field)를 나타내기 위해 특정 비트 위치를 할당하는 데이터 구조를 이용하는 데이터 블록을 데이터 레코드로서 저장할 수 있다.
단지 예시적인 예로서, 제1 데이터 레코드 데이터 구조는 이름(name) (예를 들어, 제1) 필드를 나타내는 비트 [0, X], 거리 어드레스(street address) (예를 들어, 제2) 필드를 나타내는 비트 [X+1, Y], 및 우편 번호(zip code) (예를 들어, 제3) 필드를 나타내는 비트 [Y+1, Z]를 할당할 수 있다. 다시 말해, 제1 데이터 구조를 이용하는 제1 데이터 레코드는 이름 필드에 제1 엔티티(entity)의 이름, 거리 어드레스 필드에 제1 엔티티의 거리 어드레스, 및 우편 번호 필드에 제1 엔티티의 우편 번호를 나타낼 수 있다. 추가적으로, 제1 데이터 구조를 이용하는 제2 데이터 레코드는 이름 필드에 제2 엔티티의 이름, 거리 어드레스 필드에 제2 엔티티의 거리 어드레스, 및 우편 번호 필드에 제2 엔티티의 우편 번호를 나타낼 수 있다.
일부 실시형태에서, 상이한 데이터 레코드는 예를 들어 하나 이상의 상이한 데이터 필드를 포함하는 상이한 데이터 구조를 이용할 수 있다. 예시적인 예로서, 제2 데이터 레코드 데이터 구조는 우편 번호 필드를 나타내는 비트 [0, Z - (Y+1) + 1]을 할당할 수 있다. 따라서, 제2 데이터 구조를 이용하는 제3 데이터 레코드는 우편 번호 필드에 제3 엔티티의 우편 번호를 나타낼 수 있다.
데이터 레코드 데이터 구조를 사용하여 데이터를 저장함으로써, 메모리 서브시스템(예를 들어, 메모리 제어기)은 예를 들어, 별개의 저장 매체(예를 들어, 메모리) 디바이스에 저장되고/되거나 하나 이상의 주 메모리 어레이와 구별되는 (예를 들어, 별개의) 색인 테이블 메모리 어레이에 저장된 대응하는 색인 테이블을 통해 특정 데이터 필드를 각각 포함하는 데이터 레코드를 그룹화할 수 있다. 데이터 레코드를 그룹화히기 위해, 메모리 서브시스템은 특정 데이터 필드를 포함하는 데이터 레코드 각각에 대응하는 색인 항목을 생성할 수 있다. 예를 들어, 메모리 서브시스템은 제1 데이터 레코드에 대응하는 제1 우편 번호 색인 항목, 및 제2 데이터 레코드에 대응하는 제2 우편 번호 색인 항목을 생성할 수 있다. 추가적으로 또는 대안적으로, 메모리 서브시스템은 제3 데이터 레코드에 대응하는 제3 우편 번호 색인 항목을 생성할 수 있다.
일부 실시형태에서, 데이터 레코드에 대응하는 색인 항목은 예를 들어 주 메모리 어레이 또는 비-휘발성 메모리 디바이스 내 데이터 레코드의 저장 위치에 대한 포인터(pointer)를 통해 메모리 서브시스템 내 데이터 레코드의 저장 위치를 나타낼 수 있다. 다시 말해, 위의 예를 계속하면, 메모리 서브시스템은 제1 데이터 레코드의 저장 위치를 나타내기 위한 제1 우편 번호 색인 항목을 생성하고, 메모리 서브시스템 내 제2 데이터 레코드의 저장 위치를 나타내기 위한 제2 우편 번호 색인 항목을 생성할 수 있다. 추가적으로 또는 대안적으로, 메모리 서브시스템은 메모리 서브시스템 내 제3 데이터 레코드의 저장 위치를 나타내기 위해 제3 데이터 레코드에 대응하는 제3 우편 번호 색인 항목을 생성할 수 있다.
특정 데이터 필드를 각각 포함하는 데이터 레코드를 그룹화하기 위해, 메모리 서브시스템(예를 들어, 메모리 제어기)은 대응하는 색인 항목을 대응하는 색인 테이블의 색인 항목 위치에 저장할 수 있다. 예를 들어, 우편 번호 색인 테이블에서, 메모리 서브시스템은 제1 색인 항목 위치에 제1 우편 번호 색인 항목을 저장하고, 제2 색인 항목 위치에 제2 우편 번호 색인 항목을 저장할 수 있다. 추가적으로 또는 대안적으로, 메모리 서브시스템은 우편 번호 색인 테이블의 제3 색인 항목 위치에 제3 우편 번호 색인 항목을 저장할 수 있다.
전술한 바와 같이, 일부 실시형태에서, 색인 테이블은 예를 들어 메모리 서브시스템에 구현된 하나 이상의 주 메모리 어레이와 구별되는 (예를 들어, 별개의) 색인 테이블 메모리 어레이에 저장될 수 있다. 실제로, 일부 실시형태에서, 색인 테이블 메모리 어레이는 주 메모리 어레이에 비해 상이한 메모리 유형으로 구현될 수 있다. 예를 들어, 색인 테이블 메모리 어레이는 정적 랜덤 액세스 메모리(SRAM)와 같은 상대적으로 빠른 메모리 유형으로 구현될 수 있는 반면, 주 메모리 어레이는 동적 랜덤 액세스 메모리(DRAM)와 같은 상대적으로 느린 메모리 유형으로 구현될 수 있다.
더욱이, 일부 실시형태에서, 색인 테이블 메모리 어레이는 색인 테이블이 대응하는 메모리 셀 행에 각각 저장되도록 구현될 수 있다. 예를 들어, 우편 번호 색인 테이블은 색인 테이블 메모리 어레이의 제1 메모리 셀 행에 저장될 수 있는 반면, 거리 어드레스 색인 테이블은 색인 테이블 메모리 어레이의 제2 메모리 셀 행에 저장될 수 있다. 추가적으로, 일부 실시형태에서, 색인 테이블 메모리 어레이는 색인 테이블 항목이 대응하는 메모리 셀 열에 각각 저장되도록 구현될 수 있다. 다시 말해, 색인 테이블 메모리 어레이에서 각 행 어드레스와 열 어드레스 쌍에 있는 메모리 셀은 색인 테이블 항목 위치로 구현될 수 있다. 예를 들어, 우편 번호 색인 테이블의 제1 색인 항목 위치는 제1 메모리 셀 행의 제1 열에 구현될 수 있고, 우편 번호 색인 테이블의 제2 색인 항목 위치는 제1 메모리 셀 행의 제2 열에 구현될 수 있다.
어쨌든, 색인 테이블에 포함된 색인 항목을 순회함으로써, 메모리 서브시스템(예를 들어, 메모리 제어기)은 대응하는 데이터 필드를 각각 포함하는 데이터 레코드를 식별할 수 있다. 예를 들어, 메모리 서브시스템은 제1 우편 번호 색인 항목을 결정하기 위해 우편 번호 색인 테이블에서 제1 색인 항목 위치를 판독할 수 있고, 제2 우편 번호 색인 항목을 결정하기 위해 우편 번호 색인 테이블에서 제2 색인 항목 위치를 판독할 수 있고, 이와 같이 계속된다. 추가적으로, 메모리 서브시스템은 제1 데이터 레코드를 식별하여 제1 데이터 레코드가 우편 번호 필드를 포함하는지를 식별하기 위해, 제1 데이터 레코드의 저장 위치를 나타내는 제1 우편 번호 색인 항목에 포함된 제1 포인터를 판독할 수 있다. 유사하게, 메모리 서브시스템은 제2 데이터 레코드를 식별하여 제2 데이터 레코드가 우편 번호 필드를 포함하는지를 식별하기 위해 제2 데이터 레코드의 저장 위치를 나타내는 제2 우편 번호 색인 항목에 포함된 제2 포인터를 판독할 수 있다. 추가적으로 또는 대안적으로, 메모리 서브시스템은 제3 데이터 레코드를 식별하여 제3 데이터 레코드가 우편 번호 필드를 포함하는지를 식별하기 위해 제3 데이터 레코드의 저장 위치를 나타내는 제3 우편 번호 색인 항목에 포함된 제3 포인터를 판독할 수 있다.
색인 테이블 항목의 액세스(예를 들어, 판독 및/또는 기입)하기 위해, 일부 실시형태에서, 메모리 서브시스템은 예를 들어, 대응하는 열 증폭기를 통해 색인 테이블 메모리 어레이의 각 메모리 셀 열에 결합된 항목 유닛(entry unit)을 포함할 수 있다. 다시 말해, 제1 항목 유닛은 색인 테이블 메모리 어레이의 제1 메모리 셀 열에 결합될 수 있고, 제2 항목 유닛은 색인 테이블 메모리 어레이의 제2 메모리 셀 열에 결합될 수 있고, 이와 같이 계속된다. 추가적으로, 일부 실시형태에서, 각 항목 유닛은 (예를 들어, 64 바이트) 레지스터로 구현될 수 있고, 이에 의해 항목 유닛이 색인 테이블 메모리 어레이로부터 색인 항목을 판독(예를 들어, 검색)할 수 있고/있거나 색인 테이블 메모리 어레이에 색인 항목을 기입(예를 들어, 저장)할 수 있다.
일부 실시형태에서, 대응하는 데이터 레코드의 저장 위치에 추가하여, 색인 항목은 데이터 레코드에 포함된 하나 이상의 데이터 필드의 값을 나타낼 수 있다. 예를 들어, 제1 우편 번호 색인 항목은 제1 데이터 레코드의 우편 번호 필드가 나타내는 제1 우편 번호 값을 포함할 수 있고, 제2 우편 번호 색인 항목은 제2 데이터 레코드의 우편 번호 필드가 나타내는 제2 우편 번호 값을 포함할 수 있다. 추가적으로 또는 대안적으로, 제3 우편 번호 색인 항목은 제3 데이터 레코드의 우편 번호 필드가 나타내는 제3 우편 번호 값을 포함할 수 있다.
일부 실시형태에서, 색인 항목에 데이터 필드 값을 포함하면, 메모리 서브시스템(예를 들어, 메모리 제어기)이, 대응하는 데이터 레코드를 조정함이 없이, 예를 들어, 색인 테이블에서 단지 색인 항목의 순서(예를 들어, 색인 항목 위치)를 조정함으로써 데이터 레코드 간의 상호 관계를 적응적으로 (예를 들어, 동적으로) 조정할 수 있다. 특히, 메모리 서브시스템은 색인 항목이 나타내는 데이터 필드 값이 오름차순, 내림차순 또는 임의의 다른 적절한 순서로 되도록 색인 항목을 정렬할 수 있다. 예를 들어, 내림차순으로 정렬하는 경우, 메모리 서브시스템은 대응하는 색인 테이블의 제1 색인 항목 위치에서 가장 큰 데이터 필드 값을 포함하는 색인 항목을 나타낼 수 있고, 이와 같이 계속되고, 마지막 색인 항목 위치에서 가장 작은 데이터 필드 값을 포함하는 색인 항목을 나타낼 수 있다.
한편, 오름차순으로 정렬하는 경우, 메모리 서브시스템은 대응하는 색인 테이블의 제1 색인 항목 위치에서 가장 작은 데이터 필드 값을 포함하는 색인 항목을 나타낼 수 있고, 이와 같이 계속되고, 마지막 색인 항목 위치에서 가장 큰 데이터 필드 값을 포함하는 색인 항목을 나타낼 수 있다. 예를 들어, 오름차순으로 정렬하는 경우, 제1 우편 번호 필드의 값이 "83704"이고 제2 우편 번호 필드의 값이 "83707"인 경우, 제1 우편 번호 색인 항목은 제1 색인 항목 위치에 나타날 수 있고, 제2 우편 번호 색인 항목은 제2 (예를 들어, 마지막) 색인 항목 위치에 나타날 수 있다. 추가적으로 또는 대안적으로, 오름차순으로 정렬하는 경우, 제3 우편 번호 필드의 값이 "83713"인 경우, 제3 우편 번호 색인 항목이 제3 우편 번호 색인 항목 위치에 나타날 수 있다.
색인 항목을 생성하기 위해, 일부 실시형태에서, 메모리 서브시스템은 할당 함수(allocation function)를 포함하는 애플리케이션 프로그래밍 인터페이스(application programming interface: API)를 제공할 수 있다. 일부 실시형태에서, 할당 함수에의 입력 파라미터(예를 들어, 연산자)는 메모리 서브시스템에서 하나 이상의 데이터 레코드의 블록의 저장 위치에 대한 포인터, 블록에 포함된 데이터 레코드의 수, 데이터 레코드 각각의 크기, 색인될 데이터 필드의 수 및/또는 색인될 특정 데이터 필드를 포함할 수 있다. 다시 말해, 할당 함수에의 입력 파라미터(예를 들어, 데이터 레코드의 크기, 색인될 데이터 필드의 수 및/또는 색인될 특정 데이터 필드)는 데이터 레코드에 의해 구현된 데이터 구조의 파라미터에 적어도 부분적으로 기초하여 결정될 수 있다.
일부 실시형태에서, 데이터 레코드의 데이터 구조는 예를 들어 데이터 구조의 표시가 메모리 서브시스템에 미리 저장되도록 미리 정해질 수 있다. 추가적으로 또는 대안적으로, 데이터 레코드의 데이터 구조는 예를 들어 데이터 레코드에 포함된 메타데이터(예를 들어, 헤더 데이터), 및/또는 데이터 레코드와 함께 수신된 별개의 제어 신호(예를 들어, 명령 또는 요청)를 통해 명시적으로 나타날 수 있다. 어쨌든, 메모리 서브시스템은, 할당 함수를 실행함으로써, 데이터 구조를 이용하는 하나 이상의 데이터 레코드의 저장을 위해 입력 파라미터가 나타내는 저장 위치(예를 들어, 블록의 시작 저장 위치 + (블록에서 데이터 레코드의 수 * 각 데이터 레코드의 크기))를 할당할 수 있다.
더욱이, 색인 테이블에 색인 항목을 포함하기 위해, 메모리 서브시스템은 예를 들어, 색인 항목을 색인 테이블에 이미 포함된 다른 색인 항목과 비교함으로써 색인 항목을 처리(예를 들어, 분석, 평가 및/또는 조정)할 수 있다. 따라서, 일부 실시형태에서, 메모리 서브시스템은, 예를 들어 메모리 제어기에서 구현되는 처리 회로부로 구현되고/되거나 이 처리 서브시스템과는 구별되는 (예를 들어, 별개의) 다른 처리 회로부로 구현될 수 있다. 그러나, 더 복잡한 데이터 처리 동작을 수행할 수 있기 위해 처리 회로부는 일반적으로 메모리 회로부에 비해 더 많이 도핑된다. 추가적으로, 더 많은 도핑은 일반적으로 누설 전류를 생성시킬 가능성을 증가시켜, 적어도 일부 경우에, 예를 들어 메모리 서브시스템에 저장된 데이터의 손상을 초래함으로써 메모리 서브시스템의 동작 신뢰성에 영향을 미칠 수 있다.
따라서, 일부 실시형태에서, 메모리 서브시스템은 예를 들어 처리 서브시스템 및/또는 메모리 내 프로세서(processor-in-memory: PIM)에 비해 제한된 처리 능력으로 구현될 수 있다. 일부 실시형태에서, 메모리 서브시스템에 의해 수행되는 처리는 비교 논리 회로부로 구현될 수 있다. 예를 들어, 색인 테이블 메모리 어레이에 결합된 항목 유닛은 레지스터에 저장된 데이터 필드 값을 (예를 들어, 다른 색인 항목에 포함된) 입력 데이터 필드 값과 비교하도록 구현된 비교 논리 회로부를 포함할 수 있다. 일부 실시형태에서, 비교 논리 회로부는 항목 유닛의 레지스터에 저장된 데이터 필드 값이 입력 데이터 필드 값보다 큰지 여부를 나타낼 수 있다. 추가적으로 또는 대안적으로, 비교 논리 회로부는 항목 유닛의 레지스터에 저장된 데이터 필드 값이 입력 데이터 필드 값보다 작은지 여부를 나타낼 수 있다.
정렬을 제공하기 위해, 인접한 항목 유닛들은 예를 들어 제1 항목 유닛이 레지스터에 저장된 색인 항목을 제2 항목 유닛으로 이동시킬 수 있도록 통신 가능하게 결합될 수 있다. 전술한 바와 같이, 색인 테이블에 포함된 색인 항목들은 색인 항목이 나타내는 데이터 필드 값이 오름차순, 내림차순 또는 임의의 다른 적절한 순서로 되도록 정렬될 수 있다. 예를 들어, 오름차순으로 정렬하고 새로운 (예를 들어, 입력) 우편 번호 색인 항목이 "83706"의 새로운 우편 번호 필드 값을 나타내는 경우, 제1 항목 유닛은 새로운 우편 번호 색인 항목이 나타내는 우편 번호 필드 값과, 우편 번호 색인 테이블의 제1 색인 항목 위치에 저장된 제1 우편 번호 색인 항목을 비교할 수 있다. 제1 우편 번호 색인 항목이 "83704"의 제1 우편 번호 필드 값을 나타내는 경우, 제1 항목 유닛은 새로운 우편 번호 색인 항목이 나타내는 새로운 우편 번호 필드 값이 제1 우편 번호 색인 항목이 나타내는 제1 우편 번호 필드 값보다 크다고 결정할 수 있다.
추가적으로, 예를 들어, 제1 항목 유닛이 새로운 우편 번호 필드 값이 제1 우편 번호 필드 값보다 크다고 결정한 후, 제2 항목 유닛은, 새로운 우편 번호 색인 항목이 나타내는 우편 번호 필드 값과, 우편 번호 색인 테이블의 제2 색인 항목 위치에 저장된 제2 우편 번호 색인 항목을 비교할 수 있다. 새로운 우편 번호 색인 항목이 새로운 우편 번호 필드 값을 "83706"으로 나타내고, 제2 우편 번호 색인 항목이 "83707"의 제2 우편 번호 필드 값을 나타내는 경우, 제2 항목 유닛은 새로운 우편 번호 필드 값이 제2 우편 번호 필드 값보다 크지 않다고 결정할 수 있다. 이와 같이, 제2 항목 유닛은 제2 우편 번호 색인 항목을 우편 번호 색인 테이블의 제3 색인 항목 위치에 결합된 제3 항목 유닛으로 이동시킬 수 있고, 이에 의해 제2 우편 번호 색인 항목을 제2 색인 항목 위치로부터 제3 색인 항목 위치로 이동시킬 수 있다.
유사한 방식으로, 다운스트림 항목 유닛은 색인 항목을 비교하고/하거나 이동시킬 수 있다. 예를 들어, 제3 색인 항목 유닛은 제2 (예를 들어, 입력) 우편 번호 색인 항목과, 우편 번호 색인 테이블의 제3 색인 항목 위치에 저장된 제3 우편 번호 색인 항목이 나타내는 우편 번호 필드 값들을 비교할 수 있다. 제2 우편 번호 색인 항목이 제2 우편 번호 필드의 값이 "83707"임을 나타내고, 제3 우편 번호 색인 항목이 "83713"의 제3 우편 번호 필드 값을 나타내는 경우, 제3 항목 유닛은 제2 우편 번호 필드 값이 제3 우편 번호 필드 값보다 크지 않다고 결정할 수 있다. 이와 같이, 제3 항목 유닛은 제3 우편 번호 색인 항목을 우편 번호 색인 테이블의 제4 색인 항목 위치에 결합된 제4 항목 유닛으로 이동시켜, 이에 의해 제3 우편 번호 색인 항목을 제3 색인 항목 위치로부터 제4 색인 항목 위치로 이동시킬 수 있다.
그러나, 일부 실시형태에서, 항목 유닛에 색인 항목을 저장하는 것은, 예를 들어 색인 항목의 크기에 대한 버퍼의 크기로 인해 항목 유닛에 이전에 저장된 색인 항목을 덮어쓸 수 있다. 따라서, 일부 실시형태에서, 항목 유닛은 레지스터에 이전에 저장된 색인 항목이 예를 들어 다른 항목 유닛 및/또는 색인 테이블 메모리 어레이에 출력된 후에 색인 항목을 레지스터에 저장할 수 있다. 다시 말해, 위의 예를 계속하면, 제2 항목 유닛은 제2 우편 번호 색인 항목이 제3 항목 유닛으로 이동된 후에 새로운 우편 번호 색인 항목을 레지스터에 저장할 수 있고, 제3 항목 유닛은 제3 우편 번호 색인 항목이 제4 항목 유닛으로 이동된 후에 제2 우편 번호 색인 항목을 레지스터에 저장할 수 있고, 이와 같이 계속된다.
어드레스 관리 기능이 데이터 검색 대기 시간에 영향을 미칠 가능성을 줄이기 위해, 일부 실시형태에서, 메모리 서브시스템(예를 들어, 메모리 제어기)은 데이터 레코드를 색인할 수 있는 반면, 처리 서브시스템은 데이터 레코드를 표적화하지 않을 것으로 예상된다. 예를 들어, 메모리 서브시스템은 데이터 레코드가 메모리 서브시스템의 주 메모리 어레이(예를 들어, 메모리 채널)에 기입되는 것에 응답하여 데이터 레코드를 색인할 수 있다. 다시 말해, 메모리 서브시스템은 적어도 일부 경우에 컴퓨팅 시스템의 동작 효율을 향상시킬 수 있는 처리 서브시스템으로 표적화된 데이터의 반환을 지연시키는 색인 동작의 가능성을 줄이도록 색인 동작을 기회주의적으로 수행할 수 있다.
더욱이, 이러한 방식으로 어드레스 관리 기능을 구현하면, 예를 들어, 다수의 데이터 레코드로부터 데이터를 요청하고/하거나 표적화된 데이터를 반환하기 위해 처리 서브시스템과 메모리 서브시스템 사이에 통신되는 데이터의 양을 줄일 수 있다. 특히, 일부 실시형태에서, 이러한 방식으로 어드레스 관리 기능을 구현하면, 메모리 서브시스템이 하나 이상의 데이터 레코드의 표적화된 부분(예를 들어, 하나 이상의 데이터 필드)만을 반환할 수 있으며, 이는 적어도 일부 경우에, 시스템 버스를 통해 메모리 서브시스템으로부터 처리 시스템으로 데이터 통신을 줄일 수 있다. 추가적으로 또는 대안적으로, 이러한 방식으로 어드레스 관리 기능을 구현하면 처리 서브시스템이 더 적은 메모리 액세스 요청을 사용하여 다수의 데이터 레코드로부터 데이터를 요청할 수 있고, 이는 적어도 일부 경우에 시스템 버스를 통해 처리 서브시스템으로부터 메모리 서브시스템으로 데이터 통신을 줄일 수 있다.
예를 들어, 다수의 데이터 레코드로부터 데이터를 개별적으로 (예를 들어, 연속적으로) 요청하는 대신, 처리 서브시스템은 표적 데이터를 식별하는 단일 메모리 액세스 요청을 출력할 수 있다. 일부 실시형태에서, 정렬된 순서에 따라 다수의 데이터 레코드에 액세스하기 위해, 처리 서브시스템은 표적 색인 테이블에 포함된 표적 액세스 색인 및 하나 이상의 표적 색인 항목 위치를 식별하는 메모리 액세스 요청을 출력할 수 있다. 예를 들어, 처리 서브시스템은 표적 액세스 색인으로서 우편 번호 필드 및 표적 색인 항목 위치의 벡터 [N, M]를 식별하는 메모리 액세스 요청을 출력할 수 있다.
표적 액세스 색인에 기초하여, 메모리 서브시스템(예를 들어, 메모리 제어기)은 대응하는 색인 테이블을 식별할 수 있다. 예를 들어, 표적 액세스 색인이 우편 번호 필드인 경우, 메모리 제어기는 우편 번호 색인 테이블을 식별할 수 있다. 추가적으로 또는 대안적으로, 표적 액세스 색인이 이름 필드인 경우, 메모리 제어기는 이름 색인 테이블을 식별할 수 있다.
표적 색인 테이블을 식별하기 위해, 일부 실시형태에서, 메모리 서브시스템은 정렬된 액세스 함수를 포함하는 애플리케이션 프로그래밍 인터페이스(API)를 제공할 수 있다. 일부 실시형태에서, 정렬된 액세스 함수에의 입력 파라미터(예를 들어, 연산자)는 메모리 서브시스템에서 하나 이상의 데이터 레코드의 블록의 저장 위치에 대한 포인터, 및 색인될 특정 데이터 필드를 포함할 수 있다. 추가적으로, 정렬된 액세스 함수를 실행함으로써, 메모리 서브시스템은, 예를 들어, 색인 테이블 메모리 어레이에서 대응하는 색인 테이블의 저장 위치를 나타내는 정렬된 액세스 포인터를 결정할 수 있다. 다시 말해, 표적 색인 테이블을 식별하기 위해, 메모리 서브시스템은 메모리 액세스 요청이 나타내는 표적 액세스 색인에 대응하는 정렬된 액세스 포인터를 결정할 수 있다.
추가적으로, 메모리 액세스 요청에 적어도 부분적으로 기초하여, 메모리 서브시스템(예를 들어, 메모리 제어기)은 표적 색인 테이블에서 판독할 색인 항목 위치를 식별할 수 있다. 예를 들어, 메모리 액세스 요청이 벡터 [M, N]를 포함하는 경우, 메모리 서브시스템은 색인 항목이 표적 색인 테이블의 M+1번째 색인 항목 위치로부터 N+1번째 색인 항목 위치까지 판독되어야 한다고 결정할 수 있다. 예시적인 예로서, 메모리 액세스 요청이 벡터 [0, 1]를 포함하는 경우, 메모리 서브시스템은 색인이 식별된 색인 테이블의 제1 색인 항목 위치로부터 제2 색인 항목 위치까지 판독되어야 한다고 결정할 수 있다.
더욱이, 식별된 색인 항목 위치에 저장된 색인 항목에 적어도 부분적으로 기초하여, 메모리 서브시스템(예를 들어, 메모리 제어기)은 대응하는 데이터 레코드를 식별(예를 들어, 검색)할 수 있다. 예를 들어, 제1 우편 번호 색인 항목에 적어도 부분적으로 기초하여, 메모리 서브시스템은 제1 데이터 레코드를 식별할 수 있다. 유사하게, 제2 우편 번호 색인 항목에 적어도 부분적으로 기초하여, 메모리 서브시스템은 제2 데이터 레코드를 식별할 수 있다. 이러한 방식으로, 처리 서브시스템은 더 적은 메모리 액세스 요청을 사용하여 정렬된 순서에 따라 다수의 데이터 레코드에 액세스를 요청할 수 있고, 이는 적어도 일부 경우에 시스템 버스를 통해 처리 서브시스템으로부터 메모리 서브시스템으로 데이터 통신을 줄일 수 있다.
더욱이, 일부 실시형태에서, 처리 서브시스템은 예를 들어 주 메모리 어레이에서 인접한 블록으로 저장된 다수의 데이터 레코드로부터 특정 부분 또는 서브세트(subset)(예를 들어, 하나 이상의 데이터 필드)를 표적화할 수 있다. 다수의 데이터 레코드의 특정 부분에 액세스하기 위해, 일부 실시형태에서, 처리 서브시스템은 데이터 레코드의 블록의 저장 위치 및 데이터 레코드 각각의 표적화된 부분을 식별하는 메모리 액세스 요청을 출력할 수 있다. 예를 들어, 처리 서브시스템은 주 메모리 어레이의 메모리 어드레스의 블록을 식별하여 우편 번호 필드가 표적화되었다고 식별하는 메모리 액세스 요청을 출력할 수 있다.
다수의 데이터 레코드의 표적화된 부분에 액세스하기 위해, 일부 실시형태에서, 메모리 서브시스템은 스트라이딩 액세스 함수(striding access function)를 포함하는 애플리케이션 프로그래밍 인터페이스(API)를 제공할 수 있다. 일부 실시형태에서, 스트라이딩 액세스 함수에의 입력 파라미터(예를 들어, 연산자)는 메모리 서브시스템에서 하나 이상의 데이터 레코드의 블록의 저장 위치에 대한 포인터, 데이터 레코드에서 표적 데이터 필드의 시작 비트 위치, 표적 데이터 필드의 크기, 및 연속적인 데이터 레코드 사이의 스트라이드 길이(stride length)를 포함할 수 있다, 따라서, 일부 실시형태에서, 스트라이딩 액세스 함수에의 입력 파라미터(예를 들어, 데이터 레코드에서 표적 데이터 필드의 시작 비트 위치, 표적 데이터 필드의 크기, 및/또는 연속적인 데이터 레코드 사이의 스트라이드 길이)는 데이터 레코드의 데이터 구조에 적어도 부분적으로 기초하여 결정될 수 있다.
추가적으로, 스트라이딩 액세스 함수를 실행함으로써, 메모리 서브시스템은 예를 들어 다수의 데이터 레코드의 표적화된 부분의 저장 위치를 나타내는 스트라이딩 액세스 포인터를 결정할 수 있다. 다시 말해, 스트라이딩 액세스 포인터를 사용하여, 메모리 서브시스템은 다수의 데이터 레코드의 표적화된 부분을 식별(예를 들어, 검색)할 수 있다. 이러한 방식으로, 처리 서브시스템은 더 적은 메모리 액세스 요청을 사용하여 (예를 들어, 어드레스 순서에 따라) 다수의 데이터 레코드의 특정 부분에 액세스를 요청할 수 있고, 이는 적어도 일부 경우에 시스템 버스를 통해 처리 서브시스템으로부터 메모리 서브시스템으로 데이터 통신을 줄일 수 있다.
전술한 바와 같이, 표적 데이터를 식별한 후, 메모리 서브시스템은 예를 들어 처리 서브시스템에 구현된 처리 회로부에 의한 처리 및/또는 실행을 위해 시스템 버스를 통해 처리 서브시스템에 표적 데이터를 출력(예를 들어, 반환)할 수 있다. 실제로, 일부 실시형태에서, 저장된 데이터에 스트라이딩 액세스를 제공하면 또한 시스템 버스를 통해 메모리 서브시스템으로부터 처리 서브시스템으로 데이터 통신을 줄일 수 있다. 예를 들어, 스트라이딩 액세스를 제공함으로써, 메모리 서브시스템은 표적화된 부분 이외의 데이터를 포함하는 전체 데이터 레코드 대신 데이터 레코드의 표적화된 부분만을 출력할 수 있다.
어쨌든, 상이한 컴퓨팅 서브시스템 간의 데이터 통신은 일반적으로 예를 들어 상이한 컴퓨팅 서브시스템의 타이밍, 다른 컴퓨팅 서브시스템과 시스템 버스의 공유, 및/또는 상이한 서브시스템 간의 통신 거리로 인해, 컴퓨팅 서브시스템에서의 데이터 통신보다 더 느리다. 다시 말해, 처리 서브시스템 내의 (예를 들어 내부) 데이터 통신은 처리 서브시스템과 메모리 서브시스템 간의 데이터 통신보다 빠를 수 있다. 따라서, 동작 효율을 개선하기 위해, 하나 이상의 캐시가 처리 서브시스템에서 구현될 수 있다. 예를 들어, 처리 서브시스템은 처리 회로부와 통합된 L1 캐시, L2 캐시 및/또는 L3 캐시와 같은 하나 이상의 프로세서측 캐시로 구현될 수 있다.
캐시에 의해 제공되는 더 빠른 데이터 통신을 활용하기 위해, 일부 실시형태에서, 메모리 서브시스템은 표적 데이터를 직접 프로세서측 캐시에 저장할 수 있다. 실제로, 일부 실시형태에서, 메모리 서브시스템은 표적 데이터를 직접 L3 캐시와 같은 상위 레벨 (예를 들어, 공유) 프로세서측 캐시에 자동으로 저장할 수 있다. 다시 말해, 이러한 실시형태에서, 메모리 서브시스템은, 예를 들어, 처리 서브시스템으로부터의 추가 명령어 없이, 메모리 액세스 요청에 응답하여, 메모리 액세스 요청에 의해 표적화된 데이터를 직접 프로세서측 캐시에 저장할 수 있다.
실제로, 일부 실시형태에서, 메모리 서브시스템은 예를 들어 비순차 방식으로 표적 데이터를 비결정적으로 반환할 수 있다. 따라서, 표적 데이터를 직접 프로세서측 캐시에 자동으로 저장하도록 구현되는 경우, 메모리 서브시스템은 프로세서측 캐시에 표적 데이터를 저장하는 것이 완료될 때를 나타내는 제어 신호를 처리 서브시스템에 출력할 수 있다. 일부 실시형태에서, 메모리 서브시스템은 데이터 레코드로부터 표적 데이터가 프로세서측 캐시에 성공적으로 저장될 때마다 제어 신호를 출력할 수 있다. 추가적으로 또는 대안적으로, 메모리 서브시스템은 메모리 액세스 요청에 의해 식별된 모든 표적 데이터가 프로세서측 캐시에 성공적으로 저장된 후에 제어 신호를 출력할 수 있다.
캐시에 의해 제공되는 더 빠른 데이터 통신을 더 활용하기 위해, 일부 실시형태에서, 메모리 서브시스템(예를 들어, 메모리 제어기)은 처리 서브시스템에 의해 후속적으로 표적화될 것으로 예상되는 데이터(예를 들어, 데이터 레코드 또는 데이터 필드)를 예측적으로 식별할 수 있다. 다시 말해, 메모리 서브시스템은 후속적으로 발생할 것으로 예상되는 데이터 액세스 패턴을 예측하고 이에 따라 데이터를 선제적으로 식별할 수 있고, 이에 의해 일부 실시형태에서 처리 서브시스템이 데이터를 표적화하기 전에도 메모리 서브시스템이 표적 데이터를 직접 프로세서측 캐시에 저장할 수 있다. 이와 같이, 처리 회로부가 데이터를 (예를 들어, 처리 및/또는 실행을 위해) 실제로 표적화할 때, 처리 서브시스템은 표적 데이터가 이미 프로세서측 캐시에 저장되어 있다고 결정할 수 있고, 이에 따라, 예를 들어 메모리 서브시스템으로부터 표적 데이터를 요청하고 표적 데이터의 반환을 기다리는 대신, 프로세서측 캐시를 통해 표적 데이터를 처리 회로부에 제공한다.
일부 실시형태에서, 메모리 서브시스템(예를 들어, 메모리 제어기)은 처리 서브시스템에 의해 현재 표적화된 데이터 및/또는 순서에 적어도 부분적으로 기초하여 후속적으로 표적화된 데이터를 예측할 수 있다. 전술한 바와 같이, 처리 서브시스템은 예를 들어 단일 메모리 액세스 요청을 통해 다수의 데이터 레코드로부터 데이터를 표적화할 수 있다. 따라서, 일부 실시형태에서, 메모리 서브시스템은, 다수의 데이터 레코드로부터 데이터를 표적화하는 데이터 액세스 패턴을 결정하고 데이터 액세스 패턴을 외삽하여 처리 서브시스템에 의해 후속적으로 표적화될 데이터를 예측할 수 있다.
예를 들어, 메모리 액세스 요청이 색인 항목 위치의 벡터 [0, 1]을 표적화하는 경우, 메모리 서브시스템은 처리 서브시스템이 후속적으로 제3 색인 항목 위치 및 제4 색인 항목 위치의 색인 항목을 표적화할 것이라고 예측할 수 있다. 다시 말해, 이러한 방식으로, 메모리 서브시스템은 처리 서브시스템이 실제로 데이터를 요청하기 전에 표적 색인 항목과 이에 대응하는 데이터 레코드를 식별할 수 있다. 실제로, 일부 실시형태에서, 메모리 서브시스템은 처리 서브시스템에 의해 후속적으로 표적화될 것으로 예상되는 데이터 레코드를 직접 프로세서측 캐시에 선제적으로 저장할 수 있고, 이는 적어도 일부 경우에 데이터 검색 대기 시간을 줄일 수 있다.
더욱이, 일부 실시형태에서, 메모리 서브시스템(예를 들어, 메모리 제어기)은 메모리 서브시스템에 저장된 데이터 레코드의 데이터 구조에 적어도 부분적으로 기초하여 후속적으로 표적화될 데이터를 예측할 수 있다. 위의 예시적인 예에서 설명한 바와 같이, 제1 데이터 레코드 데이터 구조는 이름 필드를 나타내는 비트 [0, X], 거리 어드레스 필드를 나타내는 비트 [X+1, Y], 및 우편 번호 (예를 들어, 제3) 필드를 나타내는 비트 [Y+1, Z]를 할당할 수 있다. 따라서, 메모리 액세스 요청이 거리 어드레스 필드를 표적화하는 경우, 메모리 서브시스템은 예를 들어, 제1 데이터 레코드 데이터 구조가 거리 어드레스 필드 바로 뒤에 우편 번호를 나타내는 비트 위치를 할당하기 때문에, 처리 서브시스템이 후속적으로 우편 번호 필드를 표적화할 것이라고 예측할 수 있다. 이러한 방식으로, 메모리 서브시스템은 처리 서브시스템에 의해 실제로 요청되기 전에 데이터 레코드의 표적 부분을 식별할 수 있다. 실제로, 일부 실시형태에서, 메모리 서브시스템은 처리 서브시스템에 의해 후속적으로 표적화될 것으로 예상되는 데이터 레코드의 일부를 직접 프로세서측 캐시에 선제적으로 저장할 수 있다.
다시 말해, 아래에서 보다 상세히 설명되는 바와 같이, 본 발명은 데이터 레코드는 주 메모리 어레이에 저장될 수 있는 반면, 데이터 레코드와 연관된 색인 항목(예를 들어, 메타데이터)은 메모리 서브시스템의 특정 부분, 예를 들어, 고급 조회 기술을 사용하여 메타데이터를 관리하는 색인 테이블 메모리 어레이에 저장되도록 메모리 서브시스템을 구현 및/또는 동작시키는 기술을 설명한다. 일부 실시형태에서, 이에 의해 메모리 서브시스템은 처리 서브시스템을 대신하여 상당한 (예를 들어, 고급) 메모리 어드레싱 동작을 수행할 수 있다. 예를 들어, 메모리 서브시스템은 메모리 서브시스템이 처리 서브시스템으로부터 다가오는 메모리 액세스 요청을 예상하고(예를 들어, 예측하고) 메모리 액세스 요청에 앞서 요청될 것으로 예상되는 데이터를 준비하는 순방향 캐싱 기술을 구현할 수 있다. 따라서, 적어도 일부 경우에, 이러한 방식으로 메모리 서브시스템을 구현하고 동작시키면, 예를 들어, 어드레스 계산의 처리 서브시스템을 완화하고/하거나 처리 서브시스템이 경험하는 유효 데이터 검색 대기 시간을 낮춤으로써, 동작(예를 들어, 전력 및/또는 통신) 효율을 개선할 수 있다.
추가적으로 또는 대안적으로, 메모리 서브시스템은 메모리 서브시스템이 요청된 데이터를 처리 서브시스템에 비동기적으로 전송하는 고속(예를 들어, 개선된) 순방향 캐싱 기술을 구현할 수 있다. 순방향 캐싱 기술을 구축하면, 일부 실시형태에서, 메모리 서브시스템은 예상되는 메모리 액세스 요청에 의해 표적화될 것으로 예상되는 데이터를 선제적으로 처리 서브시스템에 전송할 수 있고, 이에 의해 메모리 액세스 요청에 앞서 처리 서브시스템에 의해 요청될 것으로 예상되는 데이터를 전달할 수 있다. 따라서, 적어도 일부 경우에, 이러한 방식으로 메모리 서브시스템을 구현하고 동작시키면, 예를 들어, 처리 서브시스템에 의해 경험되는 유효 데이터 검색 대기 시간을 (예를 들어, 이상적인 상황에서는 0으로) 더 낮춤으로써 동작(예를 들어, 전력 및/또는 통신) 효율을 더 개선할 수 있다.
더욱이, 아래에서 보다 상세히 설명되는 바와 같이, 애플리케이션 프로그래밍 인터페이스(API)는 순방향 캐싱 기술 및/또는 고속 순방향 캐싱 기술과 같은 고급 메모리 어드레싱 기술을 지원하는 도구(예를 들어, 함수)를 제공할 수 있다. 일부 실시형태에서, 프로그래밍 기술은 액세스 축의 개념으로 추상화된 상이한 메모리 액세스 패턴을 포함할 수 있다. 예를 들어, 액세스 축은 메모리 서브시스템이 저장된 데이터를 직선 (예를 들어, 어드레스) 순서, 스트라이딩 순서 및/또는 정렬된 순서로 액세스할 수 있도록 충분한 정보(예를 들어, 메타데이터)를 제공할 수 있다. 어쨌든, 적어도 일부 경우에, 이러한 방식으로 컴퓨팅 시스템을 구현하고 동작시키면, 예를 들어, 데이터 검색 대기 시간을 줄이고, 시스템 버스를 통한 데이터 통신을 줄이고, 및/또는 다른 컴퓨팅 서브시스템에 이용 가능한 통신 대역폭을 늘림으로써 동작(예를 들어, 전력 및/또는 통신) 효율을 개선할 수 있다.
설명을 돕기 위해, 처리 서브시스템(12) 및 메모리 서브시스템(14)을 포함하는 컴퓨팅 시스템(10)(예를 들어, 장치)의 일례가 도 1에 도시되어 있다. 도시된 실시형태는 단지 예시를 위한 것일 뿐 본 발명을 제한하는 것으로 의도되지 않는 것으로 이해된다. 특히, 컴퓨팅 시스템(10)은 추가적으로 또는 대안적으로 다른 컴퓨팅 서브시스템을 포함할 수 있다. 예를 들어, 컴퓨팅 시스템(10)은 추가적으로 네트워킹 서브시스템, 무선 주파수 서브시스템, 사용자 입력 서브시스템 및/또는 디스플레이 서브시스템을 포함할 수 있다.
더욱이, 일부 실시형태에서, 컴퓨팅 시스템(10)은 데스크톱 컴퓨터, 워크스테이션 컴퓨터, 랩톱 컴퓨터, 서버, 모바일 폰, 가상 현실 헤드셋 및/또는 등과 같은 단일 전자 디바이스로 구현될 수 있다. 다른 실시형태에서, 컴퓨팅 시스템(10)은 다수의 전자 디바이스 사이에 분산될 수 있다. 예를 들어, 처리 서브시스템(12) 및 메모리 서브시스템(14)은 호스트 디바이스에서 구현될 수 있는 반면, 사용자 입력 서브시스템 및/또는 디스플레이 서브시스템과 같은 다른 컴퓨팅 서브시스템은 클라이언트(예를 들어, 원격) 디바이스에서 구현된다. 실제로, 일부 실시형태에서, 컴퓨팅 서브시스템은 다수의 전자 디바이스 사이에 분산될 수 있다. 예를 들어, 처리 서브시스템(12)의 제1 부분 및/또는 메모리 서브시스템(14)의 제1 부분은 호스트 디바이스에서 구현될 수 있는 반면, 처리 서브시스템(12)의 제2 부분 및/또는 메모리 서브시스템(14)의 제2 부분은 클라이언트 디바이스에서 구현된다.
어쨌든, 처리 서브시스템(12)은 일반적으로 컴퓨팅 시스템(10)의 동작 동안 다양한 동작을 수행하며, 예를 들어, 명령어를 실행하여 입력 데이터에 대응하는 동작을 수행함으로써 출력 데이터를 결정한다. 따라서, 도시된 예에서와 같이, 처리 서브시스템(12)은 처리 회로부(16)를 포함할 수 있다. 일부 실시형태에서, 처리 회로부(16)는 하나 이상의 중앙 처리 유닛(CPU), 하나 이상의 그래픽 처리 유닛(GPU), 하나 이상의 프로세서 코어, 또는 이들의 임의의 조합을 포함할 수 있다.
추가적으로, 전술한 바와 같이, 메모리 서브시스템(14)은 일반적으로, 예를 들어, 출력 데이터, 입력 데이터, 및/또는 실행 가능한 명령어를 나타내는 데이터를 포함하여 처리 서브시스템(12)에 액세스 가능한 데이터를 저장한다. 따라서, 묘시된 예에서와 같이, 메모리 서브시스템(14)은 하나 이상의 메모리 디바이스(18)(예를 들어, 칩 또는 집적 회로)를 포함할 수 있다. 아래에서 보다 상세히 설명되는 바와 같이, 일부 실시형태에서, 메모리 디바이스(18)는 하나 이상의 메모리 어레이로 구성된 메모리 셀(예를 들어, 회로부)을 포함할 수 있고, 따라서 하나 이상의 유형적인 비-일시적인 컴퓨터-판독 가능 매체를 포함할 수 있다. 예를 들어, 메모리 서브시스템(14)은 동적 랜덤 액세스 메모리(DRAM) 디바이스 또는 정적 랜덤 액세스 메모리(SRAM) 디바이스와 같은 하나 이상의 휘발성 메모리 디바이스, 및/또는 플래시(예를 들어, NAND) 메모리 디바이스, 상 변화 메모리(예를 들어, 3D XPointTM) 메모리 디바이스, 강유전성 랜덤 액세스 메모리(FeRAM) 디바이스와 같은 하나 이상의 비-휘발성 메모리 디바이스, 또는 이들의 임의의 조합을 포함할 수 있다.
더욱이, 일부 실시형태에서, 다수의 메모리 디바이스(18)는 이중 인라인 메모리 모듈(DIMM) 또는 단일 인라인 메모리 모듈(SIMM)과 같은 메모리 모듈 상에 구현될 수 있다. 예를 들어, 메모리 모듈은 인쇄 회로 기판(PCB), 및 인쇄 회로 기판의 편평하거나 평평한 표면(예를 들어, 전면 또는 후면)에 각각 배치된 다수의 메모리 디바이스를 포함할 수 있다. 추가적으로, 메모리 디바이스(18)는 인쇄 회로 기판 상에 형성된 전도성 트레이스를 통해 인쇄 회로 기판의 (예를 들어, 하부) 에지를 따라 형성된 외부 핀에 결합될 수 있다.
하나 이상의 메모리 디바이스(18)는 다른 패킹 기술을 사용하여 구현될 수 있는 것으로 이해된다. 예를 들어, 메모리 디바이스(18)는 2.5D 구성을 구현하기 위해 반도체(예를 들어, 실리콘) 인터포저(interposer)에 결합될 수 있다. 추가적으로 또는 대안적으로, 메모리 디바이스(18)는 3D 구성을 구현하기 위해 적층될 수 있다. 더욱이, 일부 실시형태에서, 메모리 디바이스(18)는 유기 패키징 기술을 사용하여 구현될 수 있다. 다시 말해, 본 명세서에 설명된 기술은 온-패키지 솔루션으로 구현될 수 있다.
어쨌든, 전술한 바와 같이, 메모리 서브시스템(14)은 일반적으로 처리 서브시스템(12)에 액세스 가능한 데이터를 저장한다. 데이터 통신을 제공하기 위해, 메모리 서브시스템(14)과 처리 서브시스템(12)은 예를 들어, 하나 이상의 데이터 버스를 포함하는 시스템 버스(20)를 통해 통신 가능하게 결합될 수 있다. 일부 실시형태에서, 시스템 버스(20)는 하나 이상의 케이블, 하나 이상의 와이어, 하나 이상의 전도성 트레이스, 하나 이상의 통신 네트워크, 또는 이들의 임의의 조합을 포함할 수 있으며, 따라서 유한 통신 대역폭을 제공하도록 구현될 수 있다. 어쨌든, 시스템 버스(20)를 통해, 처리 서브시스템(12)은 메모리 서브시스템(14)에 저장하기 위해 데이터를 통신(예를 들어, 출력)할 수 있다. 추가적으로 또는 대안적으로, 시스템 버스(20)를 통해, 메모리 서브시스템(14)은 예를 들어, 처리 서브시스템(12)의 처리 회로부(16)에 의해 표적화된 데이터를 요청하는 것에 응답하여, 처리 서브시스템(12)에 의한 처리 및/또는 실행을 위해 데이터를 통신(예를 들어, 출력)할 수 있다.
그러나, 전술한 바와 같이, 상이한 컴퓨팅 서브시스템 간의 데이터 통신은 일반적으로 컴퓨팅 서브시스템 내의 데이터 통신보다 느리다. 다시 말해, 예를 들어, 다른 컴퓨팅 서브시스템과 시스템 버스(20)의 공유, 처리 서브시스템(12)과 메모리 서브시스템(14) 사이의 타이밍 차이, 및/또는 처리 서브시스템(12)과 메모리 서브시스템(14) 사이의 통신 거리 때문에, 처리 서브시스템(12) 내의 (예를 들어 내부) 데이터 통신은 처리 서브시스템(12)과 메모리 서브시스템(14) 사이의 데이터 통신에 비해 더 빠를 수 있고, 이에 따라 데이터 검색 대기 시간을 줄일 수 있다. 따라서 동작 효율을 향상시키기 위해, 캐시가 예를 들어 처리 서브시스템(12)의 처리 회로부(16)와 메모리 서브시스템(14)의 메모리 디바이스(18) 사이에 구현되어, 메모리 디바이스(18)에도 저장된 데이터의 인스턴스(instance)(예를 들어, 사본)를 저장할 수 있다.
도시된 예에서와 같이, 캐시는 처리 서브시스템(12)에서 구현된 하나 이상의 프로세서측 캐시(22)를 포함할 수 있다. 일부 실시형태에서, 하나 이상의 프로세서측 캐시(22)는 처리 회로부(16)와 통합될 수 있다. 예를 들어, 프로세서측 캐시(22)는 L1 캐시, L2 캐시 및/또는 L3 캐시를 포함할 수 있다. 데이터 검색 대기 시간을 줄이기 위해, 일부 실시형태에서, 프로세서측 캐시(22)는 메모리 서브시스템(14)에서 구현된 메모리 디바이스(18)에 비해 다른 메모리를 사용하여 구현될 수 있다. 예를 들어, 프로세서측 캐시(22)는 정적 랜덤 액세스 메모리(SRAM)로 구현될 수 있는 반면, 메모리 디바이스(18)는 동적 랜덤 액세스 메모리(DRAM) 및/또는 비-휘발성 메모리로 구현된다.
캐시 및/또는 메모리 디바이스(18)에 데이터의 저장을 제어하기 위해, 컴퓨팅 시스템(10)은 예를 들어 명령어 버스(20A)를 통해 캐시 및/또는 메모리 디바이스(18)에 통신 가능하게 결합된 하나 이상의 메모리 제어기(26)를 포함할 수 있다. 일부 실시형태에서, 메모리 제어기(26) 중 하나 이상은 예를 들어 메모리측 메모리 제어기(26)로서 메모리 서브시스템(14)에서 구현될 수 있다. 추가적으로 또는 대안적으로, 하나 이상의 메모리 제어기(26)는 예를 들어 프로세서측 메모리 제어기(26)로서 처리 서브시스템(12)에서 구현될 수 있다.
설명을 돕기 위해, 프로세서측 메모리 제어기(26A)를 포함하는 처리 서브시스템(12A)의 일례가 도 2에 도시되어 있다. 전술한 바와 같이, 처리 회로부(16)는 하나 이상의 프로세서 코어(28)를 사용하여 구현될 수 있다. 예를 들어, 도시된 실시형태에서와 같이, 처리 서브시스템(12A)의 처리 회로부(16A)는 제1 프로세서 코어(28A) 및 N번째 프로세서 코어(28N)를 포함할 수 있다.
추가적으로, 도시된 실시형태에서와 같이, 캐시는 상이한 캐시 레벨(30)로 계층적으로 구성될 수 있다. 예를 들어, 프로세서측 캐시(22A)는 시스템 버스(20)를 통해 메모리 시스템에 통신 가능하게 결합될 수 있는 제1 (예를 들어, 하위) 캐시 레벨(30A) 및 K번째 (예를 들어, 상위) 캐시 레벨(30K)로 구성될 수 있다. 일부 실시형태에서, 프로세서측 캐시(22A)는 정적 랜덤 액세스 메모리(SRAM) 및/또는 동적 랜덤 액세스 메모리(DRAM)와 같은 휘발성 메모리를 사용하여 구현될 수 있다.
추가적으로, 일부 실시형태에서, 제1 캐시 레벨(30A)에서 구현된 프로세서측 캐시(22A)는 대응하는 프로세서 코어(28)에 전용될 수 있다. 다시 말해, 이러한 실시형태에서, 제1 레벨 캐시(30A)는 하나 이상의 개인용 프로세서측 캐시(32)를 사용하여 구현될 수 있다. 예를 들어, 제1 캐시 레벨(30A)에서 구현된 제1 프로세서측 캐시(32A)는 제1 프로세서 코어(28A)에 전용될 수 있고, 제1 캐시 레벨(30A)에서 구현된 N번째 개인용 프로세서측 캐시(32N)는 N번째 프로세서 코어(28N)에 전용될 수 있다. 다시 말해, 일부 실시형태에서, 제1 캐시 레벨(30A)에서 구현된 개인용 프로세서측 캐시(32)는 하나 이상의 L1 캐시를 포함할 수 있다.
일부 실시형태에서, 상위 캐시 레벨은 또한 하나 이상의 개인용 프로세서측 캐시(32)로 구현될 수 있다. 예를 들어, 제2 캐시 레벨(30)은 제1 프로세서 코어(28A)에 전용된 다른 개인용 프로세서측 캐시(32) 및, N번째 프로세서 코어(28N)에 전용된 다른 개인용 프로세서측 캐시(32)로 구현될 수 있다. 다시 말해, 일부 실시형태에서, 제2 캐시 레벨(30)에서 구현된 개인용 프로세서측 캐시(32)는 하나 이상의 L2 캐시를 포함할 수 있다.
추가적으로 또는 대안적으로, 상위 캐시 레벨에서 구현된 프로세서측 캐시(22)는 다수의 프로세서 코어(28) 사이에서 공유될 수 있다. 예를 들어, 도시된 실시형태에서, K번째 캐시 레벨(30K)은 제1 프로세서 코어(28A)와 N번째 프로세서 코어(28N)가 공유하는 공유 프로세서측 캐시(34)로 구현될 수 있다. 다시 말해, 일부 실시형태에서, K번째 캐시 레벨(30K)에서 구현된 공유 프로세서측 캐시(34)는 L3 캐시를 포함할 수 있다.
어쨌든, 전술한 바와 같이, 캐시는 일반적으로 메모리 서브시스템(14)의 메모리 디바이스(18)에서 구현된 주 메모리 어레이에 비해 더 빠른 데이터 액세스(예를 들어, 판독 및/또는 기입) 속도를 제공한다. 그러나, 캐시의 저장 용량은 일반적으로 주 메모리 어레이의 저장 용량보다 작다. 실제로, 일부 실시형태에서, 프로세서측 캐시(22A)의 총 저장 용량은 하나 이상의 주 메모리 어레이의 저장 용량보다 작을 수 있다.
따라서, 데이터 액세스 속도를 향상시켜 컴퓨팅 시스템(10)의 동작 효율을 높이기 위해, 프로세서측 메모리 제어기(26A)는 데이터가 처리 회로부(16A)에 의해 표적화(예를 들어, 요청)될 것으로 예상되는 때에 적어도 부분적으로 기초하여 프로세서측 캐시(22A)에 데이터의 저장을 제어할 수 있다. 예를 들어, 프로세서측 메모리 제어기(26A)는 처리 회로부(16A)가 데이터를 실제로 표적화하기 전에 처리 회로부(16A)에 의해 표적화될 것으로 예상되는 데이터의 인스턴스(예를 들어, 사본)가 하나 이상의 프로세서측 캐시(22A)에 저장되도록 데이터의 저장을 제어할 수 있다. 한편, 프로세서측 캐시(22A)의 저장 용량을 보존(예를 들어, 최적화)하기 위해, 프로세서측 메모리 제어기(26A)는 다가오는 제어 구간(예를 들어, 지속 시간) 동안 처리 회로부(16A)에 의해 표적화될 것으로 예상되지 않는 데이터 블록(29)의 인스턴스가 프로세서측 캐시(22A)에 저장되지 않도록 데이터의 저장을 제어할 수 있다.
더욱이, 일부 실시형태에서, 프로세서측 캐시(22A)에 데이터의 저장은 계층적 캐시 레벨에 적어도 부분적으로 기초하여 제어될 수 있다. 예를 들어, 프로세서측 메모리 제어기(26A)는 제1 캐시 레벨(30A)과 같은 하위 캐시 레벨(30)에 데이터의 저장을 배타적으로 제어하도록 구현될 수 있다. 한편, 일부 실시형태에서, 프로세서측 메모리 제어기(26A)는 예를 들어 메모리측 메모리 제어기(26)와 함께 K번째 캐시 레벨(30K)과 같은 상위 캐시 레벨(30)에서 데이터의 저장에 대한 제어를 공유할 수 있다. 아래에서 보다 자세히 설명하겠지만, 적어도 일부 경우에, 캐시 레벨(30)에서 데이터의 저장에 대한 제어 공유는, 예를 들어, 메모리 서브시스템(14)이 데이터를 직접 및/또는 예측적으로 프로세서측 캐시(22)에 저장할 수 있음으로써 컴퓨팅 시스템(10)의 동작 효율을 향상시킬 수 있다.
프로세서측 메모리 제어기(26A)와 같은 메모리 제어기(26)를 동작시키기 위한 프로세스(46)의 일례는 도 3에 설명된다. 일반적으로, 프로세스(46)는 처리 회로부에 의해 표적화된 데이터를 결정하고(프로세스 블록(48)), 표적 데이터가 프로세서측 캐시 미스(cache miss)를 초래하는지 여부를 결정하고(결정 블록(50)), 및 표적 데이터를 처리 회로부에 제공하는(프로세스 블록(52)) 것을 포함한다. 추가적으로, 표적 데이터가 프로세서측 캐시 미스를 초래할 때, 프로세스(46)는 메모리 서브시스템으로부터 표적 데이터를 요청하고(프로세스 블록(56)), 및 표적 데이터가 메모리 서브시스템으로부터 수신되었는지 여부를 결정하는(결정 블록(58)) 것을 포함한다.
특정 실시형태를 나타내는 특정 순서로 설명되었지만, 프로세스(46)는 임의의 적절한 순서로 수행될 수 있다는 것이 주목된다. 추가적으로, 프로세스(46)의 실시형태는 프로세스 블록을 생략하고/하거나 추가 프로세스 블록을 포함할 수 있다. 더욱이, 일부 실시형태에서, 프로세스(46)는 메모리 제어기(26)에 구현된 프로세서와 같은 처리 회로부를 사용하여 메모리 제어기(26)에 구현된 메모리와 같은 유형적인 비-일시적인 컴퓨터 판독 가능 매체에 저장된 명령어를 실행함으로써 적어도 부분적으로 구현될 수 있다.
따라서, 일부 실시형태에서, 메모리 제어기(26)(예를 들어, 프로세서측 메모리 제어기(26A))는 컴퓨팅 시스템(10)의 처리 회로부(16)에 의해 표적화된 데이터(예를 들어, 데이터 레코드 또는 하나 이상의 데이터 필드)를 결정할 수 있다(프로세스 블록(48)). 일부 실시형태에서, 처리 회로부(16)는 예를 들어 메모리 액세스 요청에 포함된 대응하는 (예를 들어, 표적) 가상 메모리 어드레스를 사용하여 표적 데이터를 식별할 수 있다. 표적 가상 메모리 어드레스에 적어도 부분적으로 기초하여, 메모리 제어기(26)는 컴퓨팅 시스템(10)에서 표적 데이터의 저장 위치를 나타내는 대응하는 (예를 들어, 표적) 물리적 메모리 어드레스를 결정할 수 있다.
추가적으로, 메모리 제어기(26)는 표적 데이터가 프로세서측 캐시 미스를 초래하는지 여부를 결정할 수 있다(결정 블록(50)). 일부 실시형태에서, 메모리 제어기(26)는 데이터와 연관된 가상 메모리 어드레스 및/또는 물리적 메모리 어드레스에 적어도 부분적으로 기초하여 데이터가 캐시에 저장되어 있는지 여부를 결정할 수 있다. 예를 들어, 가상 메모리 어드레스 및 물리적 메모리 어드레스에 적어도 부분적으로 기초하여, 메모리 제어기(26)는 표적 데이터와 연관될 것으로 예상되는 태그 메타데이터의 표적 값을 결정할 수 있다.
표적 태그 메타데이터 값에 기초하여 프로세서측 캐시(22)를 탐색함으로써, 메모리 제어기(26)는 표적 데이터가 프로세서측 캐시 미스를 초래하는지 여부를 결정할 수 있다. 예를 들어, 표적 태그 메타데이터 값이 프로세서측 캐시(22) 중 임의의 캐시에 포함된 태그 메타데이터(33)와 일치하지 않는 경우, 메모리 제어기(26)는 표적 데이터가 프로세서측 캐시 미스를 초래한다고 결정할 수 있다. 한편, 태그 메타데이터(33)가 하나 이상의 프로세서측 캐시(22)에 포함되는 경우, 메모리 제어기(26)는 표적 데이터가 프로세서측 캐시 히트를 초래하고 이에 따라 프로세서측 캐시 미스를 초래하지 않는다고 결정할 수 있다.
표적 데이터가 프로세서측 캐시 미스를 초래하지 않는 경우, 메모리 제어기(26)는 데이터 검색 속도를 향상시켜 컴퓨팅 시스템(10)의 동작 효율을 향상시키기 위해 표적 데이터를 처리 회로부(16)에 공급하도록 프로세서측 캐시(22)에 명령할 수 있다(프로세스 블록(52)). 일부 실시형태에서, 프로세서측 캐시(22)는 표적 데이터와 연관될 것으로 예상되는 표적 태그 메타데이터 값과 일치하는 태그 메타데이터를 캐시 라인에 출력할 수 있다. 상위 (예를 들어, K번째) 캐시 레벨(30)에 저장될 때, 일부 실시형태에서, 표적 데이터는 처리 회로부(16)에 도달하기 전에 하나 이상의 하위 (예를 들어, 제1) 캐시 레벨을 통과할 수 있다.
한편, 프로세서측 캐시 미스가 발생하는 경우, 메모리 제어기(26)는 컴퓨팅 시스템(10)의 메모리 서브시스템(14)으로부터 표적 데이터를 요청할 수 있다(프로세스 블록(56)). 일부 실시형태에서, 메모리 제어기(26)는 표적 데이터를 식별하는 메모리 액세스 요청을 출력함으로써 표적 데이터를 검색하도록 메모리 서브시스템(14)에 명령할 수 있다. 컴퓨팅 시스템(10)의 동작 효율을 개선하기 위해, 일부 실시형태에서, 메모리 제어기(26)는 단일 메모리 액세스 요청을 통해 메모리 서브시스템(14)에 저장된 다수의 데이터 레코드로부터 표적 데이터를 검색하도록 메모리 서브시스템(14)에 명령할 수 있다.
예를 들어, 정렬된 순서로 다수의 데이터 레코드에 액세스하기 위해, 메모리 제어기(26)는 표적 액세스 색인 및 표적 색인 항목 위치의 벡터 [N, M]를 식별하는 메모리 액세스 요청을 출력할 수 있다(프로세스 블록(60)). 추가적으로 또는 대안적으로, (예를 들어, 어드레스 순서로) 데이터 레코드의 블록의 특정 부분(예를 들어, 하나 이상의 데이터 필드)에 액세스하기 위해, 메모리 제어기(26)는 데이터 레코드의 블록의 저장 위치 및 데이터 레코드 각각의 표적화된 부분을 식별하는 메모리 액세스 요청을 출력할 수 있다(프로세스 블록(62)). 어쨌든, 메모리 액세스 요청에 적어도 부분적으로 기초하여, 메모리 서브시스템(14)은 예를 들어 메모리 서브시스템(14)에서 구현된 메모리측 메모리 제어기(26)를 통해 표적 데이터를 식별할 수 있다.
예시를 돕기 위해, 메모리측 메모리 제어기(26B)를 포함하는 메모리 서브시스템(14A)의 일례는 도 4에 도시되어 있다. 전술한 바와 같이, 일부 실시형태에서, 메모리 서브시스템(14)에서 구현되는 메모리 디바이스(18)는 휘발성 메모리 및/또는 비-휘발성 메모리(64)를 포함할 수 있다. 예를 들어, 비-휘발성 메모리(64)는 하나 이상의 플래시(예를 들어, NAND) 메모리 디바이스(18A), 하나 이상의 상 변화 메모리(예를 들어, 3D XPointTM) 메모리 디바이스(18A), 하나 이상의 강유전성 랜덤 액세스 메모리(FeRAM) 디바이스(18A), 또는 이들의 임의의 조합을 포함할 수 있다. 추가적으로 또는 대안적으로, 휘발성 메모리는 하나 이상의 동적 랜덤 액세스 메모리(DRAM) 디바이스(18A) 및/또는 하나 이상의 정적 랜덤 액세스 메모리(SRAM) 디바이스(18A)를 포함할 수 있다.
더욱이, 전술한 바와 같이, 메모리 서브시스템(14)에서 구현되는 휘발성 메모리는 하나 이상의 메모리 어레이로 구성될 수 있다. 예를 들어, 아래에서 보다 상세히 설명되는 바와 같이, 메모리 서브시스템(14)은 색인 테이블 메모리 어레이를 이용할 수 있다. 추가적으로, 도시된 실시형태에서와 같이, 메모리 서브시스템(14A)은 예를 들어 색인 테이블 메모리 어레이와 별개의 (예를 들어, 구별되는) 하나 이상의 주 메모리 어레이(66)를 포함할 수 있다.
더욱이, 도시된 실시형태에서와 같이, 주 메모리 어레이(66)는 메모리 서브시스템(14A)의 각 메모리 채널(68)에서 구현될 수 있다. 예를 들어, 제1 주 메모리 어레이(66)는 제1 메모리 채널(68A)에서 구현될 수 있고, M번째 주 메모리 어레이(66)는 M번째 메모리 채널(68M)에서 구현될 수 있다. 도시된 실시형태에서와 같이, 주 메모리 어레이(66)에 액세스(예를 들어, 판독 및/또는 기입)하기 위해, 메모리 채널(68)은 예를 들어 주 메모리 어레이(66)의 행과 열에 각각 결합된 행 선택 (예를 들어, 디코더) 회로부(70) 및 열 선택 회로부(72)를 포함할 수 있다.
예시를 돕기 위해, 메모리 채널(68)에서 주 메모리 어레이(66)를 구현하는 데 사용될 수 있는 메모리 어레이(66A)의 일례는 도 5에 도시되어 있다. 도시된 예에서와 같이, 메모리 어레이(66A)는 제1 (예를 들어, 수평) 방향으로 형성된 워드 라인(76)에 결합된 메모리 셀(74)을 포함할 수 있다. 다시 말해, 메모리 셀 행(78)은 대응하는 워드 라인(76)에 결합된 각 메모리 셀(74)을 포함할 수 있다. 예를 들어, 제1 메모리 셀 행(78A)은 제1 워드 라인(76A)에 결합된 각 메모리 셀(74)을 포함할 수 있고, 제2 메모리 셀 행(78B)은 제2 워드 라인(76B)에 결합된 각 메모리 셀(74)을 포함할 수 있고, 이와 같이 계속되고, H번째 메모리 셀 행(78H)은 H번째 워드 라인(76H)에 결합된 각 메모리 셀(74)을 포함할 수 있다.
추가적으로, 도시된 예에서와 같이, 메모리 셀(74)은 제2 (예를 들어, 수직) 방향으로 형성된 비트 라인(82)을 통해 열 증폭기(80)에 결합될 수 있다. 다시 말해, 메모리 셀 열(84)은 대응하는 열 증폭기(80)에 결합된 각 메모리 셀(74)을 포함할 수 있다. 예를 들어, 제1 메모리 셀 열(84A)은 제1 비트 라인(82A)을 통해 제1 열 증폭기(80A)에 결합된 각 메모리 셀(74)을 포함할 수 있고, 제2 메모리 셀 열(84B)은 제2 비트 라인(82B)을 통해 제2 열 증폭기(80B)에 결합된 각 메모리 셀(74)을 포함할 수 있으며, 이와 같이 계속되고, W번째 메모리 셀 열(84W)은 W번째 비트 라인(82W)을 통해 W번째 열 증폭기에 결합된 각 메모리 셀(74)을 포함할 수 있다.
어쨌든, 메모리 셀(74)은 일반적으로 금속 산화물 반도체 전계 효과 트랜지스터(MOSFET)와 같은 스위칭 구성 요소, 및 커패시터와 같은 저장 구성 요소를 포함한다. 예를 들어, 메모리 셀(74)은 MOSFET이 비트 라인(82)과 저장 커패시터 사이에 결합되고, MOSFET의 게이트가 워드 라인(76)에 결합되도록 구현될 수 있다. 따라서, 일부 실시형태에서, 각 메모리 셀(74)은 하나의 데이터 비트를 저장하는 데 사용될 수 있다. 예를 들어, 메모리 셀(74)은 메모리 셀(74)에 저장된 전하가 임계 전압보다 큰 전압을 초래할 때 1-비트를 나타낼 수 있고, 메모리 셀(74)에 저장된 전하가 임계 전압보다 낮은 전압을 초래할 때 0-비트를 나타낼 수 있다. 다른 실시형태에서, 메모리 셀(74)은 다수의 데이터 비트를 저장하도록 구현될 수 있다. 예를 들어, 쿼드-레벨 셀(Quad-Level Cell: QLC) NAND 메모리의 메모리 셀(74)은 2 데이터 비트를 저장하도록 구현될 수 있다.
어쨌든, 도시된 실시형태에서와 같이, 메모리 어레이(66A)의 메모리 셀(74)은 데이터 레코드(예를 들어, 블록)(86)를 저장하기 위한 저장 위치별로 그룹화될 수 있다. 예를 들어, 제1 데이터 레코드(86A)는 제1 메모리 셀 행(78A) 및 제1 메모리 셀 열(84A)의 메모리 셀(74)을 포함하는 제1 저장 위치에 저장될 수 있고, 제2 데이터 레코드(86B)는 제2 메모리 셀 행(78B) 및 제1 메모리 셀 열(84A)의 메모리 셀(74)을 포함하는 제2 저장 위치에 저장될 수 있고, 이와 같이 계속된다. 다시 말해, 일부 실시형태에서, 다수의 데이터 레코드(86)는 예를 들어, 연속적인 메모리 어드레스로 메모리 어레이(66A)에 (예를 들어, 인접한) 블록으로 저장될 수 있다.
추가적으로 또는 대안적으로, 하나 이상의 데이터 레코드(86)는 비-인접한 메모리 어드레스(예를 들어, 희소 어레이)에 저장될 수 있다. 예를 들어, R번째 데이터 레코드(86R)는 제1 메모리 셀 행(78A) 및 제2 메모리 셀 열(84B)에 메모리 셀(74)을 포함하는 R번째 저장 위치에 저장될 수 있고 및/또는 W번째 데이터 레코드(86W)는 H번째 메모리 셀 행(78H) 및 W번째 메모리 셀 열(84W)에 메모리 셀을 포함하는 W번째 저장 위치에 저장될 수 있다. 메모리 어레이(66A)의 저장 위치에 액세스하기 위해, 메모리 셀 행(78)은 대응하는 행 어드레스(예를 들어, 물리적 메모리 어드레스)를 통해 각각 식별될 수 있고, 메모리 셀 열(84)은 열 어드레스(예를 들어, 물리적 메모리 어드레스)를 통해 각각 식별될 수 있다.
추가적으로, 메모리 어레이(66A)의 저장 위치에 액세스하기 위해, 전술한 바와 같이, 행 선택 회로부(70)는 메모리 어레이(66A)의 행에 연결될 수 있다. 다시 말해, 행 선택 회로부(70)는 제1 워드 라인(76A)을 통해 제1 메모리 셀 행(78A)에 결합될 수 있고, 제2 워드 라인(76B)을 통해 제2 메모리 셀 행(78B)에 결합될 수 있고, 이와 같이 계속되고, 행 선택 회로부(70)는 H번째 워드 라인(76H)을 통해 H번째 메모리 셀 행(78H)에 결합될 수 있다. 따라서, 메모리 셀(74)을 판독 및/또는 메모리 셀에 기입하기 위해, 행 선택 회로부(70)는 예를 들어, 메모리 셀(74)의 스위칭 구성 요소가 메모리 셀(74)의 저장 구성 요소를 대응하는 비트 라인(82)에 전기적으로 결합하게 하는 대응하는 워드 라인(76)을 통해 활성화 (예를 들어, 논리 하이) 신호를 출력함으로써, 메모리 셀(74)을 활성화시킬 수 있다.
더욱이, 전술한 바와 같이, 열 선택 회로부(72)는 메모리 어레이(66A)의 열에 결합될 수 있다. 다시 말해, 열 선택 회로부(72)는 제1 비트 라인(82A) 및 제1 열 증폭기(80A)를 통해 제1 메모리 셀 열(84A)에 결합될 수 있고, 제2 비트 라인(82B) 및 제2 열 증폭기(80B)를 통해 제2 메모리 셀 열(84B)에 결합될 수 있고, 이와 같이 계속되고, 열 선택 회로부(72)는 W번째 비트 라인(82W) 및 W번째 열 증폭기를 통해 W번째 메모리 셀 열(84W)에 결합될 수 있다. 일부 실시형태에서, 열 증폭기(80)는 메모리 셀(74)에 데이터를 저장(예를 들어, 기입)하는 드라이버, 및/또는 메모리 셀(74)로부터 데이터를 출력(예를 들어, 판독)하는 감지 증폭기를 포함할 수 있다.
일부 실시형태에서, 열 선택 회로부(72)는 예를 들어, 대응하는 열 증폭기(80)에 열 선택을 출력함으로써 선택적으로 메모리 셀 열(84)로부터 판독하고/하거나 메모리 셀 열에 기입하게 할 수 있다. 다시 말해, 제1 메모리 셀 열(84A)로부터 데이터(예를 들어, 제1 데이터 레코드(86A) 및/또는 제2 데이터 레코드(86B))를 판독하고/하거나 제1 메모리 셀 열(84A)에 데이터 레코드(86A)를 기입하기 위해, 열 선택 회로부(72)는 열 선택(예를 들어, 논리 하이) 신호를 제1 열 증폭기(80A)에 출력할 수 있다. 추가적으로, 제2 메모리 셀 열(84B)로부터 데이터(예를 들어, R번째 데이터 레코드(86R))를 판독하고/하거나 제2 메모리 셀 열(84B)에 데이터를 기입하기 위해, 열 선택 회로부(72)는 열 선택 신호를 제2 열 증폭기(80B)에 출력할 수 있다. 또한, W번째 메모리 셀 열(84W)로부터 데이터(예를 들어, W번째 데이터 레코드(86W))를 판독하고/하거나 W번째 메모리 셀 열(84W)에 데이터를 기입하기 위해, 열 선택 회로부(72)는 열 선택 신호를 W번째 열 증폭기(80W)에 출력할 수 있다.
어쨌든, 전술한 바와 같이, 데이터 레코드(86)는 하나 이상의 데이터 필드(88)를 포함할 수 있다. 예를 들어, 도시된 실시형태에서와 같이, 데이터 레코드(86) 중 하나 이상은 제1 데이터 필드(88A) 및 F번째 데이터 필드(88F)를 포함할 수 있다. 전술한 바와 같이, 일부 실시형태에서, 데이터 레코드(86)는 특정 데이터 필드(88)를 나타내기 위해 특정 비트 위치를 할당하는 데이터 구조를 이용할 수 있다. 예를 들어, 데이터 구조는 이름 필드(88)를 나타내는 데이터 레코드(86)의 비트 [0, X], 거리 어드레스 필드(88)를 나타내는 데이터 레코드(86)의 비트 [X+1, Y], 및 우편 번호 필드(88)를 나타내는 데이터 레코드(86)의 비트 [Y+1, Z]를 할당할 수 있다. 전술한 바와 같이, 일부 실시형태에서, 하나 이상의 데이터 필드(88)는 예를 들어 정렬된 순서로 대응하는 데이터 레코드(86)에 액세스하기 위해 색인될 수 있다.
도 6의 메모리 서브시스템(14A)으로 돌아가면, 정렬된 순서로 데이터에 액세스하기 위해, 메모리측 메모리 제어기(26B)는 하나 이상의 색인 테이블(90)을 이용할 수 있다. 일부 실시형태에서, 각 색인 테이블(90)은 메모리 서브시스템(14A)에 저장된 하나 이상의 데이터 레코드(86)에 포함된 상이한 데이터 필드(88)에 대응할 수 있다. 예를 들어, 색인 테이블(90)은 하나 이상의 데이터 레코드(86)가 이름 필드(88)를 포함하는 경우 이름 색인 테이블, 하나 이상의 데이터 레코드(86)가 거리 어드레스 필드(88)를 포함하는 경우 거리 어드레스 색인 테이블, 및/또는 하나 이상의 데이터 레코드(86)가 우편 번호 필드(88)를 포함하는 경우 우편 번호 색인 테이블을 포함할 수 있다.
추가적으로, 일부 실시형태에서, 색인 테이블(90)은 대응하는 데이터 필드(88)를 포함하는 데이터 레코드(86)와 각각 대응하는 하나 이상의 색인 항목을 포함할 수 있다. 예를 들어, 이름 색인 테이블(90)은 제1 데이터 레코드(86A)가 이름 필드를 포함하는 경우 제1 데이터 레코드(86A)에 대응하는 이름 색인 항목, 제2 데이터 레코드(86B)가 이름 필드를 포함하는 경우 제2 데이터 레코드(86B)에 대응하는 제2 이름 색인 항목 등을 포함할 수 있다. 추가적으로, 거리 어드레스 색인 테이블(90)은 제1 데이터 레코드(86A)가 거리 어드레스 필드(88)를 포함하는 경우 제1 데이터 레코드(86A)에 대응하는 제1 거리 어드레스 색인 항목, 제2 데이터 레코드(86B)가 거리 어드레스 필드(88)를 포함하는 경우 제2 데이터 레코드(86B)에 대응하는 제2 거리 어드레스 색인 항목 등을 포함할 수 있다. 더욱이, 우편 번호 색인 테이블(90)은 제1 데이터 레코드(86A)가 우편 번호 필드(88)를 포함하는 경우 제1 데이터 레코드(86A)에 대응하는 제1 우편 번호 색인 항목, 제2 데이터 레코드(86B)가 우편 번호 필드(88)를 포함하는 경우 제2 데이터 레코드(86B)에 대응하는 제2 우편 번호 색인 항목 등을 포함할 수 있다.
대응하는 데이터 레코드(86)를 식별하기 위해, 일부 실시형태에서, 색인 항목은 예를 들어 메모리 서브시스템(14)의 메모리 어드레스에 대한 포인터를 통해 대응하는 데이터 레코드(86)의 저장 위치를 식별할 수 있다. 다시 말해, 제1 데이터 레코드(86A)에 대응하는 제1 색인 항목은 메모리 서브시스템(14)에서 제1 데이터 레코드(86A)의 저장 위치를 나타낼 수 있고, 제2 데이터 레코드(86B)에 대응하는 제2 색인 항목은 메모리 서브시스템(14)에서 제2 데이터 레코드(86B)의 저장 위치를 나타낼 수 있고, 이와 같이 계속된다. 추가적으로, 정렬을 제공하기 위해, 일부 실시형태에서, 색인 항목은 대응하는 데이터 필드(88)의 값을 나타낼 수 있다. 예를 들어, 제1 우편 번호 색인 항목은 제1 데이터 레코드(86A)에서 우편 번호 필드(88)의 값을 나타낼 수 있고, 제2 우편 번호 색인 항목은 제2 데이터 레코드(86B)에서 우편 번호 필드(88)의 값을 나타낼 수 있고, 이와 같이 계속된다.
추가 설명을 돕기 위해, 예시적인 색인 테이블(90)의 개략적 표현이 도 6에 도시되어 있다. 도시된 바와 같이, 색인 테이블(90)은 색인된 데이터 필드 열(94), 및 색인 항목 위치에 각각 대응하는 하나 이상의 색인 항목 위치 열(96)을 포함할 수 있다. 추가적으로, 도시된 예에서와 같이, 색인 테이블(90)은 상이한 색인 테이블(90)에 각각 대응하는 색인 테이블 행(92)을 포함할 수 있다.
다시 말해, 색인 테이블 행(92)은 색인된 데이터 필드 열(94)에서 대응하는 색인된 데이터 필드(예를 들어, 액세스 색인)를 나타낼 수 있다. 예를 들어, 제1 색인 테이블 행(92A)에서 색인된 데이터 필드 열(94)은 제1 색인 테이블 행(92A)이 제1 데이터 필드(88A)에 대응한다는 것을 나타낼 수 있다. 추가적으로, F번째 색인 테이블 행(92F)에서 색인된 데이터 필드 열(94)은 F번째 색인 테이블 행(92F)이 F번째 데이터 필드(88F)에 대응하는 것을 나타낼 수 있다.
더욱이, 색인 테이블 행(92)은 색인 항목 위치 열(96)에 색인된 데이터 필드를 포함하는 데이터 레코드(85)에 각각 대응하는 색인 항목을 나타낼 수 있다. 예를 들어, 제1 색인 테이블 행(92A)에서 색인 항목 위치 열(96)은 제1 데이터 레코드(86A)가 제1 데이터 필드(88A)를 포함하는 경우 제1 데이터 레코드(86A)에 대응하는 색인 항목을 포함할 수 있고, W번째 데이터 레코드(86W)가 제1 데이터 필드(88A)를 포함하는 경우 W번째 데이터 레코드(86W)에 대응하는 색인 항목을 포함할 수 있고, 이와 같이 계속된다. 추가적으로, F번째 색인 테이블 행(92F)에서 색인 항목 위치 열(96)은 R번째 데이터 레코드(86R)가 F번째 데이터 필드(88F)를 포함하는 경우 R번째 데이터 레코드(86R)에 대응하는 색인 항목을 포함할 수 있고, 제1 데이터 레코드(86A)가 제1 데이터 필드(88A)를 포함하는 경우 제1 데이터 레코드(86A)에 대응하는 색인 항목을 포함할 수 있고, 이와 같이 계속된다.
더욱이, 전술한 바와 같이, 색인 테이블(90)에서 색인 항목은 메모리 서브시스템(14)에서 대응하는 데이터 레코드(86)의 저장 위치, 및 데이터 레코드(86)에서 대응하는 색인된 데이터 필드(88)의 값을 나타낼 수 있다. 예를 들어, 제1 색인 테이블 행(92A)에서 제1 데이터 레코드(86A)에 대응하는 색인 항목은 제1 데이터 레코드(86A)의 저장 위치, 및 제1 데이터 레코드(86)에 나타난 제1 데이터 필드(88A)의 값을 식별할 수 있고, 제1 색인 테이블 행(92A)에서 W번째 데이터 레코드(86W)에 대응하는 색인 항목은 W번째 데이터 레코드(86W)의 저장 위치, 및 W번째 데이터 레코드(86W)에 나타난 제1 데이터 필드(88A)의 값을 식별할 수 있고, 이와 같이 계속된다. 추가적으로, F번째 색인 테이블 행(92F)에서 R번째 데이터 레코드(86R)에 대응하는 색인 항목은 R번째 데이터 레코드(86F)의 저장 위치, 및 R번째 데이터 레코드(86R)에 나타난 F번째 데이터 필드(88F)의 값을 식별할 수 있고, F번째 색인 테이블 행(92F)에서 제1 데이터 레코드(86A)에 대응하는 색인 항목은 제1 데이터 레코드(86A)의 저장 위치, 및 제1 데이터 레코드(86A)에 나타난 F번째 데이터 필드(88F)의 값을 식별할 수 있다.
전술한 바와 같이, 일부 실시형태에서, 대응하는 색인 항목에서 색인된 데이터 필드(88)의 값을 나타내면, 대응하는 데이터 레코드(86A)에 정렬된 액세스를 개선할 수 있다. 특히, 일부 실시형태에서, 대응하는 색인 항목에서 색인된 데이터 필드(88)의 값을 나타내면, 메모리측 메모리 제어기(26B)가, 실제 데이터 레코드(86)를 조정함이 없이, 예를 들어, 단지 색인 항목의 색인 항목 위치를 조정하는 것에 의해, 대응하는 데이터 레코드(86)를 오름차순, 내림차순, 또는 임의의 다른 적절한 순서로 정렬할 수 있다. 예를 들어, 도시된 예에서, 색인 항목은 제1 색인 항목 위치 열(106A)의 제1 색인 항목 위치에서 색인된 데이터 필드의 가장 낮은 (예를 들어, 가장 작은) 값을 포함하는 색인 항목, 및 V번째 (예를 들어, 마지막) 색인 항목 위치 열(106V)의 V번째 (예를 들어, 마지막) 색인 항목 위치에서 색인된 데이터 필드의 가장 높은 (예를 들어, 가장 큰) 값을 포함하는 색인 항목을 나타냄으로써 오름차순으로 정렬될 수 있다.
다시 말해, 색인 테이블 행(92)에 포함된 색인 항목 위치 열(96)을 판독(예를 들어, 순회)함으로써, 메모리 제어기(26)(예를 들어, 메모리측 메모리 제어기(26B))는 대응하는 색인된 데이터 필드를 포함하는 메모리 서브시스템(14) 내 데이터 레코드(86)의 저장 위치를 결정할 수 있다. 예를 들어, 제1 색인 테이블 행(92A)에서 색인 항목 위치 열(96)을 판독함으로써, 메모리 제어기(26)는 제1 데이터 레코드(86A)의 저장 위치 및 W번째 데이터 레코드(86W)의 저장 위치를 결정할 수 있고, 이에 따라 이들 데이터 레코드 모두가 제1 데이터 필드(88A)를 포함하는지를 결정할 수 있다. 추가적으로, F번째 색인 테이블 행(92F)에서 색인 항목 위치 열(96)을 판독함으로써, 메모리 제어기(26)는 R번째 데이터 레코드(86R)의 저장 위치 및 제1 데이터 레코드(86A)의 저장 위치를 결정할 수 있고, 이에 따라 이들 데이터 레코드 모두가 F번째 데이터 필드(88F)를 포함하는지를 결정할 수 있다. 어쨌든, 위에서 설명된 바와 같이, 일부 실시형태에서, 색인 테이블(90)은 예를 들어 별개의 저장 매체(예를 들어, 메모리) 디바이스에서 구현된 전용 메모리에 저장되고/되거나, 하나 이상의 주 메모리 어레이(66)와 구별되는 (예를 들어, 별개의) 색인 테이블 메모리 어레이에 저장될 수 있다.
설명을 돕기 위해, 색인 테이블 메모리 어레이(100)를 포함하는 메모리 서브시스템(14)의 일부(108)의 일례가 도 7에 도시되어 있다. 도시된 실시형태에서와 같이, 색인 테이블(90)은 색인 테이블 메모리 어레이(100)의 메모리 셀 행(78)에 각각 저장될 수 있다. 예를 들어, 제1 색인 테이블(90A)은 색인 테이블 메모리 어레이(100)의 제1 메모리 셀 행(78A)에 저장될 수 있고, F번째 색인 테이블(90F)은 색인 테이블 메모리 어레이(100)의 F번째 메모리 셀 행(78F)에 저장될 수 있다. 다시 말해, 제1 색인 테이블(90A)은 제1 색인 테이블 행(92A)에 대응할 수 있고, F번째 색인 테이블(90F)은 F번째 색인 테이블 행(92F)에 대응할 수 있다.
추가적으로, 도시된 실시형태에서와 같이, 색인 항목(102)은 색인 테이블 메모리 어레이(100)의 메모리 셀 열(84)에 각각 저장될 수 있다. 예를 들어, 제1 색인 항목(102A)은 색인 테이블 메모리 어레이(100)의 제1 메모리 셀 열(84A)에 저장될 수 있고, 제2 색인 항목(102B)은 색인 테이블 메모리 어레이(100)의 제2 메모리 셀 열(84B)에 저장될 수 있고, 이와 같이 계속되고, V번째 색인 항목(102V)은 색인 테이블 메모리 어레이(100)의 V번째 메모리 셀 열(84V)에 저장될 수 있다. 다시 말해, 일부 실시형태에서, 색인 테이블 메모리 어레이(100)의 메모리 셀 열(84)은 색인 항목 위치 열(96), 및 이에 따라 대응하는 색인 항목 위치에 각각 대응할 수 있다. 예를 들어, 제1 메모리 셀 행(78A)의 제1 메모리 셀 열(84A)에 저장되기 때문에, 메모리 제어기(26)(예를 들어, 메모리측 메모리 제어기(26B))는 제1 색인 항목(102A)이 제1 (예를 들어, 가장 작은 또는 가장 낮은) 색인 항목 위치에서 제1 색인 테이블(90A)에 포함된다고 결정할 수 있다. 추가적으로, 제1 메모리 셀 행(78A)의 V번째 메모리 셀 열(84V)에 저장되기 때문에, 메모리 제어기(26)는 V번째 색인 항목(102V)이 V번째(예를 들어, 가장 큰 또는 가장 높은) 색인 항목 위치에서 제1 색인 테이블(90A)에 포함된다고 결정할 수 있다.
색인 항목 위치에 액세스하기 위해, 도시된 실시형태에서와 같이, 항목 유닛(104)은 예를 들어 대응하는 열 증폭기(80)를 통해 색인 테이블 메모리 어레이(100)의 각 메모리 셀 열(84)에 결합될 수 있다. 다시 말해, 제1 항목 유닛(104A)은 색인 테이블 메모리 어레이(100)의 제1 메모리 셀 열(84A)에 결합될 수 있고, 제2 항목 유닛(104B)은 색인 테이블 메모리 어레이(100)의 제2 메모리 셀 열(84B)에 결합될 수 있고, 이와 같이 계속되고, V번째 항목 유닛(104V)은 색인 테이블 메모리 어레이(100)의 V번째 메모리 셀 열(84V)에 결합될 수 있다. 추가적으로, 도시된 실시형태에서와 같이, 상이한 항목 유닛(104)들은 예를 들어 이들 유닛 간에 데이터를 이동시킬 수 있도록 통신 가능하게 결합될 수 있다.
일부 실시형태에서, 메모리 셀 열(84)에 대응하는 항목 유닛(104)은 인접한 메모리 셀 열(84)에 대응하는 항목 유닛(104)에 통신 가능하게 결합될 수 있다. 예를 들어, 제1 항목 유닛(104A)은 제2 항목 유닛(104B)에만 통신 가능하게 결합될 수 있고/있거나 V번째 항목 유닛(104V)은 색인 테이블 메모리 어레이(100)의 V-1번째 메모리 셀 열(84)에 대응하는 V-1번째 항목 유닛(104)에만 통신 가능하게 결합될 수 있다. 한편, 제2 항목 유닛(104B)은 제1 항목 유닛(104A)에, 및 색인 테이블 메모리 어레이(100)의 제3 메모리 셀 열(84)에 대응하는 제3 항목 유닛(104)에 모두 통신 가능하게 결합될 수 있다. 추가적으로, 일부 실시형태에서, 항목 유닛(104)은 메모리 서브시스템(14)에서 구현된 메모리측 메모리 제어기(26B)와 같은 메모리 제어기(26)에 포함될 수 있다.
어쨌든, 아래에서 보다 상세히 설명한 바와 같이, 항목 유닛(104)(예를 들어, 메모리 제어기(26))은 예를 들어 새로운 색인 항목(102N)을 색인 테이블(90)에 추가함으로써 색인 테이블(90)을 업데이트하기 위해 데이터 처리 동작(예를 들어, 함수)을 수행할 수 있다. 그러나, 전술한 바와 같이, 더 복잡한 데이터 처리 동작을 수행하도록 구현된 처리 회로부는 일반적으로 메모리 회로부에 비해 더 많이 도핑된다. 추가적으로, 더 많은 도핑은 일반적으로 누설 전류를 생성할 가능성을 증가시켜, 적어도 일부 경우에, 예를 들어, 메모리 서브시스템(14)에 저장된 데이터의 손상을 초래함으로써 메모리 서브시스템(14)의 동작 신뢰성에 영향을 미칠 수 있다.
따라서, 도시된 실시형태에서와 같이, 항목 유닛(104)은 레지스터(106) 및 비교 논리 회로부(108)를 포함할 수 있고, 이는 적어도 일부 경우에, 예를 들어, 처리 서브시스템(12) 및/또는 완전히 개발된 메모리 내 프로세서(PIM)에 비해 덜 도핑된 처리 회로부로 구현될 수 있다. 레지스터(106)를 사용하여, 항목 유닛(104)은 예를 들어 색인 테이블 메모리 어레이(100)로부터 판독된 색인 항목(102)을 저장할 수 있다. 일부 실시형태에서, 레지스터(106) 중 하나 이상은 64 바이트 레지스터일 수 있다.
추가적으로, 비교 논리 회로부(108)를 사용하여, 항목 유닛(104)은, 레지스터(106)에 현재 저장된 색인 항목(102)을, 수신된 (예를 들어, 입력) 색인 항목(102), 예를 들어, 다른 항목 유닛(104)으로부터 이동된 색인 항목과 비교하고/하거나, 대응하는 색인 테이블(90)에 추가될 새로운 색인 항목(102N)과 비교할 수 있다. 일부 실시형태에서, 항목 유닛(104)에서 구현된 비교 논리 회로부(108)는 레지스터(106)에 저장된 색인 항목(102)이 나타내는 데이터 필드(88)의 값을 수신된 색인 항목(102)이 나타내는 데이터 필드(88)의 값과 비교할 수 있다. 예를 들어, 비교 논리 회로부(108)는 수신된 색인 항목(102)이 나타내는 데이터 필드(88)의 값이 항목 유닛(104)의 레지스터(106)에 저장된 데이터 필드(88)의 값보다 큰지 여부를 나타낼 수 있다. 비교에 적어도 부분적으로 기초하여, 대응하는 색인 테이블(90)은 예를 들어 새로운 색인 항목(102N)을 포함하도록 업데이트될 수 있다.
색인 항목을 생성하는 프로세스(110)의 일례가 도 8에 설명되어 있다. 일반적으로, 프로세스(110)는 데이터 레코드의 저장 위치를 결정하고(프로세스 블록(112)), 데이터 레코드에서 데이터 필드를 식별하고(프로세스 블록(114)), 및 데이터 레코드에 대응하는 색인 항목을 생성하는(프로세스 블록(116)) 것을 포함한다. 특정 실시형태를 나타내는 특정 순서로 설명되었지만, 프로세스(110)는 임의의 적절한 순서로 수행될 수 있다는 것이 주목된다. 추가적으로, 프로세스(110)의 실시형태는 프로세스 블록을 생략하고/하거나, 추가 프로세스 블록을 포함할 수 있다. 더욱이, 일부 실시형태에서, 프로세스(110)는 메모리 제어기(26)에 구현된 프로세서와 같은 처리 회로부를 사용하여 메모리 제어기(26)에 구현된 메모리와 같은 유형적인 비-일시적인 컴퓨터 판독 가능 매체에 저장된 명령어를 실행함으로써 적어도 부분적으로 구현될 수 있다.
따라서, 일부 실시형태에서, 메모리 제어기(26)(예를 들어, 메모리측 메모리 제어기(26B))는 메모리 서브시스템(14)에서 데이터 레코드(86)의 저장 위치를 결정할 수 있다(프로세스 블록(112)). 전술한 바와 같이, 일부 실시형태에서, 데이터의 저장 위치는, 예를 들어, 메모리 서브시스템(14)에서 구현된 주 메모리 어레이(66) 및/또는 비-휘발성 메모리(64)에 데이터가 저장된 (예를 들어, 가상 및/또는 물리적) 메모리 어드레스를 통해 나타날 수 있다. 예시적인 예로서, 도 5와 관련하여, 메모리 제어기(26)는 제1 데이터 레코드(86A)가 메모리 어레이(66A)에서 제1 메모리 셀 행(78A)과 제1 메모리 셀 열(84A)을 식별하는 제1 행 어드레스와 열 어드레스 쌍에 저장된다고 결정할 수 있다.
도 6의 프로세스(110)로 돌아가면, 메모리 제어기(26)는 추가적으로 데이터 레코드(86)에 포함된 데이터 필드(88)를 식별하고 데이터 필드(88)의 값을 결정할 수 있다(프로세스 블록(114)). 전술한 바와 같이, 일부 실시형태에서, 데이터 레코드(86)는 하나 이상의 데이터 필드(88)를 포함할 수 있다. 추가적으로, 전술한 바와 같이, 일부 실시형태에서, 데이터 레코드(86)는 특정 데이터 필드(88)를 나타내기 위해 특정 비트 위치를 할당하는 데이터 구조를 이용할 수 있다.
따라서, 데이터 필드(88)의 값을 결정하기 위해, 메모리 제어기(26)는 데이터 레코드(86)에 의해 사용되는 데이터 구조를 결정할 수 있다. 일부 실시형태에서, 데이터 레코드(86)의 데이터 구조는 예를 들어 데이터 구조의 표시가 메모리 서브시스템(14)에 이전에 저장되도록 미리 정해질 수 있다. 추가적으로 또는 대안적으로, 데이터 레코드(86)의 데이터 구조는 예를 들어 데이터 레코드(86)에 포함된 메타데이터(예를 들어, 헤더 데이터), 및/또는 데이터 레코드(86)와 함께 수신된 별개의 제어 신호(예를 들어, 명령 또는 요청)를 통해 명시적으로 나타날 수 있다.
데이터 구조에 적어도 부분적으로 기초하여, 메모리 제어기(26)는 데이터 레코드(86)의 데이터 필드(88)가 나타내는 값을 결정하기 위해 데이터 레코드(86)의 비트 위치를 판독할 수 있다. 예를 들어, 데이터 구조가 이름 필드(88)(예를 들어, 제1 데이터 필드(88A))를 나타내는 비트 [0, X]를 할당하는 경우, 메모리 제어기(26)는 데이터 레코드(86)의 비트 [0, X]를 판독함으로써 이름 필드(88)의 값을 결정할 수 있다. 추가적으로, 데이터 구조가 거리 어드레스 필드(88)를 나타내는 비트 [X+1, Y]를 할당하는 경우, 메모리 제어기(26)는 데이터 레코드(86)의 비트 [X+1, Y]를 판독함으로써 어드레스 필드(88)의 값을 결정할 수 있다. 더욱이, 데이터 구조가 우편 번호 필드(예를 들어, F번째 데이터 필드(88F))를 나타내는 비트 [Y+1, Z]를 할당하는 경우, 메모리 제어기(26)는 데이터 레코드(86)의 비트 [Y+1, Z]를 판독함으로써 우편 번호 필드(88)의 값을 결정할 수 있다.
그 저장 위치 및 그 데이터 필드(88)가 나타내는 값에 적어도 부분적으로 기초하여, 메모리 제어기(26)는 데이터 레코드(86)에 대응하는 (예를 들어, 새로운) 색인 항목(102)을 생성할 수 있다(프로세스 블록(116)). 전술한 바와 같이, 일부 실시형태에서, 색인 항목(102)은 대응하는 데이터 레코드(86)의 저장 위치, 및 데이터 레코드(86)에 포함된 대응하는 데이터 필드(88)의 값을 나타낼 수 있다. 예를 들어, 메모리 제어기(26)는 데이터 레코드(86)의 저장 위치 및 그 이름 필드(88)의 값을 나타내기 위한 이름 색인 항목(102)을 생성할 수 있다. 추가적으로, 메모리 제어기(26)는 데이터 레코드(86)의 저장 위치 및 그 거리 어드레스 필드(88)의 값을 나타내기 위한 거리 어드레스 색인 항목을 생성할 수 있다. 더욱이, 메모리 제어기(26)는 데이터 레코드(86)의 저장 위치 및 그 우편 번호 필드(88)의 값을 나타내기 위한 우편 번호 색인 항목을 생성할 수 있다. 어쨌든, 위에서 설명된 바와 같이, 정렬된 액세스를 제공하기 위해, 색인 테이블(90)은 예를 들어 하나 이상의 새로운 색인 항목(102N)을 추가하도록 업데이트될 수 있다.
예시를 돕기 위해, 오름차순으로 정렬된 색인 테이블(90)을 생성 및/또는 업데이트하기 위한 프로세스(120)의 일례가 도 9에 설명되어 있다. 일반적으로, 프로세스(120)는 현재 색인 항목을 수신하고(프로세스 블록 (122)), 다른 색인 항목을 수신하고(프로세스 블록(124)), 다른 데이터 필드 값이 현재 데이터 필드 값보다 큰지 여부를 결정하고(결정 블록(126)), 및 다른 데이터 필드 값이 현재 데이터 필드 값보다 클 때 현재 색인 항목 위치에서 현재 색인 항목을 유지하는(프로세스 블록(128)) 것을 포함한다. 추가적으로, 다른 데이터 필드 값이 현재 데이터 필드 값보다 크지 않은 경우, 프로세스(120)는 현재 색인 항목을 그 다음 색인 항목 위치로 이동시키고(프로세스 블록(130)), 현재 색인 항목 위치에 다른 색인 항목을 저장하는(프로세스 블록(132)) 것을 포함한다.
특정 실시형태를 나타내는 특정 순서로 설명되었지만, 프로세스(120)는 임의의 적절한 순서로 수행될 수 있다는 것이 주목된다. 추가적으로, 프로세스(120)의 실시형태는 프로세스 블록을 생략하고/하거나 추가 프로세스 블록을 포함할 수 있다. 더욱이, 일부 실시형태에서, 프로세스(120)는 메모리 제어기(26)에 구현된 프로세서와 같은 처리 회로부를 사용하여 메모리 제어기(26)에 구현된 메모리와 같은 유형적인 비-일시적인 컴퓨터 판독 가능 매체에 저장된 명령어를 실행함으로써 적어도 부분적으로 구현될 수 있다.
따라서, 일부 실시형태에서, 메모리 제어기(26)(예를 들어, 메모리측 메모리 제어기(26B))는 색인 테이블(90)의 각 색인 항목 위치에 현재 저장된 색인 항목(102)을, 예를 들어, 색인 테이블 메모리 어레이(100)로부터 대응하는 항목 유닛(104)을 통해 수신할 수 있다(프로세스 블록(122)). 설명을 돕기 위해, 도 7과 관련하여, 제1 항목 유닛(104A)은 제1 색인 테이블(90A)의 제1 색인 항목 위치에 현재 저장된 제1 색인 항목(102A)을 제1 메모리 셀 열(84A)로부터 수신할 수 있고, 제1 색인 항목(102A)을 레지스터(106)에 저장할 수 있다. 추가적으로, 제2 항목 유닛(104B)은 제1 색인 테이블(90A)의 제2 색인 항목 위치에 현재 저장된 제2 색인 항목(102B)을 제2 메모리 셀 열(84B)로부터 수신할 수 있고, 제2 색인 항목(102B)을 레지스터(106)에 저장할 수 있다.
도 9의 프로세스(120)로 돌아가면, 현재 색인 항목(102)에 추가하여, 메모리 제어기(26)는 다른 색인 항목(102)을 수신할 수 있다(프로세스 블록(135)). 일부 실시형태에서, 다른 색인 항목(102)은 대응하는 색인 테이블(90)에 추가될 새로운 색인 항목(102N)일 수 있다. 추가적으로 또는 대안적으로, 다른 색인 항목(102)은 다른 항목 유닛(104)으로부터 수신된 (예를 들어, 이동된) 색인 항목(102)일 수 있다. 설명을 돕기 위해, 도 7과 관련하여, 예를 들어, 제1 항목 유닛(104A)이 새로운 색인 항목(102N)에 나타난 데이터 필드(88)의 값이 제1 색인 항목(102A)에 나타난 데이터 필드(88)의 값보다 크지 않다고 결정할 때, 제2 항목 유닛(104B)은 제1 항목 유닛(104A)으로부터 제1 색인 항목(102A)을 수신할 수 있다.
도 9의 프로세스(120)로 돌아가면, 메모리 제어기(26)는 다른 색인 항목(102)에 나타난 데이터 필드(88)의 값이 현재 색인 항목(102)에 나타난 데이터 필드(88)의 값보다 큰지를 결정할 수 있다(결정 블록(126)). 예를 들어, 도 7과 관련하여, 제1 항목 유닛(104A)은 제1 색인 항목(102A)에 나타난 데이터 필드(88)의 값을 비교 논리 회로부(108)를 통해 새로운 색인 항목(102N)에 나타난 데이터 필드(88)의 값과 비교할 수 있다. 추가적으로, 제1 색인 항목(102A)이 제2 항목 유닛(104B)으로 이동될 때, 제2 항목 유닛(104B)은 제1 색인 항목(102A)에 나타난 데이터 필드(88)의 값을 비교 논리 회로부(108)를 통해 제2 색인 항목(102B)에 나타난 데이터 필드(88)의 값과 비교할 수 있다. 한편, 제1 색인 항목(102A)이 제2 항목 유닛(104B)으로 이동되지 않은 경우, 제2 항목 유닛(104B)은 새로운 색인 항목(102N)에 나타난 데이터 필드(88)의 값을 비교 논리 회로부(108)를 통해 제2 색인 항목(102B)에 나타난 데이터 필드(88)의 값과 비교할 수 있다.
어쨌든, 도 9의 프로세스(120)로 돌아가면, 메모리 제어기(26)는 다른 색인 항목(102)에 나타난 다른 데이터 필드 값이 현재 색인 항목(102)에 나타난 현재 데이터 필드 값보다 클 때 현재 색인 항목(102)을 현재 색인 항목 위치에 유지할 수 있다(프로세스 블록(128)). 한편, 다른 데이터 필드 값이 현재 데이터 필드 값보다 크지 않은 경우, 메모리 제어기(26)는 현재 색인 항목(102)을 그 다음 색인 항목 위치로 이동시키고(프로세스 블록(130)), 현재 색인 항목 위치에 다른 색인 항목을 저장할 수 있다(프로세스 블록(132)). 예를 들어, 도 7과 관련하여, 제1 항목 유닛(104A)은 새로운 색인 항목(102N)에 나타난 데이터 필드 값이 제1 색인 항목(102A)에 나타난 데이터 필드 값보다 크지 않은 경우 제1 색인 항목(102A)을 제2 항목 유닛(104B)에 출력할 수 있고, 이에 의해, 제1 색인 항목(102A)을 제1 색인 테이블(90A)의 제1 색인 항목 위치로부터 제2 (예를 들어, 그 다음) 색인 항목 위치로 이동시킬 수 있다. 추가적으로, 새로운 색인 항목(102N)에 나타난 데이터 필드 값이 제1 색인 항목(102A)에 나타난 데이터 필드 값보다 크지 않은 경우, 제1 항목 유닛(104A)은 레지스터(106)를 새로운 색인 항목(102N)으로 덮어쓸 수 있고, 이에 의해 새로운 색인 항목(102N)을 제1 색인 테이블(90A)의 제1 색인 항목 위치에 저장할 수 있다. 이러한 방식으로, 메모리 서브시스템(14)은 예를 들어, 메모리 서브시스템(14)에 저장된 데이터에 정렬된 액세스를 제공하기 위해 색인 테이블(90)을 생성 및/또는 업데이트할 수 있다.
그러나, 전술한 바와 같이, 색인 테이블(90)을 생성 및/또는 업데이트하기 위해, 메모리 서브시스템(14)은 데이터 처리 동작을 수행할 수 있다. 데이터 처리 동작의 계산 복잡성이 (예를 들어, 누설 전류를 생성할 가능성을 줄이기 위해) 제한될 수 있지만, 적어도 일부 경우에 데이터 처리 동작의 수행은 동시적이지 않다. 이러한 데이터 처리 동작이 데이터 검색 대기 시간에 영향을 미칠 가능성을 줄이기 위해, 일부 실시형태에서, 메모리 서브시스템(14)(예를 들어, 메모리측 메모리 제어기(26B))은 색인 테이블(90)을 생성 및/또는 업데이트할 수 있는 반면, 처리 서브시스템은 대응하는 데이터 레코드(86)를 표적화하지 않을 것으로 예상된다. 예를 들어, 메모리 서브시스템(14)은 하나 이상의 데이터 레코드(86)가 주 메모리 어레이(66)에 기입되는 것에 응답하여 색인 테이블(90)을 생성 및/또는 업데이트할 수 있다.
예시를 돕기 위해, 데이터 레코드(86)를 저장하고 데이터 레코드에 액세스를 제공하기 위해 메모리 서브시스템(14)을 동작시키기 위한 프로세스(134)의 일례가 도 10에 설명되어 있다. 일반적으로, 프로세스(134)는 데이터 레코드를 수신하고(프로세스 블록(135)), 데이터 레코드를 블록으로 메모리 서브시스템에 저장하고(프로세스 블록(136)), 스트라이딩 액세스가 요구되는지 여부를 결정하고(결정 블록(138)), 및 정렬된 액세스 포인터를 결정하는(프로세스 블록(142)) 것을 포함한다. 추가적으로, 스트라이딩 액세스가 요구될 때, 프로세스(134)는 스트라이딩 액세스 포인터를 결정하는(프로세스 블록(140)) 것을 포함한다.
특정 실시형태를 나타내는 특정 순서로 설명되었지만, 프로세스(134)는 임의의 적절한 순서로 수행될 수 있다는 것이 주목된다. 추가적으로, 프로세스(134)의 실시형태는 프로세스 블록을 생략하고/하거나 추가 프로세스 블록을 포함할 수 있다. 더욱이, 일부 실시형태에서, 프로세스(134)는 메모리 제어기(26)에 구현된 프로세서와 같은 처리 회로부를 사용하여 메모리 제어기(26)에 구현된 메모리와 같은 유형적인 비-일시적인 컴퓨터 판독 가능 매체에 저장된 명령어를 실행함으로써 적어도 부분적으로 구현될 수 있다.
어쨌든, 메모리 서브시스템(14)은 메모리 디바이스(18)에 저장하기 위한 데이터 레코드(86)를 예를 들어 처리 서브시스템(12)으로부터 수신할 수 있다(프로세스 블록(135)). 데이터 레코드(86)를 메모리 디바이스(18)에 저장하기 위해, 일부 실시형태에서, 메모리 서브시스템(14)은 할당 함수를 포함하는 애플리케이션 프로그래밍 인터페이스(API)를 제공할 수 있다. 할당 함수의 일례는 다음과 같다:
Alloc(Ptr, RcdCount, RcdSize, IndexCount, [IndexField]*) (1)
여기서, Alloc()은 할당 함수이고, Ptr은 메모리 서브시스템(14)의 시작 저장 위치에 대한 포인터이고, RcdCount는 블록에 포함될 데이터 레코드(86)의 수이고, RcdSize는 각 데이터 레코드(86)의 크기이며, IndexCount는 색인될 데이터 필드(88)의 수이고, [IndexField]*는 색인될 하나 이상의 특정 데이터 필드(88)를 나타낸다.
다시 말해, 일부 실시형태에서, 메모리 서브시스템(14)(예를 들어, 메모리측 메모리 제어기(26B))은 수신된 데이터 레코드(86)에 의해 사용되는 데이터 구조에 적어도 부분적으로 기초하여 할당 함수를 실행할 수 있다(프로세스 블록(142)). 위에서 설명한 바와 같이, 일부 실시형태에서, 데이터 레코드(86)의 데이터 구조는 예를 들어 데이터 구조의 표시가 메모리 서브시스템(14)에 이전에 저장되도록 미리 정해질 수 있다. 추가적으로 또는 대안적으로, 데이터 레코드(86)의 데이터 구조는 예를 들어 데이터 레코드(86)에 포함된 메타데이터(예를 들어, 헤더 데이터), 및/또는 데이터 레코드(86)와 함께 수신된 별개의 제어 신호(예를 들어, 명령 또는 요청)를 통해 명시적으로 나타날 수 있다. 어쨌든, 할당 함수를 실행함으로써, 메모리 서브시스템(14)은 예를 들어, 주 메모리(66)에 데이터 레코드(86)의 저장을 위해 메모리 어드레스의 인접한 블록(예를 들어, &Ptr + (RcdCount * RcdSize))을 할당할 수 있다. 따라서, 일부 실시형태에서, 메모리 서브시스템(14)은 데이터 레코드(86)를 수신한 것에 응답하여 할당 함수를 자동으로 실행할 수 있다.
메모리 서브시스템(14)은 예를 들어 할당 함수를 실행한 것에 응답하여 자동으로 데이터 레코드(86)를 할당된 메모리 어드레스에 저장할 수 있다(프로세스 블록(136)). 일부 실시형태에서, 메모리 서브시스템(14)은 데이터 레코드(86)를 인접한 블록으로 저장할 수 있다. 다시 말해, 이러한 실시형태에서, 메모리 서브시스템(14)은 연속적인 저장 위치(예를 들어, 메모리 어드레스)에 데이터 레코드를 저장할 수 있다. 추가적으로, 일부 실시형태에서, 메모리 서브시스템(14)은 예를 들어 대응하는 데이터 레코드(86)가 메모리 서브시스템(14)(예를 들어, 주 메모리 어레이(66))에 저장되는 것에 응답하여 하나 이상의 색인 항목(102)을 자동으로 생성할 수 있다.
일부 실시형태에서, 데이터 레코드(86)에 대해 생성된 색인 항목(102)의 수는 할당 함수에 입력된 IndexCount 파라미터의 값과 동일할 수 있다. 추가적으로, 일부 실시형태에서, 데이터 레코드(86)에 대해 생성된 색인 항목(102)은 할당 함수에 입력된 [IndexField]* 파라미터가 나타내는, 특정 데이터 필드(88)들 중 다른 것에 각각 대응할 수 있다. 더욱이, 일부 실시형태에서, 메모리 서브시스템(14)은 예를 들어 대응하는 색인 항목(102)이 생성되는 것에 응답하여 하나 이상의 색인 테이블(90)을 자동으로 생성 및/또는 업데이트할 수 있다.
저장된 데이터에 스트라이딩 액세스를 제공하기 위해, 일부 실시형태에서, 메모리 서브시스템(14)은 스트라이딩 액세스 포인터를 결정할 수 있다(프로세스 블록(140)). 전술한 바와 같이, 메모리 서브시스템(14)은 하나 이상의 데이터 레코드(86)의 특정 부분(예를 들어, 하나 이상의 데이터 필드(88))을 식별함으로써 스트라이딩 액세스를 제공할 수 있다. 일부 실시형태에서, 스트라이딩 액세스 포인터는 메모리 서브시스템(14)에서 데이터 레코드(86)의 대응하는 부분의 저장 위치를 식별할 수 있다. 예를 들어, 이름 스트라이딩 액세스 포인터는 제1 데이터 레코드(86A), 제2 데이터 레코드(86B) 등에서 이름 필드(88)의 저장 위치를 식별할 수 있다. 추가적으로 또는 대안적으로, 우편 번호 스트라이딩 액세스 포인터는 제1 데이터 레코드(86A), 제2 데이터 레코드(86B) 등에서 우편 번호 필드(88)의 저장 위치를 식별할 수 있다.
스트라이딩 액세스 포인터를 결정하기 위해, 일부 실시형태에서, 메모리 서브시스템(14)은 스트라이딩 액세스 함수를 포함하는 애플리케이션 프로그래밍 인터페이스(API)를 제공할 수 있다. 스트라이딩 액세스 함수의 일례는 다음과 같다:
StPtr = Striding(Ptr, FieldOffset, FieldLength, StrideLength) (2)
여기서, StPtr은 스트라이딩 액세스 포인터이고, Striding()은 스트라이딩 액세스 함수이고, Ptr은 메모리 서브시스템(14)의 시작 저장 위치에 대한 포인터이고, FieldOffset은 데이터 레코드(86)에서 표적 데이터 필드(88)의 시작 비트 위치이며, FieldLength는 표적 데이터 필드(88)의 크기이고, 및 StrideLength는 연속적인 데이터 레코드(86) 사이의 스트라이드 길이이다. 다시 말해, 일부 실시형태에서 메모리 서브시스템(14)(예를 들어, 메모리측 메모리 제어기(26B))은 수신된 데이터 레코드(86)에 의해 사용되는 데이터 구조에 적어도 부분적으로 기초하여 스트라이딩 액세스 함수를 실행하여, 예를 들어, 각 데이터 레코드(86)에 포함된 데이터 필드(88)에 각각 대응하는, 하나 이상의 스트라이딩 액세스 포인터를 결정할 수 있다(프로세스 블록(144)). 스트라이딩 액세스 포인터의 결정이 데이터 검색 대기 시간에 영향을 미칠 가능성을 줄이기 위해, 일부 실시형태에서, 메모리 서브시스템(14)은 예를 들어 하나 이상의 데이터 레코드(86)가 메모리 서브시스템(14)(예를 들어, 주 메모리 어레이(66))에 저장되는 것에 응답하여 스트라이딩 액세스 함수를 자동으로 실행할 수 있다.
추가적으로 또는 대안적으로, 저장된 데이터에 정렬된 액세스를 제공하기 위해, 메모리 서브시스템(14)은 정렬된 액세스 포인터를 결정할 수 있다(프로세스 블록(142)). 전술한 바와 같이, 메모리 서브시스템(14)은 예를 들어 어드레스 순서와 다른 정렬된 순서로 데이터 레코드(86)를 식별함으로써 정렬된 액세스를 제공할 수 있다. 일부 실시형태에서, 정렬된 액세스 포인터는 정렬된 순서로 메모리 서브시스템(14)에서 데이터 레코드(86)의 저장 위치를 식별할 수 있다. 예를 들어, 이름 정렬된 액세스 포인터는 각 데이터 레코드(86)에 포함된 이름 필드(88)의 값을 정렬한 것에 기초한 순서로 데이터 레코드(86)의 저장 위치를 식별할 수 있다. 추가적으로 또는 대안적으로, 우편 번호로 정렬된 액세스 포인터는 각 데이터 레코드(86)에 포함된 우편 번호 필드(88)의 값을 정렬한 것에 기초한 순서로 데이터 레코드(86)의 저장 위치를 식별할 수 있다. 다시 말해, 일부 실시형태에서, 정렬된 액세스 포인터는 예를 들어 색인 테이블 메모리 어레이(100)에서 대응하는 색인 테이블(90)의 저장 위치를 식별할 수 있다.
정렬된 액세스 포인터를 결정하기 위해, 일부 실시형태에서, 메모리 서브시스템(14)은 정렬된 액세스 함수를 포함하는 애플리케이션 프로그래밍 인터페이스(API)를 제공할 수 있다. 정렬된 액세스 함수의 일례는 다음과 같다:
SoPtr = Sorted(Ptr, IndexField) (3)
여기서, SoPtr은 정렬된 액세스 포인터이고, Sorted()는 정렬된 액세스 함수이고, Ptr은 메모리 서브시스템(14)의 시작 저장 위치에 대한 포인터이고, IndexField는 색인될 특정 데이터 필드(88)를 나타낸다. 따라서, 일부 실시형태에서, 메모리 서브시스템(14)(예를 들어, 메모리측 메모리 제어기(26B))은 정렬된 액세스 함수를 실행하여, 예를 들어, 하나 이상의 데이터 레코드(86)에 포함된 색인 테이블(90) 및/또는 데이터 필드(88)에 각각 대응하는 하나 이상의 정렬된 액세스 포인터를 결정할 수 있다(프로세스 블록(146)). 정렬된 액세스 포인터를 결정하는 것이 데이터 검색 대기 시간에 영향을 미칠 가능성을 줄이기 위해, 일부 실시형태에서, 메모리 서브시스템(14)은 예를 들어 하나 이상의 색인 테이블(90)이 생성 및/또는 업데이트되는 것에 응답하여 정렬된 액세스 함수를 자동으로 실행할 수 있다.
이러한 방식으로, 메모리 서브시스템(14)은 예를 들어, 메모리 서브시스템(14)(예를 들어, 주 메모리 어레이(66))에 데이터가 저장되는 것에 응답하여 데이터 처리 동작을 자동으로 수행함으로써, 데이터 처리 동작이 데이터 검색 대기 시간에 영향을 미칠 (예를 들어, 대기 시간을 증가시킬) 가능성을 감소시키며 데이터 처리 동작을 수행할 수 있다. 실제로, 일부 실시형태에서, 이러한 방식으로 데이터 처리 동작을 구현하면, 예를 들어, 메모리 서브시스템(14)이 스트라이딩 액세스 포인터 및/또는 정렬된 액세스 포인터를 사용하여 표적 데이터를 식별할 수 있음으로써, 후속 데이터 검색 대기 시간을 개선할 (예를 들어, 감소시킬) 수 있다. 더욱이, 전술한 바와 같이, 메모리 서브시스템(14)에 어드레스 관리 기능을 제공하면, 예를 들어, 컴퓨팅 시스템(10)의 메모리 서브시스템(14)과 처리 서브시스템(12) 사이의 데이터 통신을 감소시킴으로써, 컴퓨팅 시스템(10)의 동작 효율을 향상시킬 수 있다.
예시를 돕기 위해, 메모리측 메모리 제어기(26B)와 같은 메모리 제어기(26)를 동작시키기 위한 프로세스(148)의 일례가 도 11에 설명되어 있다. 일반적으로, 프로세스(148)는 메모리 액세스 요청을 수신하고(프로세스 블록(150)), 표적 데이터를 결정하고(프로세스 블록(152)), 표적 데이터가 주 메모리 어레이 미스를 초래하는지 여부를 결정하고(결정 블록(154)), 표적 데이터를 처리 서브시스템에 출력하는(프로세스 블록(158)) 것을 포함한다. 추가적으로, 표적 데이터가 주 메모리 어레이 미스를 초래할 때, 프로세스(148)는 비-휘발성 메모리로부터 표적 데이터를 검색하는(프로세스 블록(156)) 것을 포함한다.
특정 실시형태를 나타내는 특정 순서로 설명되었지만, 프로세스(148)는 임의의 적절한 순서로 수행될 수 있다는 것이 주목된다. 추가적으로, 프로세스(148)의 실시형태는 프로세스 블록을 생략하고/하거나 추가 프로세스 블록을 포함할 수 있다. 더욱이, 일부 실시형태에서, 프로세스(148)는 메모리 제어기(26)에 구현된 프로세서와 같은 처리 회로부를 사용하여 메모리 제어기(26)에 구현된 메모리와 같은 유형적인 비-일시적인 컴퓨터 판독 가능 매체에 저장된 명령어를 실행함으로써 적어도 부분적으로 구현될 수 있다.
따라서, 일부 실시형태에서, 메모리 제어기(26)(예를 들어, 메모리측 메모리 제어기(26B))는 컴퓨팅 시스템(10)의 처리 회로부(16)에 의해 현재 표적화된 데이터를 식별하는 메모리 액세스 요청을, 예를 들어, 처리 회로부(16) 또는 프로세서측 메모리 제어기(26A)로부터 수신할 수 있다(프로세스 블록(150)). 일부 실시형태에서, 메모리 액세스 요청은 가상 메모리 어드레스를 통해 표적 데이터를 식별할 수 있다. 추가적으로 또는 대안적으로, 메모리 액세스 요청은 메모리 서브시스템(14)에서 표적 데이터의 저장 위치를 나타내는 물리적 메모리 어드레스를 통해 표적 데이터를 식별할 수 있다. 예를 들어, 물리적 메모리 어드레스는 표적 데이터가 저장된 주 메모리 어레이(66)의 메모리 셀 행(78)과 메모리 셀 열(84)을 식별하는 행 어드레스와 열 어드레스 쌍을 포함할 수 있다.
이와 같이, 메모리 액세스 요청에 적어도 부분적으로 기초하여, 메모리 제어기(26)는 처리 회로부(16)에 의해 현재 표적화된 데이터를 결정할 수 있다(프로세스 블록(160)). 일부 실시형태에서, 메모리 제어기(26)는 추가적으로 또는 대안적으로 처리 회로부에 의해 후속적으로 표적화될 데이터를 예측할 수 있다(프로세스 블록(162)). 전술한 바와 같이, 적어도 일부 경우에, 후속적으로 표적화될 것으로 예상되는 데이터를 예측적으로 식별하면, 예를 들어, 후속 메모리 액세스 요청을 제거하고, 데이터가 실제로 표적화될 때 검색 시간을 줄임으로써 컴퓨팅 시스템(10)의 동작 효율을 개선할 수 있다.
예시를 돕기 위해, 후속적으로 표적화될 것으로 예상되는 데이터를 예측적으로 식별하기 위한 프로세스(166)의 일례가 도 12에 설명되어 있다. 일반적으로, 프로세스(166)는 현재 표적화된 데이터에 기초하여 데이터 액세스 패턴을 결정하고(프로세스 블록(168)), 제어 구간에 걸쳐 데이터 액세스 패턴을 외삽하고(프로세스 블록(170)), 외삽된 데이터 액세스 패턴에 기초하여 후속적으로 표적화된 데이터를 예측하는(프로세스 블록(172)) 것을 포함한다.
특정 실시형태를 나타내는 특정 순서로 설명되었지만, 프로세스(166)는 임의의 적절한 순서로 수행될 수 있다는 것이 주목된다. 추가적으로, 프로세스(166)의 실시형태는 프로세스 블록을 생략하고/하거나 추가 프로세스 블록을 포함할 수 있다. 더욱이, 일부 실시형태에서, 프로세스(166)는 메모리 제어기(26)에 구현된 프로세서와 같은 처리 회로부를 사용하여 메모리 제어기(26)에 구현된 메모리와 같은 유형적인 비-일시적인 컴퓨터 판독 가능 매체에 저장된 명령어를 실행함으로써 적어도 부분적으로 구현될 수 있다.
따라서, 일부 실시형태에서, 메모리 제어기(26)(예를 들어, 메모리측 메모리 제어기(26B))는 현재 표적화된 데이터에 적어도 부분적으로 기초하여 데이터 액세스 패턴을 결정할 수 있다(프로세스 블록(168)). 전술한 바와 같이, 메모리 액세스 요청은 예를 들어 처리 서브시스템(12)에서 구현된 처리 회로부(16)에 의해 현재 표적화된 데이터를 식별할 수 있다. 다시 말해, 일부 실시형태에서, 메모리 제어기(26)는 하나 이상의 대응하는 메모리 액세스 요청에 적어도 부분적으로 기초하여 데이터 액세스 패턴을 결정할 수 있다.
추가적으로, 전술한 바와 같이, 일부 실시형태에서, 처리 서브시스템(12)은 단일 메모리 액세스 요청을 사용하여 다수의 데이터 레코드(86)로부터 데이터를 식별할 수 있다. 예를 들어, 제1 메모리 액세스 요청은 표적 액세스 색인 및 표적 색인 항목 위치의 벡터 [N, M]를 나타낼 수 있다. 따라서, 메모리 제어기(26)는 제1 메모리 액세스 요청이 표적 액세스 색인에 대응하는 색인 테이블(90)의 N+1번째 색인 항목 위치 내지 M+1번째 색인 항목 위치의 색인 항목(102)에 대응하는 데이터 레코드(86)를 표적화하는 제1 데이터 액세스 패턴을 초래한다고 결정할 수 있다. 추가적으로 또는 대안적으로, 제2 메모리 액세스 요청은 데이터 레코드(86)의 블록의 저장 위치, 및 데이터 레코드(86) 각각의 표적화된 데이터 필드(88)를 나타낼 수 있다. 따라서, 메모리 제어기(26)는 제2 메모리 액세스 요청이 블록에 저장된 각 데이터 레코드(86)의 특정 데이터 필드(88)를 표적화하는 제2 데이터 액세스 패턴을 초래한다고 결정할 수 있다.
어쨌든, 메모리 제어기(26)는 다가오는 제어 구간에 걸쳐 데이터 액세스 패턴을 외삽할 수 있다(프로세스 블록(170)). 일부 실시형태에서, 제어 구간은 현재 시간으로부터, 다른 메모리 액세스 요청이 수신될 것으로 예상되는 향후 시간까지의 시간 기간(예를 들어, 하나 이상의 클록 사이클)일 수 있다. 다시 말해, 데이터 액세스 패턴을 외삽함으로써, 메모리 제어기(26)는 후속적으로 표적화될 데이터를 예측할 수 있다(프로세스 블록(172)). 예를 들어, 제1 메모리 액세스 요청으로부터 발생한 제1 데이터 액세스 패턴을 외삽함으로써, 메모리 제어기(26)는 처리 회로부(16)가 표적 액세스 색인에 대응하는 색인 테이블(90)의 색인 항목 위치의 벡터 [M+1, 2M-N+1]에 대응하는 데이터 레코드(86)를 후속적으로 표적화할 것이라고 예측할 수 있다.
외삽된 데이터 액세스 패턴에 추가하여, 일부 실시형태에서, 메모리 제어기(26)는 메모리 서브시스템(14)에 저장된 데이터 레코드(86)에 의해 사용되는 데이터 구조에 적어도 부분적으로 기초하여 후속적으로 표적화될 데이터를 예측할 수 있다. 예를 들어, 제2 메모리 액세스 요청으로부터 발생한 제2 데이터 액세스 패턴을 외삽함으로써, 메모리 제어기(26)는 처리 회로부(16)가 블록에 저장된 데이터 레코드(86) 각각의 다른 데이터 필드(88)를 후속적으로 표적화할 것이라고 예측할 수 있다. 추가적으로, 데이터 레코드(86)에 의해 사용되는 데이터 구조에 적어도 부분적으로 기초하여, 메모리 제어기(26)는 다른 데이터 필드(88)는 제2 메모리 액세스 요청에 의해 표적화된, 데이터 필드(88)에 인접한 데이터 필드(88)일 것이라고 예측할 수 있다. 이러한 방식으로, 메모리 서브시스템(14)은, 예를 들어, 처리 서브시스템(12)에서 구현된 처리 회로부(16)에 의해 후속적으로 표적화될 것으로 예상되는 데이터를 예측적으로 식별할 수 있다.
도 11의 프로세스(148)로 돌아가면, 메모리 제어기(26)는 (예를 들어, 현재 및/또는 예측된) 표적 데이터가 주 메모리 어레이 미스를 초래하는지 여부를 결정할 수 있다(결정 블록(154)). 위에서 설명한 바와 같이, 일부 실시형태에서, 메모리 제어기(26)는 데이터와 연관된 (예를 들어, 가상 및/또는 물리적) 메모리 어드레스에 적어도 부분적으로 기초하여 메모리 서브시스템(14)에서 데이터의 저장 위치를 결정할 수 있다. 예를 들어, 대응하는 메모리 어드레스가 주 메모리 어레이(66)에 구현될 때, 메모리 제어기(26)는 표적 데이터가 주 메모리 어레이 미스를 초래하지 않는다고 결정할 수 있고, 이에 따라 메모리 주 메모리 어레이(66)로부터 표적 데이터를 검색(예를 들어, 판독)하도록 서브시스템(14)에 명령할 수 있다. 한편, 대응하는 메모리 어드레스가 주 메모리 어레이(66) 중 임의의 것에 구현되지 않은 경우, 메모리 제어기(26)는 표적 데이터가 주 메모리 어레이 미스를 초래한다고 결정할 수 있고, 이에 따라 비-휘발성 메모리(64)로부터 표적 데이터를 검색(예를 들어, 판독)하도록 메모리 서브시스템(14)에 명령할 수 있다(프로세스 블록(156)).
어쨌든, 메모리 디바이스(18)로부터 검색한 후, 메모리 제어기(26)는 표적 데이터를 출시스템 버스(20)를 통해 처리 서브시스템(12)에 력하도록 메모리 서브시스템(14)에 명령할 수 있다(프로세스 블록(158)). 동작 효율을 더욱 향상시키기 위해, 일부 실시형태에서, 메모리 서브시스템(14)은 예를 들어 메모리 액세스 요청에 응답하여 자동으로 및/또는 처리 서브시스템(12)으로부터의 별개의 (예를 들어, 추가) 명령어 없이, 표적 데이터를 직접 프로세서측 캐시(22)에 저장할 수 있다(프로세스 블록(164)). 다시 말해, 일부 실시형태에서, 메모리 서브시스템(14)은 후속적으로 표적화될 것으로 예상되는 데이터를 직접 프로세서측 캐시(22)에 선제적으로 저장할 수 있고, 이는 적어도 일부 경우에, 데이터가 실제로 표적화될 때 프로세서측 캐시(22)로부터 데이터를 제공할 수 있음으로써 동작 효율을 더욱 향상시킬 수 있다.
그러나, 전술한 바와 같이, 처리 서브시스템(12)은 또한 예를 들어 프로세서측 메모리 제어기(26A)를 통해 프로세서측 캐시(22)에 데이터의 저장을 제어할 수 있다. 이와 같이, 일부 실시형태에서, 표적 데이터가 프로세서측 캐시(22)에 저장된 후, 메모리 제어기(26)는, 표적 데이터가 프로세서측 캐시(22)에 성공적으로 저장되어서 처리 및/또는 실행할 준비가 된 것을 나타내는 제어 신호를 처리 서브시스템(12)에 출력할 수 있다. 더욱이, 적어도 일부 경우에, 표적 데이터를 직접 프로세서측 캐시(22)에 저장하는 것은 처리 서브시스템(12)에서 구현된 데이터의 저장 제어와 충돌할 수 있다. 예를 들어, 후속적으로 표적화될 것으로 예상되는 데이터를 직접 프로세서측 캐시(22)에 예측적으로 저장하는 것은 처리 서브시스템(12)에 의해 여전히 사용되는 다른 데이터를 우연히 덮어쓸 수 있어서, 다른 데이터를 표적화할 때 프로세서측 캐시 미스가 발생할 수 있다. 이러한 충돌이 데이터 검색 대기 시간에 영향을 미칠 가능성을 줄이기 위해, 일부 실시형태에서, 메모리 서브시스템(14)은 표적 데이터를 직접 L3 프로세서측 캐시(22)와 같은 상위 캐시 레벨(30)에 구현된 프로세서측 캐시(22) 및/또는 K번째 캐시 레벨(30K)에 구현된 공유 프로세서측 캐시(34)에 저장할 수 있다. 이러한 방식으로, 메모리 서브시스템(14)은 표적 데이터를 처리 서브시스템(12)에 제공하도록 동작할 수 있다.
도 3의 프로세스(46)로 돌아가면, 처리 서브시스템(12)이 표적 데이터를 요청한 후, 메모리 제어기(26)(예를 들어, 프로세서측 메모리 제어기(26A))는 표적 데이터가 메모리 서브시스템(14)으로부터 수신되었는지 여부를 결정할 수 있다(결정 블록(58)). 동작 효율을 개선하기 위해, 일부 실시형태에서, 처리 회로부(16)는 처리 서브시스템(12)이 표적 데이터의 반환을 기다리는 동안 다른 동작을 계속 수행할 수 있다. 추가적으로, 일부 실시형태에서, 메모리 제어기(26)는 표적 데이터가 프로세서측 캐시(22)에 성공적으로 저장된 것을 나타내는 제어 신호가 메모리 서브시스템(14)으로부터 수신될 때 표적 데이터가 수신되었다고 결정할 수 있다.
어쨌든, 표적 데이터가 수신된 후, 메모리 제어기(26)는 예를 들어 프로세서측 캐시(22)로부터 표적 데이터를 처리 회로부(16)에 공급하도록 처리 서브시스템(12)에 명령할 수 있다(프로세스 블록(52)). 일부 실시형태에서, 프로세서측 캐시(22)는 표적 데이터와 연관될 것으로 예상되는 표적 태그 메타데이터 값과 일치하는 태그 메타데이터를 캐시 라인에 출력할 수 있다. 상위 레벨 캐시(예를 들어, 공유 프로세서측 캐시(34))에 저장될 때, 일부 실시형태에서, 표적 데이터는 처리 회로부(16)에 도달하기 전에 하나 이상의 하위 레벨 캐시(예를 들어, 개인용 프로세서측 캐시(32))를 통과할 수 있다.
본 발명의 하나 이상의 특정 실시형태가 본 명세서에 설명되고 대응하는 도면에 도시된다. 이들 설명된 실시형태는 현재 개시된 기술의 일례일 뿐이다. 추가적으로, 이러한 실시형태의 간결한 설명을 제공하기 위해, 실제 구현의 모든 특징이 본 명세서에서 설명된 것은 아닐 수 있다. 임의의 공학적 또는 설계 프로젝트에서와 같이 임의의 실제 구현을 수행할 때, 구현에 따라 다를 수 있는 시스템 관련 및 비즈니스 관련 제약 조건을 준수하는 것과 같은 개발자의 특정 목표를 달성하기 위해 수많은 구현 관련 결정을 내려야 하는 것으로 이해된다. 더욱이, 이러한 개발 노력은 복잡하고 시간 소모적일 수 있지만 그럼에도 불구하고 본 발명의 이점을 갖는 이 기술 분야에 통상의 지식을 가진 자에게는 일상적인 설계, 제작 및 제조 작업일 수 있는 것으로 이해된다.
본 발명의 다양한 실시형태의 요소를 도입할 때, 단수형 요소 및 "상기" 요소는 하나 이상의 요소가 존재하는 것을 의미하는 것으로 의도된다. "포함하는", "구비하는" 및 "갖는"이라는 용어는 개방형 용어인 것으로 의도되고, 나열된 요소 이외의 추가 요소가 있을 수 있는 것을 의미한다. 추가적으로, 본 발명의 "일 실시형태" 또는 "실시형태"라는 언급은 또한 인용된 특징을 포함하는 추가 실시형태의 존재를 배제하는 것으로 해석되도록 의도된 것이 아닌 것으로 이해된다.
위에서 설명된 특정 실시형태는 예로서 도시되었으며, 이러한 실시형태는 다양한 수정 및 대안적인 형태를 취할 수 있는 것으로 이해된다. 나아가 청구 범위는 개시된 특정 형태로 제한되는 것으로 의도된 것이 아니고 본 발명의 사상 및 범위 내에 있는 모든 수정, 등가물 및 대안을 포함하는 것으로 의도된 것으로 이해된다.

Claims (30)

  1. 하나 이상의 데이터 버스를 통해 프로세서에 통신 가능하게 결합되도록 구성된 메모리 시스템을 포함하는 장치로서, 상기 메모리 시스템은,
    제1 동작을 수행하도록 상기 프로세서에 구현된 처리 회로부에 의해 사용될 제1 데이터를 저장하도록 구성된 하나 이상의 메모리 디바이스; 및
    제1 메모리 제어기를 포함하고, 상기 제1 메모리 제어기는,
    상기 하나 이상의 데이터 버스를 통해 상기 제1 데이터의 반환을 요청하는 제1 메모리 액세스를 수신하고;
    상기 제1 메모리 액세스 요청에 응답하여,
    상기 제1 메모리 액세스 요청에 적어도 부분적으로 기초하여 상기 하나 이상의 메모리 디바이스에서 상기 제1 데이터의 제1 저장 위치를 결정하고;
    상기 프로세서에 구현된 상기 처리 회로부가 상기 제1 데이터에 적어도 부분적으로 기초하여 상기 제1 동작을 수행할 수 있도록, 상기 제1 데이터를 직접 상기 처리 회로부와 통합된 제1 프로세서측 캐시에 저장하도록 상기 메모리 시스템에 명령하고,
    상기 제1 데이터가 상기 제1 프로세서측 캐시에 저장된 것에 응답하여, 상기 제1 데이터가 상기 프로세서에 성공적으로 캐시되었음을 나타내는 제어 신호를 상기 하나 이상의 데이터 버스를 통해 상기 프로세서에 출력하도록 구성되고;
    상기 프로세서는, 상기 처리 회로부가 상기 제1 데이터에 적어도 부분적으로 기초하여 상기 제1 동작을 수행할 수 있도록, 상기 제어 신호가 상기 메모리 시스템으로부터 수신된 후 상기 제1 데이터를 상기 처리 회로부에 출력하도록 상기 제1 프로세서측 캐시에 명령하도록 구성된 제2 메모리 제어기를 포함하는, 장치.
  2. 제1항에 있어서, 상기 제1 메모리 제어기는 상기 프로세서로부터의 추가 명령어 없이 상기 제1 메모리 액세스 요청에 응답하여 상기 제1 데이터를 직접 상기 제1 프로세서측 캐시에 저장하도록 상기 메모리 시스템에 명령하도록 구성된, 장치.
  3. 삭제
  4. 제1항에 있어서,
    상기 프로세서는 상기 제1 프로세서측 캐시보다 더 낮은 캐시 레벨에서 구현된 제2 프로세서측 캐시를 포함하고;
    상기 메모리 시스템은, 상기 제1 프로세서측 캐시가 상기 제1 데이터의 제1 인스턴스(instance)를 저장할 수 있도록, 상기 제1 데이터를 상기 하나 이상의 데이터 버스를 통해 상기 제1 프로세서측 캐시로 출력함으로써 상기 제1 데이터를 직접 상기 제1 프로세서측 캐시에 저장하도록 구성되고;
    상기 제2 메모리 제어기는,
    상기 제2 프로세서측 캐시가 상기 제1 데이터의 제2 인스턴스를 저장할 수 있도록, 상기 제어 신호에 응답하여 상기 제1 데이터의 제1 인스턴스를 상기 제2 프로세서측 캐시에 출력하도록 상기 제1 프로세서측 캐시에 명령하고;
    상기 처리 회로부가 상기 제1 데이터에 적어도 부분적으로 기초하여 상기 제1 동작을 수행할 수 있도록, 상기 제1 데이터의 제2 인스턴스를 출력하도록 상기 제2 프로세서측 캐시에 명령하도록 구성된, 장치.
  5. 제1항에 있어서, 상기 제1 프로세서측 캐시는 레벨 3(L3) 캐시, 상기 프로세서에서 구현된 복수의 프로세서 코어에 의해 공유된 프로세서측 캐시, 또는 이 둘 모두를 포함하는, 장치.
  6. 제1항에 있어서, 상기 제1 메모리 액세스 요청에 응답하여, 상기 제1 메모리 제어기는,
    상기 처리 회로부에 의해 후속적으로 표적화될 제2 데이터를 예측하고;
    상기 처리 회로부가 상기 제2 데이터에 적어도 부분적으로 기초하여 상기 제1 동작, 제2 동작 또는 이 둘 다를 수행할 수 있도록, 상기 제2 데이터를 직접 상기 처리 회로부와 통합된 상기 제1 프로세서측 캐시에 저장하도록 상기 메모리 시스템에 명령하도록 구성된, 장치.
  7. 제6항에 있어서,
    상기 제1 데이터는 상기 하나 이상의 메모리 디바이스에 저장된 제1 데이터 레코드(data record)의 제1 데이터 필드(data field)에 나타난 제1 부분, 및 상기 하나 이상의 메모리 디바이스에 저장된 제2 데이터 레코드의 제1 데이터 필드에 나타난 제2 부분을 포함하고, 상기 제1 데이터 레코드 및 상기 제2 데이터 레코드는 각각 제2 데이터 필드를 포함하고;
    상기 제1 메모리 액세스 요청이 어드레스 순서로 상기 제1 데이터 필드의 반환을 요청하면, 상기 제1 메모리 제어기는, 상기 처리 회로부에 의해 후속적으로 표적화될 상기 제2 데이터가 상기 제1 데이터 레코드의 제2 데이터 필드에 나타난 부분, 및 상기 제2 데이터 레코드의 제2 데이터 필드에 나타난 다른 부분을 포함할 것이라고 예측하도록 구성된, 장치.
  8. 제6항에 있어서, 상기 프로세서는, 상기 제2 데이터가 상기 처리 회로부에 의해 실제로 표적화될 때,
    상기 제2 데이터가 프로세서측 캐시 미스(cache miss)를 초래하는지 여부를 결정하고;
    상기 처리 회로부가 상기 제2 데이터에 적어도 부분적으로 기초하여 상기 제1 동작, 상기 제2 동작 또는 이 둘 다를 수행할 수 있도록, 상기 제2 데이터가 상기 프로세서측 캐시 미스를 초래할 때 상기 제2 데이터의 반환을 요청하는 제2 메모리 액세스 요청을 상기 하나 이상의 데이터 버스를 통해 상기 메모리 시스템에 출력하도록
    구성된 제2 메모리 제어기를 포함하는, 장치.
  9. 제6항에 있어서,
    상기 제1 데이터는 상기 하나 이상의 메모리 디바이스에 저장된 제1 데이터 레코드의 데이터 필드에 나타난 제1 부분, 및 상기 하나 이상의 메모리 디바이스에 저장된 제2 데이터 레코드의 데이터 필드에 나타난 제2 부분을 포함하고;
    상기 하나 이상의 메모리 디바이스는 상기 데이터 필드를 포함하는 제3 데이터 레코드, 및 상기 데이터 필드를 포함하는 제4 데이터 레코드를 저장하도록 구성되고;
    상기 제1 메모리 제어기는,
    상기 제1 데이터 레코드의 데이터 필드에 나타난 제1 값, 상기 제2 데이터 레코드의 데이터 필드에 나타난 제2 값, 상기 제3 데이터 레코드의 데이터 필드에 나타난 제3 값, 및 상기 제4 데이터 레코드의 데이터 필드에 나타난 제4 값을 정렬한 것에 적어도 부분적으로 기초하여 정렬된 순서를 결정하고;
    상기 제1 메모리 액세스 요청이 상기 정렬된 순서에 따라 상기 제1 데이터의 반환을 요청할 때, 상기 처리 회로부에 의해 후속적으로 표적화될 상기 제2 데이터가 상기 제3 데이터 레코드의 데이터 필드에 나타난 부분, 및 상기 제4 데이터 레코드의 데이터 필드에 나타난 다른 부분을 포함한다고 예측하도록 구성된, 장치.
  10. 제9항에 있어서, 상기 제1 메모리 제어기는 상기 하나 이상의 메모리 디바이스에 상기 제1 데이터 레코드, 상기 제2 데이터 레코드, 상기 제3 데이터 레코드, 상기 제4 데이터 레코드, 또는 이들의 임의의 조합을 저장한 것에 응답하여 상기 정렬된 순서를 결정하도록 구성된, 장치.
  11. 제9항에 있어서, 상기 제1 메모리 제어기는,
    상기 정렬된 순서를 나타내는 색인 테이블(index table)을 결정하는 동작으로서, 상기 색인 테이블은,
    상기 제1 데이터 레코드에 대응하고 상기 색인 테이블의 제1 색인 항목(index entry) 위치에 나타난 제1 색인 항목;
    상기 제2 데이터 레코드에 대응하고 상기 색인 테이블의 제2 색인 항목 위치에 나타난 제2 색인 항목;
    상기 제3 데이터 레코드에 대응하고 상기 색인 테이블의 제3 색인 항목 위치에 나타난 제3 색인 항목; 및
    상기 제4 데이터 레코드에 대응하고 상기 색인 테이블의 제4 색인 항목 위치에 나타난 제4 색인 항목
    을 포함하는, 상기 색인 테이블을 결정하는 동작; 및
    상기 처리 회로부에 의해 후속적으로 표적화될 상기 제2 데이터가 상기 제3 데이터 레코드의 데이터 필드에 나타난 부분, 및 상기 제4 데이터 레코드의 데이터 필드에 나타난 다른 부분을 포함한다고 예측하는 동작으로서,
    상기 제1 메모리 액세스 요청이 상기 제1 색인 항목 위치 및 상기 제2 색인 항목 위치를 포함하는 표적화된 색인 항목 위치의 벡터를 나타낼 때, 상기 제3 색인 항목 위치 및 상기 제4 색인 항목 위치가 후속적으로 표적화될 것이라고 예측하는 동작;
    상기 색인 테이블의 상기 제3 색인 항목 위치를 판독함으로써 상기 제3 색인 항목을 식별하고, 상기 제4 색인 항목 위치를 판독함으로써 상기 제4 색인 항목을 식별하는 동작; 및
    상기 제3 색인 항목에 나타난 상기 제3 데이터 레코드의 저장 위치에 대한 포인터를 판독함으로써 상기 하나 이상의 메모리 디바이스의 상기 제3 데이터 레코드를 식별하고, 상기 제4 색인 항목에 나타난 상기 제4 데이터 레코드의 저장 위치에 대한 다른 포인터를 판독함으로써 상기 하나 이상의 메모리 디바이스의 상기 제4 데이터 레코드를 식별하는 동작을 수행하는 것에 의해,
    상기 처리 회로부에 의해 후속적으로 표적화될 상기 제2 데이터가 상기 제3 데이터 레코드의 데이터 필드에 나타난 부분, 및 상기 제4 데이터 레코드의 데이터 필드에 나타난 다른 부분을 포함한다고 예측하는 동작을 수행하도록 구성된, 장치.
  12. 제11항에 있어서, 상기 제1 메모리 제어기는, 상기 하나 이상의 메모리 디바이스의 상기 제3 데이터 레코드를 저장한 것에 응답하여,
    상기 하나 이상의 메모리 디바이스에서 상기 제3 데이터 레코드의 저장 위치에 대한 포인터, 및 상기 제3 데이터 레코드에 나타난 상기 데이터 필드의 제3 값을 나타내기 위한 상기 제3 색인 항목을 생성하고;
    상기 제3 색인 항목에 나타난 데이터 필드의 제3 값과, 상기 제1 색인 항목에 나타난 데이터 필드의 제1 값, 상기 제2 색인 항목에 나타난 데이터 필드의 제2 값, 상기 제4 색인 항목에 나타난 데이터 필드의 제4 값, 또는 이들의 임의의 조합을 비교함으로써 상기 제3 색인 항목을 포함하도록 상기 색인 테이블을 업데이트하도록 구성된, 장치.
  13. 메모리 서브시스템의 동작을 위한 방법으로서,
    메모리 제어기를 사용하여, 시스템 버스를 통해 동작을 수행하기 위해 처리 서브시스템에 의해 사용될 제1 데이터를 표적화하는 메모리 액세스 요청을 수신하는 단계;
    상기 메모리 제어기를 사용하여, 상기 메모리 액세스 요청에 적어도 부분적으로 기초하여 메모리 서브시스템에서 상기 제1 데이터를 식별하는 단계;
    상기 메모리 제어기를 사용하여, 상기 제1 데이터를 상기 시스템 버스를 통해 상기 처리 서브시스템에 구현된 하나 이상의 캐시에 출력하도록 상기 메모리 서브시스템에 명령하는 단계;
    상기 메모리 제어기를 사용하여, 상기 메모리 서브시스템에 저장된 상기 제1 데이터를 포함하는 복수의 데이터 레코드에 의해 사용되는 데이터 구조를 결정하는 단계;
    상기 메모리 제어기를 사용하여, 상기 복수의 데이터 레코드에 의해 사용되는 상기 데이터 구조에 적어도 부분적으로 기초하여 상기 메모리 서브시스템에 저장된 제2 데이터를 식별하는 단계; 및
    상기 동작을 수행하기 위해 상기 제2 데이터가 상기 처리 서브시스템에 의해 표적화되기 전에, 상기 메모리 제어기를 사용하여, 상기 제2 데이터를 상기 시스템 버스를 통해 상기 처리 서브시스템에 구현된 상기 하나 이상의 캐시에 출력하도록 상기 메모리 서브시스템에 명령하는 단계를 포함하는, 메모리 서브시스템의 동작을 위한 방법.
  14. 제13항에 있어서,
    상기 메모리 액세스 요청에 응답하여 그리고 상기 처리 서브시스템으로부터의 추가 명령어 없이 상기 제1 데이터를 상기 처리 서브시스템에 구현된 상기 하나 이상의 캐시에 저장하도록 상기 메모리 서브시스템에 명령하는 단계; 및
    상기 메모리 액세스 요청에 응답하여 그리고 상기 처리 서브시스템으로부터의 추가 명령어 없이 상기 제2 데이터를 상기 처리 서브시스템에 구현된 상기 하나 이상의 캐시에 저장하도록 상기 메모리 서브시스템에 명령하는 단계를 포함하는, 메모리 서브시스템의 동작을 위한 방법.
  15. 제13항에 있어서,
    상기 복수의 데이터 레코드에 의해 사용되는 상기 데이터 구조를 결정하는 단계는,
    상기 복수의 데이터 레코드의 각 데이터 레코드에서 제1 데이터 필드를 나타내는 데 사용되는 제1 하나 이상의 비트 위치를 결정하는 단계; 및
    상기 복수의 데이터 레코드의 각 데이터 레코드에서 제2 데이터 필드를 나타내는 데 사용되는 제2 하나 이상의 비트 위치를 결정하는 단계를 포함하고;
    상기 메모리 액세스 요청이 상기 복수의 데이터 레코드의 각 데이터 레코드에 나타난 상기 제1 데이터 필드의 반환을 요청하는 경우,
    상기 제2 데이터를 식별하는 단계는 상기 제2 데이터가 상기 복수의 데이터 레코드의 각 데이터 레코드에 나타난 상기 제2 데이터 필드를 포함한다고 예측하는 것을 포함하고;
    상기 제2 데이터를 출력하도록 상기 메모리 서브시스템에 명령하는 단계는 상기 복수의 데이터 레코드의 각 데이터 레코드에 나타난 상기 제2 데이터 필드를 상기 시스템 버스를 통해 출력하도록 상기 메모리 서브시스템에 명령하는 것을 포함하는, 메모리 서브시스템의 동작을 위한 방법.
  16. 제15항에 있어서, 상기 메모리 액세스 요청이 상기 메모리 서브시스템에서 상기 복수의 데이터 레코드의 저장 위치, 및 상기 복수의 데이터 레코드의 표적화된 부분으로서 상기 제1 데이터 필드를 식별할 때, 상기 메모리 제어기를 사용하여, 상기 메모리 액세스 요청이 상기 복수의 데이터 레코드의 각 데이터 레코드에 나타난 상기 제1 데이터 필드의 반환을 요청한다고 결정하는 단계를 포함하는, 메모리 서브시스템의 동작을 위한 방법.
  17. 제13항에 있어서,
    상기 복수의 데이터 레코드에 의해 사용되는 상기 데이터 구조를 결정하는 단계는 데이터 필드를 나타내는 데 사용되는 상기 복수의 데이터 레코드의 각 데이터 레코드에서의 하나 이상의 비트 위치를 결정하는 것을 포함하고;
    상기 메모리 액세스 요청이 상기 복수의 데이터 레코드에 나타난 상기 데이터 필드의 값들을 정렬한 것에 따라 상기 복수의 데이터 레코드로부터 데이터 레코드의 제1 서브세트의 반환을 요청할 때,
    상기 제2 데이터를 식별하는 단계는 상기 제2 데이터가 상기 데이터 레코드의 제1 서브세트와 중복하지 않는 상기 복수의 데이터 레코드로부터의 데이터 레코드의 제2 서브세트를 포함한다고 예측하는 단계를 포함하고;
    상기 제2 데이터를 출력하도록 상기 메모리 서브시스템에 명령하는 단계는 상기 시스템 버스를 통해 상기 복수의 데이터 레코드로부터 상기 데이터 레코드의 제2 서브세트를 출력하도록 상기 메모리 서브시스템에 명령하는 것을 포함하는, 메모리 서브시스템의 동작을 위한 방법.
  18. 제17항에 있어서, 상기 메모리 액세스 요청이 표적 액세스 색인으로서 상기 데이터 필드, 및 상기 데이터 레코드의 제1 서브세트의 하나의 데이터 레코드에 각각 대응하는 복수의 표적 색인 항목 위치를 식별할 때, 상기 메모리 제어기를 사용하여, 상기 메모리 액세스 요청이 상기 복수의 데이터 레코드에 나타난 상기 데이터 필드의 상기 값들을 정렬한 것에 따라 상기 복수의 데이터 레코드로부터 상기 데이터 레코드의 제1 서브세트의 반환을 요청한다고 결정하는 단계를 포함하는, 메모리 서브시스템의 동작을 위한 방법.
  19. 제17항에 있어서, 상기 메모리 액세스 요청이 상기 복수의 데이터 레코드에 나타난 상기 데이터 필드의 상기 값들을 정렬한 것에 따라 상기 데이터 레코드의 제1 서브세트의 반환을 요청할 때,
    상기 메모리 서브시스템에서 상기 제1 데이터를 식별하는 단계는,
    상기 메모리 액세스 요청에 나타난 표적 액세스 색인에 대응하는 색인 테이블을 식별하는 단계; 및
    상기 메모리 액세스 요청에 나타난 제1 복수의 표적 색인 항목 위치를 식별하는 단계를 포함하고;
    상기 제2 데이터를 식별하는 단계는,
    상기 처리 서브시스템이 상기 제1 복수의 표적 색인 항목 위치에 인접한 제2 복수의 표적 색인 항목 위치를 표적화할 것이라고 예측하는 단계; 및
    상기 색인 테이블에서 상기 제2 복수의 표적 색인 항목 위치를 판독함으로써 상기 제2 데이터가 상기 복수의 데이터 레코드로부터 상기 데이터 레코드의 제2 서브세트를 포함한다고 예측하는 단계를 포함하는, 메모리 서브시스템의 동작을 위한 방법.
  20. 제17항에 있어서,
    상기 메모리 제어기를 사용하여, 상기 복수의 데이터 레코드의 대응하는 데이터 레코드와 각각 연관된 복수의 색인 항목을 결정하는 단계로서, 상기 복수의 색인 항목의 색인 항목을 생성하는 것은, 대응하는 데이터 레코드를 상기 메모리 서브시스템에 저장한 것에 응답하여,
    상기 메모리 서브시스템에서 상기 대응하는 데이터 레코드의 저장 위치를 결정하고;
    상기 대응하는 데이터 레코드에서 상기 데이터 필드를 나타내기 위해 상기 데이터 구조에 의해 할당된 상기 하나 이상의 비트 위치를 판독함으로써 상기 대응하는 데이터 레코드에 나타난 데이터 필드의 값을 결정하고;
    상기 대응하는 데이터 레코드의 저장 위치 및 상기 대응하는 데이터 레코드에 나타난 상기 데이터 필드의 상기 값을 나타내기 위한 색인 항목을 생성하는 것을 포함하는, 상기 복수의 색인 항목을 결정하는 단계; 및
    상기 메모리 제어기를 사용하여, 상기 데이터 필드에 대응하는 색인 테이블을 결정하는 단계로서, 상기 색인 테이블은 상기 복수의 데이터 레코드에 나타난 상기 데이터 필드의 상기 값들을 정렬한 것에 적어도 부분적으로 기초하여 상기 색인 테이블의 색인 항목 위치에 각각 나타난 복수의 색인 항목을 포함하는, 상기 색인 테이블을 결정하는 단계를 포함하고;
    상기 메모리 액세스 요청이 상기 복수의 데이터 레코드에 나타난 상기 데이터 필드의 상기 값들을 정렬한 것에 따라 상기 데이터 레코드의 제1 서브세트의 반환을 요청할 때,
    상기 메모리 서브시스템에서 상기 제1 데이터를 식별하는 단계는 상기 색인 테이블에서 상기 메모리 액세스 요청에 의해 표적화된 제1 복수의 색인 항목 위치를 판독하는 것을 포함하고;
    상기 데이터 레코드의 제2 서브세트를 포함하는 상기 제2 데이터를 식별하는 단계는 상기 색인 테이블에서 상기 제1 복수의 색인 항목 위치에 인접한 제2 복수의 표적 색인 항목 위치를 판독하는 것을 포함하는, 메모리 서브시스템의 동작을 위한 방법.
  21. 메모리 서브시스템을 포함하는 컴퓨팅 시스템으로서, 상기 메모리 서브시스템은,
    제1 메모리 어레이를 구현하도록 구성된 하나 이상의 메모리 디바이스로서,
    상기 제1 메모리 어레이는 복수의 데이터 레코드를 저장하도록 구성되고, 상기 복수의 데이터 레코드는 제1 데이터 필드를 나타내기 위해 상기 복수의 데이터 레코드의 각 데이터 레코드에 제1 복수의 비트 위치를 할당하는 데이터 구조를 각각 사용하는, 상기 하나 이상의 메모리 디바이스; 및
    상기 하나 이상의 메모리 디바이스에 통신 가능하게 결합된 메모리측 메모리 제어기를 포함하고, 상기 메모리측 메모리 제어기는,
    동작을 수행하기 위해 상기 컴퓨팅 시스템에 구현된 처리 서브시스템에 의해 사용될 상기 복수의 데이터 레코드 중 제1 부분의 반환을 요청하는 메모리 액세스 요청을 시스템 버스를 통해 수신하고;
    상기 복수의 데이터 레코드의 제1 부분에 포함된 데이터에 적어도 부분적으로 기초하여 상기 메모리 액세스 요청으로부터 발생하는 데이터 액세스 패턴을 결정하고;
    상기 데이터 액세스 패턴을 외삽하여, 상기 복수의 데이터 레코드 중 제2 부분이 상기 동작을 수행하기 위해 상기 처리 서브시스템에 의해 사용될 것이라고 예측하고;
    상기 동작을 수행하기 위해 상기 복수의 데이터 레코드 중 상기 제2 부분이 상기 처리 서브시스템에 의해 실제 표적화되기 전에, 상기 복수의 데이터 레코드 중 상기 제2 부분을 상기 처리 서브시스템에 구현된 하나 이상의 캐시에 저장할 수 있도록, 상기 시스템 버스를 통해 상기 복수의 데이터 레코드 중 상기 제2 부분을 출력하도록 상기 메모리 서브시스템에 명령하도록 구성된, 컴퓨팅 시스템.
  22. 제21항에 있어서,
    상기 하나 이상의 메모리 디바이스는 상기 제1 메모리 어레이와 구별되는 제2 메모리 어레이를 구현하도록 구성되고;
    상기 메모리측 메모리 제어기는,
    상기 제1 데이터 필드에 대응하는 색인 테이블을 상기 제2 메모리 어레이에 저장하고, 상기 색인 테이블은 상기 복수의 데이터 레코드의 제1 부분에 포함된 대응하는 제1 데이터 레코드를 각각 식별하는 제1 복수의 색인 항목, 및 상기 복수의 데이터 레코드의 제2 부분에 포함된 대응하는 제2 데이터 레코드를 각각 식별하는 제2 복수의 색인 항목을 포함하고;
    상기 메모리 액세스 요청이 상기 색인 테이블의 상기 제1 복수의 색인 항목을 표적화할 때, 상기 메모리 액세스 요청으로부터 발생하는 상기 데이터 액세스 패턴이 정렬된 액세스 패턴이라고 결정하고;
    상기 정렬된 액세스 패턴을 외삽하여, 상기 복수의 데이터 레코드 중 상기 제2 부분이 상기 색인 테이블의 상기 제2 복수의 색인 항목 중 하나에 대응하는 각 데이터 레코드를 포함한다고 예측하도록 구성된, 컴퓨팅 시스템.
  23. 제22항에 있어서, 상기 메모리측 메모리 제어기는,
    대응하는 데이터 레코드를 상기 제1 메모리 어레이에 저장한 것에 응답하여 상기 복수의 데이터 레코드의 상기 대응하는 데이터 레코드와 연관된 색인 항목을 생성하고;
    상기 대응하는 데이터 레코드에 나타난 상기 제1 데이터 필드의 제1 값, 및 상기 복수의 데이터 레코드에서 다른 데이터 레코드에 나타난 상기 제1 데이터 필드의 제2 값을 정렬한 것에 적어도 부분적으로 기초하여 상기 색인 항목을 포함하도록 상기 색인 테이블을 업데이트하도록 구성된, 컴퓨팅 시스템.
  24. 제21항에 있어서,
    상기 복수의 데이터 레코드에 의해 사용되는 데이터 구조는 제2 데이터 필드를 나타내기 위해 상기 복수의 데이터 레코드의 각 데이터 레코드에 제2 복수의 비트 위치를 할당하고;
    상기 메모리측 메모리 제어기는,
    상기 메모리 액세스 요청이 상기 제1 데이터 필드를 상기 복수의 데이터 레코드의 표적화된 부분으로 식별할 때, 상기 메모리 액세스 요청으로부터 발생하는 상기 데이터 액세스 패턴은 스트라이딩 액세스 패턴(striding access pattern)이라고 결정하고;
    상기 스트라이딩 액세스 패턴을 외삽하여, 상기 복수의 데이터 레코드의 제2 부분은 상기 복수의 데이터 레코드의 각 데이터 레코드에 포함된 상기 제2 데이터 필드를 포함한다고 예측하도록 구성된, 컴퓨팅 시스템.
  25. 제21항에 있어서, 상기 메모리측 메모리 제어기는,
    상기 메모리 액세스 요청에 응답하여 그리고 상기 처리 서브시스템으로부터의 추가 명령어 없이 상기 복수의 데이터 레코드의 제1 부분을 직접 상기 처리 서브시스템에 구현된 상기 하나 이상의 캐시에 저장하도록 상기 메모리 서브시스템에 자동으로 명령하고;
    상기 메모리 액세스 요청에 응답하여 그리고 상기 처리 서브시스템의 추가 명령어 없이 상기 복수의 데이터 레코드의 제2 부분을 직접 상기 처리 서브시스템에 구현된 상기 하나 이상의 캐시에 저장하도록 상기 메모리 서브시스템에 명령함으로써 상기 복수의 데이터 레코드의 제2 부분을 출력하도록 상기 메모리 서브시스템에 명령하도록 구성된, 컴퓨팅 시스템.
  26. 컴퓨팅 시스템에서 하나 이상의 프로세서에 의해 실행 가능한 명령어를 저장하는 유형적인 비-일시적인 컴퓨터 판독 가능 매체로서, 상기 명령어는,
    상기 하나 이상의 프로세서를 사용하여, 동작을 수행하기 위해 제2 데이터와 함께 상기 하나 이상의 프로세서에 구현된 처리 회로부에 의해 사용될 제1 데이터를 결정하고;
    상기 하나 이상의 프로세서를 사용하여, 상기 제1 데이터가 상기 처리 회로부와 통합된 하나 이상의 캐시에 현재 저장되어 있는지 여부를 결정하고;
    상기 제1 데이터가 상기 하나 이상의 캐시에 현재 저장되어 있지 않은 경우,
    상기 하나 이상의 프로세서를 사용하여, 상기 제1 데이터의 반환을 요청하는 메모리 액세스 요청을 상기 컴퓨팅 시스템에 구현된 메모리 서브시스템에 출력하고;
    상기 메모리 액세스 요청에 응답하여, 상기 하나 이상의 프로세서를 사용하여, 상기 메모리 서브시스템으로부터 수신된 상기 제1 데이터의 제1 인스턴스와 상기 제2 데이터의 제2 인스턴스를 캐싱하도록 상기 하나 이상의 캐시를 명령하고;
    상기 처리 회로부가 상기 제1 데이터와 상기 제2 데이터에 적어도 부분적으로 기초하여 상기 동작을 수행할 수 있도록, 상기 하나 이상의 프로세서를 사용하여, 상기 제1 데이터의 제1 인스턴스와 상기 제2 데이터의 제2 인스턴스를 상기 처리 회로부에 출력하도록 상기 하나 이상의 캐시에 명령하는 명령어를 포함하는, 유형적인 비-일시적인 컴퓨터 판독 가능 매체.
  27. 제26항에 있어서, 상기 제1 데이터의 제1 인스턴스와 상기 제2 데이터의 제2 인스턴스를 출력하도록 상기 하나 이상의 캐시에 명령하는 명령어는, 상기 제1 데이터의 제1 인스턴스와 상기 제2 데이터의 제2 인스턴스가 상기 하나 이상의 캐시에 성공적으로 캐싱되었음을 나타내는 하나 이상의 제어 신호가 상기 메모리 서브시스템으로부터 수신된 후에 상기 제1 데이터의 제1 인스턴스와 상기 제2 데이터의 제2 인스턴스를 상기 처리 회로부에 출력하도록 상기 하나 이상의 캐시에 명령하는 명령어를 포함하는, 유형적인 비-일시적인 컴퓨터 판독 가능 매체.
  28. 제26항에 있어서, 상기 메모리 액세스 요청을 출력하는 명령어는, 상기 메모리 서브시스템이 데이터 액세스 패턴을 외삽함으로써 다가오는 제어 구간 동안 상기 동작을 수행하기 위해 상기 제2 데이터가 표적화될 것이라고 예측할 수 있도록 하는 상기 데이터 액세스 패턴을 상기 메모리 액세스 요청에 나타내는 명령어를 포함하는, 유형적인 비-일시적인 컴퓨터 판독 가능 매체.
  29. 제26항에 있어서, 상기 제1 데이터가 상기 메모리 서브시스템에 저장된 복수의 데이터 레코드 각각에 포함된 제1 데이터 필드를 포함하는 경우, 상기 메모리 액세스 요청을 출력하는 명령어는 상기 메모리 서브시스템에서 상기 복수의 데이터 레코드의 저장 위치를 식별하는 명령어를 포함하고, 상기 메모리 서브시스템이,
    상기 메모리 액세스 요청이 스트라이딩 액세스 패턴을 초래한다고 결정하고;
    상기 스트라이딩 액세스 패턴을 외삽하여, 상기 처리 회로부에 의해 표적화된 상기 제2 데이터가 상기 복수의 데이터 레코드 각각에 포함된 제2 데이터 필드를 포함한다고 예측할 수 있도록,
    상기 제1 데이터 필드가 상기 메모리 액세스 요청에서 상기 복수의 데이터 레코드의 현재 표적화된 부분이라고 식별하는 명령어를 포함하는, 유형적인 비-일시적인 컴퓨터 판독 가능 매체.
  30. 제26항에 있어서, 상기 제1 데이터가 상기 메모리 서브시스템에 저장된 복수의 데이터 레코드의 제1 서브세트를 포함할 때, 상기 메모리 액세스 요청을 출력하는 명령어는, 상기 메모리 서브시스템이,
    상기 메모리 액세스 요청이 정렬된 액세스 패턴을 초래한다고 결정하고;
    상기 정렬된 액세스 패턴을 외삽하여, 상기 처리 회로부에 의해 표적화된 상기 제2 데이터가 데이터 필드에 대응하는 색인 테이블에서 다른 복수의 색인 항목 중 하나에 각각 대응하는 상기 복수의 데이터 레코드의 제2 서브세트를 포함한다고 예측할 수 있도록,
    표적 액세스 색인으로서 상기 복수의 데이터 레코드 각각에 포함된 상기 데이터 필드, 및 상기 메모리 액세스 요청에서 복수의 표적화된 색인 항목을 식별하는 명령어를 포함하는, 유형적인 비-일시적인 컴퓨터 판독 가능 매체.
KR1020217005622A 2018-08-30 2019-07-29 비동기 순방향 캐싱 메모리 시스템 및 방법 KR102319248B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862725012P 2018-08-30 2018-08-30
US62/725,012 2018-08-30
US16/428,144 2019-05-31
US16/428,144 US11281589B2 (en) 2018-08-30 2019-05-31 Asynchronous forward caching memory systems and methods
PCT/US2019/043978 WO2020046517A1 (en) 2018-08-30 2019-07-29 Asynchronous forward caching memory systems and methods

Publications (2)

Publication Number Publication Date
KR20210030984A KR20210030984A (ko) 2021-03-18
KR102319248B1 true KR102319248B1 (ko) 2021-11-02

Family

ID=69642275

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217005622A KR102319248B1 (ko) 2018-08-30 2019-07-29 비동기 순방향 캐싱 메모리 시스템 및 방법

Country Status (5)

Country Link
US (2) US11281589B2 (ko)
EP (1) EP3827349A4 (ko)
KR (1) KR102319248B1 (ko)
CN (2) CN114924997A (ko)
WO (1) WO2020046517A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114846545A (zh) * 2019-12-26 2022-08-02 美光科技公司 用于堆叠式存储器系统的非确定性操作的技术
US11561731B2 (en) 2019-12-26 2023-01-24 Micron Technology, Inc. Truth table extension for stacked memory systems
KR20220113535A (ko) 2019-12-26 2022-08-12 마이크론 테크놀로지, 인크. 적층된 메모리 시스템을 위한 호스트 기술
TR202009944A1 (tr) * 2020-06-25 2022-01-21 Loodos Bilisim Teknolojileri Sanayi Ve Ticaret Ltd Sirketi Önbellek güncelleme sistemi ve yöntemi.
US11836128B1 (en) 2023-07-21 2023-12-05 Sadram, Inc. Self-addressing memory

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100156675A1 (en) 2008-12-22 2010-06-24 Lenovo (Singapore) Pte. Ltd. Prioritizing user input devices
US20120246406A1 (en) 2008-08-14 2012-09-27 International Business Machines Corporation Effective prefetching with multiple processors and threads

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6076150A (en) * 1995-08-10 2000-06-13 Lsi Logic Corporation Cache controller with improved instruction and data forwarding during refill operation
US6438650B1 (en) * 1998-12-16 2002-08-20 Intel Corporation Method and apparatus for processing cache misses
US6976147B1 (en) 2003-01-21 2005-12-13 Advanced Micro Devices, Inc. Stride-based prefetch mechanism using a prediction confidence value
KR100703357B1 (ko) * 2003-08-16 2007-04-03 삼성전자주식회사 보조제어부를 구비하는 휴대용 단말기의 캐시메모리구현장치 및 방법
US7238218B2 (en) * 2004-04-06 2007-07-03 International Business Machines Corporation Memory prefetch method and system
JP4520788B2 (ja) * 2004-07-29 2010-08-11 富士通株式会社 マルチスレッドプロセッサ
JP5059609B2 (ja) 2004-08-17 2012-10-24 エヌヴィディア コーポレイション メモリへの様々なタイプのアクセスを予測するため、およびキャッシュメモリに関連付けられた予測を管理するための、システム、装置、および方法
US20060095679A1 (en) 2004-10-28 2006-05-04 Edirisooriya Samantha J Method and apparatus for pushing data into a processor cache
US20100241726A1 (en) * 2009-03-23 2010-09-23 Riverbed Technology, Inc. Virtualized Data Storage Over Wide-Area Networks
US8140759B2 (en) 2009-04-16 2012-03-20 International Business Machines Corporation Specifying an access hint for prefetching partial cache block data in a cache hierarchy
US8380680B2 (en) * 2010-06-23 2013-02-19 International Business Machines Corporation Piecemeal list prefetch
US9390018B2 (en) 2012-08-17 2016-07-12 Advanced Micro Devices, Inc. Data cache prefetch hints
JP5819566B2 (ja) * 2013-03-29 2015-11-24 楽天株式会社 データ提供装置、データ提供方法及びデータ提供プログラム
KR102070136B1 (ko) 2013-05-03 2020-01-28 삼성전자주식회사 프리페치를 위한 캐시 제어 장치 및 그 캐시 제어 장치를 이용한 프리페치 방법
KR102074329B1 (ko) * 2013-09-06 2020-02-06 삼성전자주식회사 데이터 저장 장치 및 그것의 데이터 처리 방법
US9934148B2 (en) * 2015-06-23 2018-04-03 Advanced Micro Devices, Inc. Memory module with embedded access metadata
JP2017072929A (ja) * 2015-10-06 2017-04-13 富士通株式会社 データ管理プログラム、データ管理装置、およびデータ管理方法
US10339060B2 (en) * 2016-12-30 2019-07-02 Intel Corporation Optimized caching agent with integrated directory cache
US20200320002A1 (en) * 2019-04-04 2020-10-08 EMC IP Holding Company LLC Intelligently managing data facility caches

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120246406A1 (en) 2008-08-14 2012-09-27 International Business Machines Corporation Effective prefetching with multiple processors and threads
US20100156675A1 (en) 2008-12-22 2010-06-24 Lenovo (Singapore) Pte. Ltd. Prioritizing user input devices

Also Published As

Publication number Publication date
CN112639748B (zh) 2022-06-28
KR20210030984A (ko) 2021-03-18
EP3827349A1 (en) 2021-06-02
US20200073811A1 (en) 2020-03-05
US20220171711A1 (en) 2022-06-02
CN112639748A (zh) 2021-04-09
CN114924997A (zh) 2022-08-19
EP3827349A4 (en) 2021-11-03
WO2020046517A1 (en) 2020-03-05
US11281589B2 (en) 2022-03-22

Similar Documents

Publication Publication Date Title
KR102319248B1 (ko) 비동기 순방향 캐싱 메모리 시스템 및 방법
US20220171709A1 (en) Forward caching memory systems and methods
US7496711B2 (en) Multi-level memory architecture with data prioritization
CN110580229B (zh) 扩展线宽存储器侧高速缓存系统和方法
CN114175001B (zh) 存储器感知预取和高速缓存旁路系统和方法
KR102254066B1 (ko) 포워드 캐싱 애플리케이션 프로그래밍 인터페이스 시스템 및 방법
US20190266106A1 (en) Multiple memory type memory module systems and methods
KR102422654B1 (ko) 프로세서 측 트랜잭션 콘텍스트 메모리 인터페이스 시스템 및 방법
US11755488B2 (en) Demand delay and data value correlated memory pre-fetching systems and methods
US11354246B2 (en) Memory-side transaction context memory interface systems and methods based on clock cycles and wires

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant