KR20230094964A - 이종 메모리 타겟의 인터리빙 - Google Patents

이종 메모리 타겟의 인터리빙 Download PDF

Info

Publication number
KR20230094964A
KR20230094964A KR1020220155774A KR20220155774A KR20230094964A KR 20230094964 A KR20230094964 A KR 20230094964A KR 1020220155774 A KR1020220155774 A KR 1020220155774A KR 20220155774 A KR20220155774 A KR 20220155774A KR 20230094964 A KR20230094964 A KR 20230094964A
Authority
KR
South Korea
Prior art keywords
memory
memory device
processor
interface
controller
Prior art date
Application number
KR1020220155774A
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 KR20230094964A publication Critical patent/KR20230094964A/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/1647Handling requests for interconnection or transfer for access to memory bus based on arbitration with interleaved bank access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/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/1694Configuration of memory controller to different memory types
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)

Abstract

장치는, 적어도 하나의 제 1 메모리 디바이스에 연결되는 제 1 유형의 제 1 메모리 인터페이스와, 적어도 하나의 제 2 메모리 디바이스에 연결되는 제 2 유형의 제 2 메모리 인터페이스와, 적어도 하나의 제 1 메모리 디바이스 및 적어도 하나의 제 2 메모리 디바이스 사이에서 인접하는 논리 메모리 어드레스를 타겟으로 하는 메모리 요청을 인터리브하는 회로를 포함한다.

Description

이종 메모리 타겟의 인터리빙{INTERLEAVING OF HETEROGENEOUS MEMORY TARGETS}
본 개시는 일반적으로 컴퓨터 개발 분야에 관한 것이고, 보다 구체적으로는 이종 메모리 타겟의 인터리빙에 관한 것이다.
컴퓨팅 시스템은 복수의 메모리 타겟을 포함할 수 있다. 운영 체제 또는 애플리케이션과 같은 엔티티는, 다양한 메모리 타겟에 의해 수행될 메모리 요청을 생성할 수 있다.
도 1은 특정 실시예에 따른 이종 메모리 타겟의 인터리빙을 나타낸다.
도 2는 특정 실시예에 따른 인터리브된 메모리를 갖는 컴퓨터 시스템의 컴포넌트를 나타낸다.
도 3은 특정 실시예에 따른 이종 인터리브된 메모리에서 메모리 요청을 라우팅하는 흐름을 나타낸다.
도 4는 특정 실시예에 따른 컴퓨터 시스템의 컴포넌트를 나타낸다.
여러 도면에서 동일한 참조 번호 및 명칭은 동일한 요소를 나타낸다.
도면은 특정 컴퓨터 시스템을 나타내고 있지만, 다양한 실시예의 개념은 임의의 적절한 컴퓨터 시스템에 적용될 수 있다. 본 개시의 교시가 사용될 수 있는 시스템의 예는 데스크톱 컴퓨터 시스템, 서버 컴퓨터 시스템, 저장 시스템, 핸드헬드 디바이스, 태블릿, 다른 씬 노트북(thin notebook), 시스템 온 칩(SOC) 디바이스, 및 임베디드 애플리케이션을 포함한다. 핸드헬드 디바이스의 일부 예는 셀룰러폰, 디지털 카메라, 미디어 플레이어, PDA(personal digital assistant), 및 핸드헬드 PC를 포함한다. 임베디드 애플리케이션은 마이크로제어기, DSP(digital signal processor), SOC, 네트워크 컴퓨터(NetPC), 셋톱 박스, 네트워크 허브, WAN(wide area network) 스위치, 또는 이하에서 교시되는 기능 및 동작을 수행할 수 있는 임의의 다른 시스템을 포함할 수 있다. 본 개시의 다양한 실시예는, 개인용 컴퓨팅 디바이스, 서버, 메인프레임, 클라우드 컴퓨팅 서비스 제공자 인프라스트럭처, 데이터 센터, 통신 서비스 제공자 인프라스트럭처(예컨대, 진화된 패킷 코어(Evolved Packet Core)의 하나 이상의 부분), 또는 하나 이상의 컴퓨팅 디바이스를 포함하는 다른 환경과 같은, 임의의 적당한 컴퓨팅 환경에서 사용될 수 있다.
소켓당 코어 수(예를 들어, 서버 SoC(System-on-Chip)에서)가 증가하는 추세는, 더 많은 코어 수를 지원하도록 이에 대응하는 더 높은 메모리 대역폭을 증가시키는 동기가 되었다. 따라서, 일부 시스템은, 다수의 채널을 가진 기본 DDR5(Double Data Rate 5) 메모리는 물론 CXL(Compute Express Link) Type 3 메모리(예를 들어, 휘발성이고 영구적인 것일 수 있음), HBM(High Bandwidth Memory)와 같은 기타 메모리 유형과 같은 코어가 사용할 수 있는 다수의 메모리 유형을 포함한다. 기본 메모리 채널(예를 들어, 통합형 메모리 제어기로부터 DDR 메모리로의 채널)의 수를 늘리면, 플랫폼 기술의 실현 가능성, 비용 및 파워 문제와 같은 제한 사항이 발생할 수 있으므로, 이들 추가 메모리 유형은 메모리 대역폭을 실행 가능한 방식으로 향상시킬 수 있다.
일부 컴퓨팅 시스템에서는, 메모리 액세스를 다수의 메모리 타겟에 균등하게 분산시켜서 병렬 처리에 의한 성능 향상을 달성하기 위해서, 메모리가 인터리브될 수 있다. 메모리 액세스는 인터리브된 메모리 타겟에 예를 들어, 라운드 로빈 방식으로 분산될 수 있다. 인터리브된 메모리 타겟에 기입하는 데 사용되는 어드레스는 고유할 수 있으며, 따라서 다수의 메모리 타겟 사이에서 메모리 어드레스의 에일리어싱(aliasing)은 존재하지 않는다. 일부 시스템에서, 이종의 메모리 타겟 유형(예를 들어, DDR5, CXL, HBM 등)이 존재하는 경우, 다양한 메모리 타겟이 개별적으로 인터리브될 수 있다(이로써, 특정 유형의 메모리 타겟이 제 1 어드레스 공간을 제공하고, 다른 유형의 메모리 타겟이 제 2 어드레스 공간을 제공할 수 있다). 따라서, 메모리 타겟 유형마다의 개개의 메모리의 범위는 BIOS(Basic Input/Output System)에 의해 구성될 수도 있고, 운영 체제(OS), 가상 머신 관리자(VMM) 또는 다른 소프트웨어 애플리케이션에 개별적으로 노출될 수도 있다. 따라서 개개의 메모리 유형은 BIOS에 의해 고유 어드레스 범위로서 구성될 수 있다.
이러한 시스템의 일례로, SoC가 8개의 DDR5 채널(제 1 메모리 타겟 유형으로) 및 4개의 CXL 포트(제 2 메모리 타겟 유형으로)를 포함하는 계층형 메모리 방식(tiered memory approach)이 사용될 수 있다. 시스템 펌웨어(예를 들어, BIOS)는, 8개의 DDR5 채널에 걸쳐 인터리브된 제 1 어드레스 범위 및 4개의 CXL 포트에 걸쳐 인터리브된 제 2 어드레스 범위라는, 메모리 리소스의 2개의 계층을 구성할 수 있다. 이후, OS 또는 VMM는 제 1 어드레스 범위 또는 제 2 어드레스 범위를 사용하도록 애플리케이션을 스케줄링할 수 있다. 이용 가능한 메모리 리소스 여러 버킷/범위로 계층화/분리되기 때문에, 제 1 메모리 범위(예를 들어, DDR5 채널 0-7)를 사용하는 애플리케이션은 다른 메모리 범위(예를 들면, CXL 포트 0-3)가 제공하는 추가 대역폭을 이용할 수 없다. 이러한 계층화된 메모리 방식은 많은 양의 메모리 대역폭이 필요한 애플리케이션에는 적합하지 않을 수 있다. 또한 OS/VMM에서 애플리케이션 특성 및 대역폭 요구 사항에 기초해서 다양한 메모리 범위에서 애플리케이션을 적절하게 스케줄링해야 하는 추가 부담이 있을 수 있다.
본 개시의 다양한 실시예는, OS, VMM 및/또는 애플리케이션에서 사용할 수 있는 단일 연속 소프트웨어 가시(visible) 어드레스 범위에 이종 메모리 타겟(예를 들어, 통합형 메모리 제어기에 부착된 DDR5, CXL을 통해서 부착된 메모리, HBM 등)을 인터리브함으로써, 대역폭 확장을 달성하는 방법을 제공한다. 대역폭 확장은, 애플리케이션이 어드레스 범위 내의 다양한 메모리 타겟에 의해 제공되는 전체 메모리 대역폭을 활용할 수 있게 함으로써, 달성된다. 일 실시예에서, 내부 메모리 제어기 채널(예를 들어, DDR5 타겟)과 CXL 메모리 버퍼(예를 들어, CXL 타겟) 모두를 타겟으로 하는 이종 어드레스 범위는, 시스템 BIOS에 의해 구성되고 소프트웨어에 노출된다.
다양한 실시예는 또한, 애플리케이션이 이종 인터리브 메모리의 어드레스 범위 내에서 균일하게 스케줄링될 수 있기 때문에, OS 또는 VMM 스케줄링을 단순화시킬 수 있다. 일부 실시예에서, OS 또는 VMM은 하나 이상의 이종 인터리브 메모리 범위를 사용하도록 대역폭 집약적 애플리케이션(bandwidth intensive)을 스케줄링하고, 이종 인터리브 메모리 범위가 아닌 하나 이상의 다른 메모리 범위를 사용하도록 다른 애플리케이션을 스케줄링할 수 있다.
도 1은 특정 실시예에 따른 이종 메모리 타겟(102)(예를 들어, 102A~102H)을 인터리브하는 것을 도시한다. 이 실시예에서, 제 1 유형의 메모리 타겟의 제 1 그룹(인터페이스(104)의 다양한 채널에 연결됨) 및 제 2 유형의 메모리 타겟의 제 2 그룹(인터페이스(106)의 다양한 포트에 연결됨)이 단일 어드레스 스페이스에 함께 인터리브된다. 요청 엔티티가 제공하는 메모리 어드레스(예를 들어, 소프트웨어 엔티티에 대한 명령어를 실행하는 코어)는, 라우팅 테이블(112)에 대응하는 메모리 범위(110) 내에 있는 것으로 결정될 수 있다. 라우팅 테이블(112)은, 메모리 어드레스를 참조하는 요청을, 메모리 어드레스(108)에 기초해서 메모리 타겟(102) 중 하나로 라우팅할 수 있다.
이종 메모리 타겟은, 성능 특성(예를 들어, 대역폭, 레이턴시), 기본 저장 기술 유형(예를 들어, NAND 플래시, 3D 크로스포인트와 같은 PMEM(persistent memory), DRAM(dynamic random access memory) 등), 또는 메모리 타겟에 대한 전송 메커니즘 및/또는 인터페이스(예를 들어, 소켓을 통해 메모리에 연결된 통합형 메모리 제어기로의 메모리 버스, 하나 이상의 CXL 포트로의 CXL 버스, 하나 이상의 PCIe 포트로의 PCIe 버스, HBM 메모리용 로직 다이에 대한 인터포저 등)와 같이, 하나 이상의 양태에서 다양한 메모리 타겟일 수 있다.
다양한 실시예에서, 메모리 요청은 상이한 서브시스템을 통해 이종 메모리 타겟으로의 서로 다른 경로를 취할 수 있다. 도시된 실시예에서, 인터페이스(104)에 연결된 메모리 타겟에 대한 메모리 요청은 제 1 경로를 통해 라우팅될 수 있는 반면, 인터페이스(106)에 연결된 메모리 타겟에 대한 메모리 요청은 제 2 경로를 통해 라우팅될 수 있다(여기서, 인터페이스(104)에 연결된 메모리 타겟은 인터페이스(106)에 연결된 메모리 타겟에 대해 이종적인 것으로 간주된다).
이종 메모리 타겟이 다양한 특성을 갖는 경우, 시스템 메모리 성능이 영향을 받을 수 있다. 예를 들어, 이종 인터리브 메모리에 대한 메모리 액세스의 레이턴시는, 여러 메모리 유형의 레이턴시의 가중 평균일 수 있다(가중치는 각각의 메모리 유형의 디바이스의 수에 대응함). 일부 실시예에서, 메모리 타겟으로서 사용되는 각각의 메모리 디바이스는 동일한 용량(capacity)을 갖는다. 다양한 실시예에서, 특정한 메모리 디바이스가 이종 인터리빙에 사용되는 다른 메모리 디바이스보다 더 큰 경우, 그 메모리 디바이스의 일부만이 이종 인터리빙에 사용되고, 별개의 어드레스 공간에서 임의의 예비 용량이 사용될 수도 있고 혹은 사용되지 않을 수도 있다. 일례로, 복수의 이종 메모리 디바이스가 다양한 용량을 갖는 경우, 가장 작은 용량(또는 약간 더 작은 용량)을 갖는 메모리 디바이스의 용량이, 인터리브된 각각의 메모리 디바이스에 대한 용량으로서 사용될 수 있다.
인터리브된 메모리 타겟은, 메모리 어드레스를 복수의 메모리 타겟에 균등하게 분산시킴으로써, 시스템 메모리의 대역폭을 향상시킬 수 있다. 이러한 방식으로, 인접하는 어드레스에 대해서 메모리를 판독하는 기입하는 것은 메모리 타겟을 차례로 사용할 수 있으므로, 메모리 타겟의 후속 커맨드 수행 대기가 감소되기 때문에, 메모리 스루풋이 증가된다. n개의 메모리 타겟이 있는 경우, 인터리브된 메모리는 n-웨이(n-way) 인터리브라고 한다.
단지 일례로, 4개의 메모리 타겟을 갖는 이종 인터리브 메모리에서(4-웨이 인터리브된 시스템), 논리 어드레스 0은 제 1 메모리 타겟으로 라우팅될 수 있고, 논리 어드레스 1은 제 2 메모리 타겟으로 라우팅될 수 있으며, 논리 어드레스 2는 제 3 메모리 타겟으로 라우팅될 수 있고, 논리 어드레스 3은 제 4 메모리 타겟으로 라우팅될 수 있으며, 논리 어드레스 4는 제 1 메모리 타겟으로 라우팅될 수 있고, 논리 어드레스 5는 제 2 메모리 타겟으로 라우팅될 수 있는 등이다. 이 예에서는, 메모리 요청을 적절한 메모리 타겟으로 라우팅하는데 2비트의 논리 어드레스가 사용될 수 있다. 각각의 논리 어드레스는, 인터리브 세분성(granularity)이라고 지칭되는 크기를 갖는, 메모리의 일부를 참조할 수 있다. 단지 일례로, 인터리브 세분성은 256 바이트일 수 있다.
일부 실시예에서, 컴퓨팅 시스템은 하나 이상의 이종 인터리브 메모리를 포함할 수 있다. 이종 인터리브 메모리는 제 1 유형의 하나 이상의 메모리 타겟(예를 들어, 내부 메모리 제어기에 연결된 DDR5 메모리 디바이스) 및 제 2 유형의 하나 이상의 메모리 타겟(예를 들어, 하나 이상의 CXL 브리지에 연결된 메모리 디바이스)를 포함할 수 있다. 일부 이종 인터리브 메모리는 또한 하나 이상의 추가 유형의 하나 이상의 메모리 타겟을 포함할 수 있다.
컴퓨팅 시스템이 다수의 이종 인터리빙 메모리를 포함하는 경우, 각각의 이종 인터리브 메모리는 개별 어드레스 공간을 포함할 수 있고, 개개의 라우팅 테이블(112)과 연관될 수 있다. 특정한 이종 인터리브 메모리에 대한 메모리 요청은 연관된 라우팅 테이블(112)을 통해 라우팅될 수 있다. 다양한 실시예에서, 컴퓨팅 시스템은 하나 이상의 다른 이종 인터리브 메모리 뿐만 아니라 하나 이상의 다른 비-이종 인터리브 메모리를 포함할 수 있다.
도 2는 특정 실시예에 따른 이종 인터리브 메모리 타겟(202 및 204)을 구비한 컴퓨터 시스템(200)의 컴포넌트를 도시한다. 시스템(200)은 제 1 유형의 메모리 타겟(202) 및 제 2 유형의 메모리 타겟(204)을 포함한다. 제 1 유형의 메모리 타겟은 복수의 DDR5 메모리 디바이스(206)(예를 들어, 206A-H)를 포함하고, 제 2 유형의 메모리 타겟은 복수의 CXL 메모리 디바이스(208)(예를 들어, 208A-D)(예를 들어, CXL 프로토콜을 사용하여 통신하는 메모리 디바이스)를 포함한다. 제 1 유형의 메모리 타겟(202)에는, 통합형 메모리 제어기를 포함할 수 있는, 제 1 인터페이스(203)를 통해 도달 가능하다. 제 2 유형의 메모리 타겟(204)에는, CXL 포트(포트 0 및 포트 1로서 도시됨)를 포함하는 2개의 CXL 호스트 브리지(210)를 포함할 수 있는 제 2 인터페이스(205)를 통해 도달할 수 있다.
DDR5 메모리 디바이스(206)는 각각의 채널을 통해서, 개별 메모리 제어기(MC0-MC7)를 포함하는 통합형 메모리 제어기에 연결될 수 있다. 다양한 실시예에서, 이 메모리 제어기는 코어(209)와 동일한 다이 및/또는 패키지 상에 통합될 수 있다. 일 실시예에서, 각각의 DDR5 메모리 디바이스(206)는 프로세서의 DDR5 버스에 연결되는 DIMM(dual in-line memory module)이다. 다른 실시예에서, 메모리 디바이스(206)는 임의의 다른 유형의 메모리(예를 들어, 상이한 DDR 메모리 또는 다른 적절한 메모리)일 수도 있다.
CXL 메모리 디바이스(208)는 CXL 호스트 브리지(210)(예를 들어, 210A 및 210B)의 CXL 포트에 연결될 수 있다. CXL 메모리 디바이스는, 예를 들어, Type 3 CXL 메모리 디바이스일 수 있고, 디바이스(208)의 메모리(예를 들어, DDR5, 영구 메모리, 또는 다른 적절한 유형의 메모리)는 DDR5 메모리 디바이스(206)의 메모리와 코히어런트(coherent with)한 관계에 있을 수 있다. 일부 실시예에서, CXL 호스트 브리지(210)는 코어와 동일한 다이에 또는 동일한 패키지에 통합될 수도 있다. 다양한 실시예에서, CXL 메모리 디바이스(208)는 하나 이상의 메모리 모듈을 가진 메모리 카드일 수 있고, CXL 메모리 디바이스(208)는 프로세서의 CXL 버스에 부착될 수 있다.
이종 인터리브 메모리의 특정한 배열이 도시되어 있지만, 다른 실시예에서, 이종 인터리브 메모리를 하나 이상의 코어 또는 다른 프로세서 유닛에 연결하는데 임의의 적절한 구성이 이용될 수도 있다.
코어(209)는, 메모리 요청을 생성하기 위해서 소프트웨어 명령어(예를 들어, OS, VMM, 또는 OS나 VMM에 의해 관리되는 애플리케이션의) 또는 다른 논리적 엔티티를 실행하는 프로세서 코어를 포함할 수 있다. 코어(209)는 이종 인터리브 메모리에 대한 판독 및 기입의 메모리 요청을 발행할 수 있다. 메모리 요청은 메모리의 논리 어드레스를 명시할 수 있다. 일부 실시예에서, 요청은 또한 메모리 요청이 라우팅되어야 하는 캐시 홈 에이전트(212)의 식별자(ID)를 포함하거나 혹은 이와 연관된다. 일부 실시예에서, 캐시 홈 에이전트 ID는 메모리 어드레스의 적어도 일부를 해싱(hashing)함으로써 생성될 수 있다. 다양한 실시예에서, 요청은 또한 클러스터 ID를 포함하거나 혹은 이와 연관될 수 있다. 예를 들어, 프로세서는 코어의 클러스터에 대한 하나 이상의 캐시 홈 에이전트를 각각 포함하는 복수의 클러스터를 포함할 수 있고, 클러스터 ID는 캐시 홈 에이전트 ID와 함께 메모리 요청을 적절한 캐시 홈 에이전트(212)로 라우팅하는 데 사용될 수 있다.
캐시 홈 에이전트(212)는 메모리 디바이스의 그룹에 대한 메모리 요청을 관리한다. 캐시 홈 에이전트(212)는 메모리 디바이스를 포함하는 메모리 요청의 처리를 담당할 수 있고, 메모리 어드레스 공간의 적어도 일부에 대한 홈으로서 동작할 수 있다(예를 들어, 하나의 프로세서는 분산형 어드레스 공간 매핑에서 다수의 홈을 가질 수 있다). 일부 예에서, 캐시 홈 에이전트(212)는 코히어런트 메모리의 일부를 지도(supervise)할 수 있다. 이와 같이, 캐시 홈 에이전트(212)는 캐시 홈 에이전트(212)에 할당된 메모리 공간에 액세스하는 상이한 코어들 사이에서 발생하는 충돌을 관리할 수 있다. 캐시 홈 에이전트(212)는 주어진 트랜잭션의 흐름에 따라서 적절한 데이터 및 소유권 응답을 제공할 수 있다.
캐시 홈 에이전트(212)는 하나 이상의 라우팅 테이블(214)을 포함할 수 있다. 라우팅 테이블은 복수의 엔트리를 포함할 수 있는데, 이 엔트리는 논리 메모리 어드레스를 논리 메모리 어드레스에 대한 라우팅 정보에 매핑하는 것이다. 라우팅 테이블(214)의 엔트리 및/또는 관련 정보는 컴퓨팅 시스템(예를 들어, BIOS(216))의 펌웨어에 의해 프로그래밍될 수 있다. 도시된 실시예에서, 캐시 홈 에이전트(212)는 이종 인터리브 메모리의 어드레스 공간에 대한 라우팅 테이블(214)을 포함한다. 일부 예에서, 캐시 홈 에이전트(212)는 또한 하나 이상의 다른 어드레스 공간(예를 들어, 이종 인터리브 메모리에 사용되지 않는 디바이스(206 또는 208)의 메모리에 대한)에 대한 하나 이상의 추가적인 라우팅 테이블을 포함할 수 있다.
상술한 바와 같이, 일부 실시예에서, 캐시 홈 에이전트(212)는 다수의 라우팅 테이블(214)을 포함할 수 있다. 예를 들어, 어떤 라우팅 테이블은 제 1 이종 인터리브 메모리에 대해 이용될 수 있고, 다른 라우팅 테이블은 제 2 이종 인터리브 메모리(예를 들어, 제 1 이종 인터리브 메모리와는 다른 메모리 디바이스를 이용하는)에 대해 이용될 수 있다. 일부 실시예에서, 다수의 상이한 인터리브된 메모리는 상이한 파라미터(예를 들어, 인터리빙 세분성)를 가질 수 있고, 따라서 개개의 라우팅 테이블을 이용할 수 있다. 다른 예로서, 한 라우팅 테이블은 이종 인터리브 메모리에 이용될 수 있고, 다른 라우팅 테이블은 이종이 아닌 인터리브된 메모리에 이용될 수 있다. 예를 들어, 이종이 아닌 인터리브된 메모리는 이종 인터리브 메모리에서 사용되지 않는 DDR5 메모리 디바이스(206)(또는 통합형 메모리 제어기에 연결된 다른 메모리 디바이스)의 부분 사이에서 인터리브된 메모리일 수 있는 반면, 이종 인터리브 메모리는 DDR5 메모리 디바이스(206) 및 CXL 메모리 디바이스(208) 사이에서 인터리브될 수 있다.
다양한 실시예에서, BIOS(216)는 이종 인터리브 메모리를 사용하도록 컴퓨팅 시스템(200)을 구성할 수 있다. 예를 들어, BIOS(216)는 다양한 메모리 디바이스의 속성을 검사해서(예를 들어, 컴퓨팅 시스템(200)의 부팅 동안에), 이들이 이종 인터리브 메모리 내에 포함시키기에 적합한지를 결정할 수 있다. 일부 실시예에서, CXL 메모리 디바이스(208)는 열거(enumeration) 동안 코히어런트 디바이스 속성 테이블 테이블을 통해 그의 디바이스 성능 특성을 퍼블리시하며, 따라서 BIOS(216)는 CXL 메모리 디바이스가 이종 방식으로(예를 들어, CPU 직접 부착된 DDR 메모리와 함께) 인터리브되기에 적합한지를 결정할 수 있다. BIOS(216)는, 타겟으로서 사용될 복수의 메모리 디바이스를 선택하는 것, 각각의 메모리 디바이스 중 이종 인터리브 메모리에서 사용될 메모리의 개수를 결정하는 것, 이종 인터리브 메모리의 세분성을 선택하는 것, 라우팅 테이블(214)의 엔트리 또는 다른 디코드 소자(예를 들어, 메모리 제어기(예를 들어, MC0-MC7) 또는 CXL 호스트 브리지(210))에서)를 구성(예를 들어, 레지스터에 기입함으로써)하는 것, 라우팅 테이블(214)로 인덱싱하는데 시스템 어드레스의 어느 비트가 사용되어야 하는지 또는 다른 적절한 구성 동작을 나타내는 정보를 명시하는 정보로 캐시 홈 에이전트(212)의 시스템 어드레스 디코더(218)를 프로그램하는 것과 같은 다른 구성 동작을 수행할 수 있다.
일부 실시예에서, 서로 다른 타겟 유형(예를 들어, DDR5, CXL 등)의 각각의 메모리 채널 상의 메모리 채널 대역폭은, 이종 인터리브 메모리에 포함시키기 위해(예를 들어, 임의의 시스템 유리턱(glass-jaws)을 방지하기 위해) 특정 허용오차 내(예를 들어, 서로 +/- 25% 이내)에 있어야 한다(예를 들어, BIOS(216)에 의해). 유사하게, 서로 다른 타겟 유형의 각각의 메모리 채널에서의 레이턴시는 특정 허용오차 내에 있어야 할 수 있다. 따라서, 일부 실시예에서, BIOS(216)는, 대역폭 또는 레이턴시가 크게 변하는 메모리가 이종 인터리브 메모리에서 함께 사용되는 것을 방지할 수 있다.
사용되는 어드레스 디코딩 흐름에는, CPU 내부 어드레스 디코딩과 메모리 측 디코딩의 두 가지 중요한 부분이 있다. CPU 내부 어드레스 디코딩은 (예를 들어, 메모리 요청의 메모리 어드레스에서 수행되는 클러스터 ID/CHA 디코딩을 통해서) 시스템 어드레스 맵 내의 메모리의 홈드 위치(homed location)(예를 들어, 적절한 캐시 홈 에이전트(212))를 결정하는 것을 포함할 수 있다. 이후 시스템 어드레스 디코더(218)에 의해, 이종 인터리브 메모리의 타겟 위치에 대해서 메모리 요청의 인커밍 논리 메모리 어드레스가 디코딩되어서, 메모리 어드레스가 어떤 유형의 메모리(예를 들어, 도시된 예에서 직접 부착된 DDR 또는 CXL)에 매핑되는지를 결정한다. 타겟(및 라우팅 테이블(214) 내의 정보)에 기초하여, 컴퓨팅 시스템(200)의 내부 패브릭은 메모리 요청을 타겟 메모리 유형(예를 들어, MC0, ..., MC7, CXL 호스트 브리지(210A 또는 210B))의 적절한 인터페이스 및 포트/채널로 라우팅한다.
수신 메모리 컴포넌트(예를 들어, 통합형 메모리 제어기의 MC0-7 또는 CXL 메모리 디바이스(208) 중 어느 하나)는 인터리브 방식에 관한 정보(예를 들어, 얼마나 많은 메모리 타겟이 인터리브되고 있는지, 이 예에서는 12개) 및 인터리브 세분성(예를 들어, 인터리빙 동안 다음 메모리 타겟이 기록되기 전에 특정 메모리 타겟에 기입되는 데이터의 양)를 이용해서, 프로그래밍될 수 있다(예를 들어, BIOS(216)에 의해). 메모리 측의 디코딩 동안, 이 정보에 기초해서, 메모리 컴포넌트는 메모리 요청에서 수신된 논리 어드레스를 DPA(device physical address)로 변환할 수 있다. 일부 실시예에서, 메모리 컴포넌트는 인터리브 방식의 수 및 인터리브 세분성에 기초하여 논리 어드레스의 특정 비트을 제거함으로써 이러한 변환을 수행한다. 일부 실시예에서, 메모리 컴포넌트는 DPA를, 물리적 메모리 채널, 랭크(rank), 뱅크 등과 같은 어드레스 컴포넌트로 더 디코딩할 수 있다.
BIOS(216) 및/또는 다른 시스템 펌웨어 컴포넌트는 시스템 어드레스 디코더(218), 논리 어드레스를 물리적 어드레스로 변환하기 위한 타겟 어드레스 디코더(예를 들어, 메모리 제어기(MC0-MC7) 및 CXL 메모리 디바이스(208) 내의), CXL 메모리 디바이스 HDM(Host-managed Device Memory) 디코더 또는 다른 적절한 컴포넌트와 같은, CPU 컴포넌트들에 걸친 일관된 프로그래밍을 담당할 수도 있다. 예를 들어, BIOS(216)는 논리 어드레스를 물리 어드레스로 정확하게 변환하는데 필요한 임의의 정보(예를 들어, 방식의 수, 인터리브 세분성)로 이러한 컴포넌트를 프로그래밍할 수 있다.
도 3은 특정 실시예에 따른 이종 인터리브된 메모리에서 메모리 요청을 라우팅하는 흐름을 나타낸다. 302에서, 컴퓨팅 시스템은 이종 인터리빙을 위해 구성될 수 있다. 예를 들어, 컴퓨팅 시스템의 펌웨어 또는 다른 로직은 메모리 디바이스를 검출하고, 인터리빙에 사용될 메모리 디바이스에 기초하여 컴퓨팅 시스템을 프로그래밍함으로써 인터리빙 방식을 설정할 수 있다.
304에서, 메모리 요청이 생성된다(예를 들어, 프로세서 코어 또는 다른 적절한 처리 유닛에 의해). 306에서, 메모리 요청의 메모리 어드레스에 기초하여 복수의 이종 메모리 인터페이스로부터 메모리 인터페이스가 선택된다. 308에서, 메모리 요청은 선택된 메모리 인터페이스로 라우팅된다. 310에서, 선택된 메모리 인터페이스에 연결된 메모리 컴포넌트는 메모리 어드레스를 디바이스 물리 어드레스로 변환하고, 312에서 요청을 수행하도록 요청을 적절한 메모리 디바이스로 보낸다.
도 4는 특정 실시예에 따른 컴퓨터 시스템(400)의 컴포넌트의 블록도를 도시한다. 본 개시의 다양한 양태는 시스템(400)에 의해 구현될 수 있다. 예를 들어, 코어(209)는 코어(414)에 대응할 수 있고, 인터페이스(104, 106, 203, 또는 205)는 CPU(402)의 일부일 수 있으며(예를 들어, 인터페이스(104 또는 203)는 CPU 메모리 제어기(412)의 적어도 일부에 대응할 수 있음), 이종 인터리브 메모리는 시스템 메모리(407)로서 기능할 수 있고, 캐시 홈 에이전트(212)는 CPU(402)의 일부일 수 있고, 또는 이종 인터리브 메모리의 메모리 타겟 중 임의의 것은 저장 디바이스(406) 또는 시스템 메모리 디바이스(407)와 관련하여 설명된 메모리의 유형 중 임의의 것에 의해 구현될 수 있다.
시스템(400)은 외부 입출력(I/O) 제어기(404), 저장 디바이스(406) 및 시스템 메모리 디바이스(407)에 연결된 CPU(central processing unit)(402)를 포함한다. 동작 중에, 데이터는 저장 디바이스(406) 또는 시스템 메모리 디바이스(407)와 CPU(402) 사이에서 전송될 수 있다. 다양한 실시예에서, 저장 디바이스(406) 또는 시스템 메모리 디바이스(407)를 포함하는 특정 데이터 동작(예를 들어, 삭제, 프로그램, 및 판독 동작)은 프로세서(408)에 의해 실행되는 운영 체제 또는 다른 소프트웨어 애플리케이션에 의해 관리될 수 있다.
CPU(402)는 마이크로프로세서, 임베디드 프로세서, DSP(digital signal processor), 네트워크 프로세서, 휴대용 프로세서, 애플리케이션 프로세서, 코프로세서, SOC(System on a chip), 또는 코드(즉, 소프트웨어 명령어)를 실행하기 위한 다른 디바이스와 같은 프로세서(408)를 포함한다. 프로세서(408)는, 도시된 실시예에서, 비대칭형 처리 요소 또는 대칭형 처리 요소를 포함할 수 있는, 2개의 처리 요소(도시된 실시예에서 코어(414A 및 414B))을 포함한다. 그러나, 프로세서는 대칭형일 수도 있고 또는 비대칭형일 수 있는 임의의 수의 처리 요소를 포함할 수 있다.
일 실시예에서, 처리 요소는 소프트웨어 스레드를 지원하는 하드웨어 또는 로직을 가리킨다. 하드웨어 처리 요소의 예로서는: 스레드 유닛, 스레드 슬롯, 스레드, 처리 유닛, 컨텍스트, 컨텍스트 유닛, 논리적 프로세서, 하드웨어 스레드, 코어, 및/또는, 실행 상태나 구조적 상태 등의 프로세서에 대한 상태를 보유할 수 있는 기타 임의의 요소가 포함된다. 환언하면, 처리 요소는, 일 실시예에서, 소프트웨어 스레드, 운영 체제, 애플리케이션, 또는 기타 코드 등과 독립적으로 연관될 수 있는 임의의 하드웨어를 말한다. 물리적 프로세서(또는 프로세서 소켓)은 통상적으로, 코어 또는 하드웨어 스레드 등의 임의의 수의 다른 처리 요소를 잠재적으로 포함하는 집적 회로를 가리킨다.
코어(414)는, 독립된 구조적 상태를 유지할 수 있는 집적 회로 상에 위치한 로직을 가리키며, 여기서, 각각의 독립적으로 유지되는 구조적 상태는 적어도 일부의 전용 실행 자원과 연관된다. 하드웨어 스레드는, 독립적인 구조적 상태를 유지할 수 있는 집적 회로 상에 위치한 임의의 로직을 말하며, 여기서, 독립적으로 유지된 구조적 상태는 실행 리소스로의 액세스를 공유한다. 볼 수 있는 바와 같이, 소정의 리소스는 공유되고 다른 리소스는 소정의 구조적 상태에 전용이 될 때, 하드웨어 스레드와 코어라는 용어간의 경계는 중첩된다. 그러나 종종, 코어와 하드웨어 스레드는 운영 체제에 의해 개개의 논리적 프로세서로서 인식되고, 여기서, 운영 체제는 각각의 논리적 프로세서 상에서 동작을 개별적으로 스케쥴링할 수 있다.
다양한 실시예에서, 처리 요소는 또한 하나 이상의 ALU(arithmetic logic unit), FPU(floating point unit), 캐시, 명령어 파이프라인, 인터럽트 핸들링 하드웨어, 레지스터, 또는 처리 요소의 동작을 용이하게 하기 위한 다른 하드웨어를 포함할 수 있다.
I/O 제어기(410)는, CPU(402)와 같은, 전자 시스템과 사이에서 데이터를 송수신할 수 있는 임의의 적합한 디바이스를 지칭할 수 있는, CPU(102)와 I/O 디바이스 사이에서 데이터를 통신하기 위한 로직을 포함하는 통합형 I/O 제어기이다. 예를 들어, I/O 디바이스는 그래픽 가속기 또는 오디오 제어기와 같은 A/V(audio/video) 디바이스 제어기; 플래시 메모리 디바이스, 자기 저장 디스크, 또는 광 저장 디스크 제어기와 같은, 데이터 저장 디바이스 제어기; 무선 송수신기; 네트워크 프로세서; 네트워크 인터페이스 제어기; 모니터, 프린터, 마우스, 키보드, 또는 스캐너와 같은 다른 입력 디바이스에 대한 제어기; 또는 다른 적합한 디바이스를 포함할 수 있다. 특정 실시예에서, I/O 디바이스는 I/O 제어기(410)를 통해 CPU(402)에 연결되는 저장 디바이스(406)를 포함할 수 있다.
I/O 디바이스는, PCI(peripheral component interconnect), PCIe(PCI Express), USB(Universal Serial Bus), SAS(Serial Attached SCSI), SATA(Serial ATA), FC(Fibre Channel), IEEE 802.3, IEEE 802.11, 또는 다른 현재 또는 장래 시그널링 프로토콜과 같은, 임의의 적합한 시그널링 프로토콜을 사용하여 CPU(402)의 I/O 제어기(410)와 통신할 수 있다. 특정 실시예에서, I/O 제어기(410) 및 기반을 이루는 I/O 디바이스는 (예를 들어, www.nvmexpress.org/specifications/에서 이용 가능한 사양 중 하나 이상에 의해 설명되는 바와 같은) NVMe(Non-Volatile Memory Express) 또는 (예를 들어, http://www.intel.com/content/www/us/en/io/serial-ata/serial-ata-ahci-spec-rev1-3-1.html에서 이용 가능한 Serial ATA AHCI: Specification, Rev. 1.3.1과 같은 하나 이상의 AHCI 사양에 의해 설명되는 바와 같은) AHCI(Advanced Host Controller Interface)와 같은 논리 디바이스 인터페이스 사양에 따라 데이터 및 커맨드를 통신할 수 있다. 다양한 실시예에서, I/O 제어기에 연결되는 I/O 디바이스는 오프-칩(off-chip) 위치될 수 있거나(즉, CPU(402)와 동일한 칩 상에 있지 않음) 또는 CPU(402)와 동일한 칩 상에 통합될 수 있다.
CPU 메모리 제어기(412)는 하나 이상의 시스템 메모리 디바이스(407)와의 사이의 데이터의 흐름을 제어하는 로직을 포함하는 통합형 메모리 제어기이다. CPU 메모리 제어기(412)는 시스템 메모리 디바이스(407)를 판독하거나, 시스템 메모리 디바이스(407)에 기입하거나, 또는 시스템 메모리 디바이스(407)에 다른 연산을 요청하도록 동작 가능한 로직을 포함할 수 있다. 다양한 실시예에서, CPU 메모리 제어기(412)는 코어(414) 및/또는 I/O 제어기(410)로부터 기입 요청을 수신할 수 있고, 이러한 요청에 명시되는 데이터를 시스템 메모리 디바이스(407)에 저장하도록 제공할 수 있다. CPU 메모리 제어기(412)는 또한 시스템 메모리 디바이스(407)로부터 데이터를 판독하고 판독 데이터를 I/O 제어기(410) 또는 코어(414)에 제공할 수 있다. 연산 동안, CPU 메모리 제어기(412)는 메모리에서 데이터를 판독하거나 메모리에 데이터를 기입하기 위해 (또는 다른 연산들을 수행하기 위해) 시스템 메모리 디바이스(407)의 하나 이상의 어드레스를 포함하는 커맨드를 발행할 수 있다. 일부 실시예에서는, CPU 메모리 제어기(412)가 CPU(402)와 동일한 칩 상에 구현될 수도 있고, 반면 다른 실시예에서는, CPU 메모리 제어기(412)가 CPU(402)의 것과 상이한 칩 상에 구현될 수도 있다. I/O 제어기(410)는 하나 이상의 저장 디바이스(406)에 대해 유사한 연산을 수행할 수 있다.
CPU(402)는 또한 외부 I/O 제어기(404)를 통해 하나 이상의 다른 I/O 디바이스에 연결될 수 있다. 특정 실시예에서, 외부 I/O 제어기(404)는 저장 디바이스(406)를 CPU(402)에 연결할 수 있다. 외부 I/O 제어기(404)는 하나 이상의 CPU(402)와 I/O 디바이스 사이의 데이터의 흐름을 관리하는 로직을 포함할 수 있다. 특정 실시예에서, 외부 I/O 제어기(404)는 CPU(402)와 함께 마더보드 상에 위치된다. 외부 I/O 제어기(404)는 포인트-투-포인트 또는 다른 인터페이스를 사용하여 CPU(402)의 컴포넌트와 정보를 교환할 수 있다.
시스템 메모리 디바이스(407)는, 컴퓨터 시스템(400)의 기능을 제공하도록 프로세서(408)에 의해 사용되는 데이터와 같은, 임의의 적합한 데이터를 저장할 수 있다. 예를 들어, 실행되는 프로그램과 연관된 데이터 또는 코어(414)에 의해 액세스되는 파일이 시스템 메모리 디바이스(407)에 저장될 수 있다. 따라서, 시스템 메모리 디바이스(407)는 코어(414)에 의해 실행되거나 또는 달리 사용되는 데이터 및/또는 명령어의 시퀀스를 저장하는 시스템 메모리를 포함할 수 있다. 다양한 실시예에서, 시스템 메모리 디바이스(407)는 시스템 메모리 디바이스(407)로의 전력이 제거된 이후에도 저장된 채로 남아 있는 지속적 데이터(persistent data)(예를 들어, 사용자의 파일 또는 명령어 시퀀스)를 저장할 수 있다. 시스템 메모리 디바이스(407)는 특정 CPU(402)에 전용이거나 또는 컴퓨터 시스템(400)의 다른 디바이스(예를 들어, 하나 이상의 다른 프로세서 또는 다른 디바이스)와 공유될 수 있다.
다양한 실시예에서, 시스템 메모리 디바이스(407)는 임의 수의 메모리 모듈, 메모리 디바이스 제어기, 및 다른 지원 로직(도시되지 않음)을 포함하는 메모리를 포함할 수 있다. 메모리 모듈은 비-휘발성 메모리 및/또는 휘발성 메모리를 포함할 수 있다. 비-휘발성 메모리는 매체에 의해 저장되는 데이터의 상태를 유지하는데 전력을 요구하지 않는 저장 매체이다. 비-휘발성 메모리의 비제한적인 예는, (평면형 또는 3D NAND 플래시 메모리 또는 NOR 플래시 메모리와 같은) 솔리드 스테이트 메모리, 3D 크로스포인트 메모리, 칼코겐화물 상 변화 재료(예를 들어, 칼코겐화물 유리)를 사용하는 메모리 디바이스, 바이트 어드레싱 가능 비-휘발성 메모리 디바이스, 강유전체 메모리, SONOS(silicon-oxide-nitride-oxide-silicon) 메모리, 폴리머 메모리(예를 들어, 강유전체 폴리머 메모리), Fe-TRAM(ferroelectric transistor random access memory) 오보닉 메모리, 나노와이어 메모리, EEPROM(electrically erasable programmable read-only memory), 다른 다양한 유형의 비-휘발성 RAM(random access memories), 및 자기 저장 메모리 중 임의의 것 또는 이들의 조합을 포함할 수 있다. 일부 실시예에서, 3D 크로스포인트 메모리는, 메모리 셀이 워드 라인과 비트 라인의 교차점에 위치하고 개별적으로 어드레싱 가능하며 비트 저장이 벌크 저항에서의 변화에 기초하는, 트랜지스터-리스 적층 가능 크로스 포인트 아키텍처(transistor-less stackable cross point architecture)를 포함할 수 있다. 휘발성 메모리는 매체에 의해 저장되는 데이터의 상태를 유지하는데 전력을 요구하는 저장 매체이다. 휘발성 메모리의 예는, DRAM(dynamic random access memory) 또는 SRAM(static random access memory)과 같은, 다양한 유형의 RAM(random access memory)을 포함할 수 있다. 메모리 모듈에서 사용될 수 있는 하나의 특정 유형의 DRAM은 SDRAM(synchronous dynamic random access memory)이다. 일부 실시예에서, 휘발성 메모리인 메모리(407)의 임의의 부분은 이에 제한되는 것은 아니지만 DDR(Double Data Rate) 표준, 예를 들어, DDR3, 4 및 5, 또는 LPDDR4(Low Power DDR4)는 물론 신생 표준을 포함하는 JEDEC 표준들을 준수할 수 있다.
저장 디바이스(406)는, 컴퓨터 시스템(400)의 기능을 제공하도록 프로세서(408)에 의해 사용되는 데이터와 같은, 임의의 적합한 데이터를 저장할 수 있다. 예를 들어, 실행되는 프로그램과 연관된 데이터 또는 코어(414A 및 114B)에 의해 액세스되는 파일이 저장 디바이스(406)에 저장될 수 있다. 따라서, 일부 실시예에서, 저장 디바이스(406)는 코어(414A 및 114B)에 의해 실행되거나 또는 달리 실행되는 데이터 및/또는 명령어의 시퀀스를 저장하는 시스템 메모리로서 기능할 수 있다. 다양한 실시예에서, 저장 디바이스(406)는 저장 디바이스(406)로의 전력이 제거된 이후에도 저장된 채로 남아 있는 지속적 데이터(예를 들어, 사용자의 파일 또는 소프트웨어 애플리케이션 코드)를 저장할 수 있다. 저장 디바이스(406)는 CPU(402)에 전용되거나 또는 컴퓨터 시스템(400)의 다른 디바이스(예를 들어, 다른 CPU 또는 다른 디바이스)와 공유될 수 있다.
도시되는 실시예에서, 저장 디바이스(406)는 저장 디바이스 제어기(418), 및 데이터를 저장하도록 동작 가능한 4개의 메모리 모듈(422A~D)을 포함하는 하나의 메모리(416)를 포함하지만, 저장 디바이스는 임의의 적합한 수의 메모리 모듈을 포함할 수 있다. 메모리 모듈(422A)은 하나 이상의 비트를 저장하도록 각각 동작 가능한 복수의 메모리 셀을 포함한다. 메모리 모듈(422A)의 셀은, 행(예를 들어, 워드라인) 및 열(예를 들어, 비트라인)로, 3차원 구조로, 또는 다른 방식으로와 같이, 임의의 적합한 방식으로 배열될 수 있다. 다양한 실시예에서, 셀은 뱅크, 블록, 서브블록, 워드라인, 페이지, 프레임, 바이트, 또는 다른 적합한 그룹으로 논리적으로 그룹화될 수 있다. 다양한 실시예에서, 메모리 모듈(422A)은 하나 이상의 NAND 플래시 메모리 어레이를 포함한다.
메모리 모듈(422A)은 위에 열거된 휘발성 또는 비-휘발성 메모리 중 임의의 것 또는 다른 적합한 메모리를 포함할 수 있다. 특정 실시예에서, 메모리 모듈(422A)은, 평면형 또는 3D NAND 플래시 메모리와 같은, 비-휘발성 메모리를 포함한다. 특정 실시예에서, 비-휘발성 메모리가 있는 메모리 모듈(422A)은, JESD218, JESD219, JESD220-1, JESD220C, JESD223C, JESD223-1, 또는 다른 적합한 표준(본 명세서에 인용되는 JEDEC 표준은 www.jedec.org에서 이용 가능함)과 같은, JEDEC(Joint Electron Device Engineering Council)에 의해 공포된 비-휘발성 메모리에 대한 하나 이상의 표준을 준수할 수 있다. 특정 실시예에서, 저장 디바이스는, DDR(Double Data Rate) SDRAM에 대한 JESD79F, DDR2 SDRAM에 대한 JESD79-2F, DDR3 SDRAM에 대한 JESD79-3F, 또는 DDR4 SDRAM에 대한 JESD79-4A(이러한 표준은 www.jedec.org에서 이용 가능함)와 같은, SDRAM 메모리에 대한 JEDEC에 의해 공포된 표준의 하나 이상의 부분을 준수하는 NAND 플래시 메모리를 포함한다. 이러한 표준(및 유사한 표준)은 DDR 기반 표준이라고 지칭될 수 있고, 이러한 표준을 구현하는 저장 디바이스의 통신 인터페이스는 DDR 기반 인터페이스라고 지칭될 수 있다. 예를 들어, NAND 플래시 메모리를 포함하는 저장 디바이스(406)는 DDR 기반 표준을 준수하는 포맷을 갖는 커맨드를 수신할 수 있고, 이러한 커맨드를 저장 디바이스(406)의 NAND 플래시 메모리와 호환 가능한 하나 이상의 커맨드로 변환할 수 있다. 이와 유사하게, 저장 디바이스(406)는 NAND 플래시 메모리 상에서 수행되는 연산로부터의 결과를, 이러한 결과를 CPU(402)에 전송신하기 이전에, DDR 기반 표준을 준수하는 포맷으로 포맷할 수 있다.
특정 실시예에서, 메모리 디바이스(422)는 반도체 패키지이다. 다양한 실시예에서, 반도체 패키지는 하나 이상의 반도체 다이(칩이라고 또한 지칭됨)(예를 들어, 메모리 칩(423A~D))을 포함하는 케이싱을 포함할 수 있다. 패키지는 외부 회로에 접속하는데 사용되는 콘택트 핀 또는 리드를 또한 포함할 수 있다. 그러나, 패키지는 메모리 디바이스(422)가 취할 수 있는 형태의 하나의 예에 불과하고, 그 이유는 메모리 디바이스가 임의의 적합한 물리적 배열에서 하나 이상의 메모리 모듈 및 관련 로직의 임의의 적합한 배열일 수 있기 때문이다. 예를 들어, 비록 단일의 물리적 패키지가 단일의 메모리(422)를 포함할 수 있더라도, 다수의 메모리 디바이스(422)가 단일의 패키지 상에 존재할 수도 있고 또는 메모리(422)가 다수의 패키지에 분산될 수도 있다.
메모리(416)는 회로 기판, 다이, 디스크 드라이브, 다른 매체 또는 이들의 임의의 조합(또는 하나 이상의 패키지와의 조합)과 같은 하나 이상의 상이한 물리적 매체로 구현될 수 있다. 특정 실시예에서, 메모리(416)는, 각각이 반도체 패키지를 포함하는 복수의 메모리 장치(422)에 연결된 회로 기판을 포함한다.
저장 디바이스(406)는 임의의 적합한 유형의 메모리를 포함할 수 있고 다양한 실시예에서 특정 속도, 기술, 또는 폼 팩터의 메모리에 제한되지 않는다. 예를 들어, 저장 디바이스(406)는 (솔리드 스테이트 드라이브와 같은) 디스크 드라이브, 플래시 드라이브, 컴퓨팅 디바이스와 통합되는 메모리(예를 들어, 컴퓨팅 디바이스의 회로 보드 상에 통합되는 메모리), 메모리 소켓에 삽입될 수 있는 메모리 모듈(예를 들어, 듀얼 인-라인 메모리 모듈), 또는 다른 유형의 저장 디바이스일 수 있다. 더욱이, 컴퓨터 시스템(400)은 다수의 상이한 유형의 저장 디바이스를 포함할 수 있다. 저장 디바이스(406)는 DDR 기반 프로토콜, PCI, PCIe, USB, SAS, SATA, FC, SMBus(System Management Bus), 또는 다른 적합한 프로토콜과 같은 임의의 적합한 통신 프로토콜을 사용하여 CPU 메모리 제어기(412) 또는 I/O 제어기(410)와 통신하는 임의의 적합한 인터페이스를 포함할 수 있다. 저장 디바이스(406)는 NVMe, AHCI, 또는 다른 적합한 사양과 같은 임의의 적합한 논리 디바이스 인터페이스 사양에 따라 CPU 메모리 제어기(412) 또는 I/O 제어기(410)와 통신하는 통신 인터페이스를 또한 포함할 수 있다. 특정 실시예에서, 저장 디바이스(406)는 각각이 CPU 메모리 제어기(412) 및/또는 I/O 제어기(410)와 별개의 프로토콜을 사용하여 통신하는 다수의 통신 인터페이스를 포함할 수 있다.
저장 디바이스 제어기(418)는 (예를 들어, CPU 메모리 제어기(412) 또는 I/O 제어기(410)를 통해) CPU(402)로부터 요청을 수신하고, 이러한 요청이 메모리(416)(또는 그 상의 메모리 유닛(들))에 대해 수행되게 하고, 이러한 요청과 연관된 데이터를 CPU(402)에 (예를 들어, CPU 메모리 제어기(412) 또는 I/O 제어기(410)를 통해) 제공하는 로직을 포함할 수 있다. 제어기(418)는 메모리 연산 동안 마주치게 되는 에러를 검출 및/또는 정정하도록 또한 동작 가능할 수 있다. 실시예에서, 제어기(418)는 또한, 웨어 레벨링(wear leveling)을 수행하기 위해 그리고/또는 셀이 신뢰성있게 기입될 수 있는 추정 횟수에 가까울 때를 검출하기 위해, 특정 셀(또는 논리 셀 그룹)이 기입된 횟수를 추적한다. 웨어 레벨링을 수행함에 있어서, 저장 디바이스 제어기(418)는 특정 블록이 다른 블록보다 더 많이 기입되지 않도록 기입 연산을 메모리(416)의 메모리 블록 사이에 균등하게 분산시킬 수 있다. 다양한 실시예에서, 제어기(418)는 또한 온도 또는 전압과 같은 저장 디바이스(406)의 다양한 특성을 모니터링하고 연관된 통계를 CPU(402)에 보고할 수 있다. 저장 디바이스 제어기(418)는 메모리(416)와 동일한 보드 또는 디바이스 상에 또는 상이한 보드, 또는 디바이스 상에 구현될 수 있다. 예를 들어, 일부 환경에서, 저장 디바이스 제어기(418)는 컴퓨터 시스템(400)의 다수의 상이한 메모리(416)(각각이 동일한 유형의 메모리일 수 있거나 상이한 유형일 수 있음)에 대한 메모리 연산을 관리하는 중앙 집중형 저장 제어기일 수 있다(그리고 따라서 본 명세서에 설명되는 저장 디바이스 제어기 기능을 자신이 연결되는 메모리 중 임의의 것에 제공할 수 있음).
다양한 실시예에서, 저장 디바이스(406)는 어드레스 변환 엔진(420)을 또한 포함한다. 도시된 실시예에서, 어드레스 변환 엔진(420)이 저장 디바이스 제어기(418)의 일부로서 도시되어 있지만, 다양한 실시예에서, 어드레스 변환 엔진(420)은 저장 디바이스 제어기(418)와 별개이고 저장 디바이스 제어기(418)에 통신 가능하게 연결될 수 있다. 다양한 실시예에서, 어드레스 변환 엔진(420)은 저장 디바이스 제어기(418)와 동일한 칩 또는 패키지 상에 또는 상이한 칩 또는 패키지 상에 통합될 수 있다.
다양한 실시예에서, 어드레스 변환 엔진(420)은 논리 어드레스 공간(예를 들어, 저장 디바이스(406)에 연결되는 컴퓨팅 호스트에 가시적인 어드레스 공간)과 저장 디바이스(406)의 메모리(416)의 물리 어드레스 공간(컴퓨팅 호스트에 노출될 수 있거나 또는 그렇지 않을 수 있음) 사이의 매핑을 저장하고 업데이트하는 로직을 포함할 수 있다. 논리 어드레스 공간은 저장 디바이스(406)의 물리 어드레스 공간을 통해 어드레싱 가능한 메모리 대응하는 물리 그룹 상에 물리적으로 저장되는 데이터의 복수의 논리 그룹을 노출시킬 수 있다. 물리 어드레스 공간의 물리 어드레스는, 물리 메모리 위치가 위치되는 메모리(416)의 식별자, 물리 메모리 위치가 위치되는 메모리 모듈(422A)의 식별자(예를 들어, 논리 유닛 번호), 물리 메모리 위치의 하나 이상의 페이지, 물리 메모리 위치의 하나 이상의 서브블록, 물리 메모리 위치의 하나 이상의 워드라인, 물리 메모리 위치의 하나 이상의 비트라인, 또는 그의 다른 적합한 식별자 또는 인코딩과 같은, 저장 디바이스(406)의 물리 메모리 위치(예를 들어, 메모리(416)의 메모리 내의 위치)를 식별하는 임의의 적합한 정보를 포함할 수 있다.
다양한 실시예에서, 저장 디바이스(406)는 또한, 데이터가 메모리(416)에 기입될 때 수행되는 프로그래밍 시퀀스, 데이터가 메모리(416)로부터 판독될 때 수행되는 판독 시퀀스, 또는 데이터가 메모리(416)로부터 소거될 때 수행되는 소거 시퀀스를 제어하도록, 메모리 디바이스 제어기(426)와 함께 혹은 단독으로 동작할 수 있는 프로그램 제어 로직(424)을 포함한다. 다양한 실시예에서, 프로그램 제어 로직(124)은 데이터의 프로그래밍, 판독, 및/또는 소거 동안 메모리 어레이의 하나 이상의 메모리 셀, 워드라인, 비트라인, 및/또는 다른 부분에 인가되는 다양한 전압(또는 어느 전압이 제공되어야 하는지를 표시하는 정보)을 제공하고, 에러 정정을 수행하고, 다른 적합한 기능을 수행할 수 있다.
다양한 실시예에서, 프로그램 제어 로직(424)은 저장 디바이스 제어기(418)와 동일한 칩 상에 통합될 수도 있고 또는 상이한 칩 상에 통합될 수도 있다. 도시된 실시예에서, 프로그램 제어 로직(424)이 저장 디바이스 제어기(418)의 일부로서 도시되지만, 다양한 실시예에서, 프로그램 제어 로직(424)의 전부 또는 일부분은 저장 디바이스 제어기(418)와 별개이고 저장 디바이스 제어기(418)에 통신 가능하게 결합될 수 있다. 예를 들어, 프로그램 제어 로직(424)의 전부 또는 일부분은 메모리(416) 및/또는 메모리 디바이스(422A~D)과 동일한 패키지 또는 칩 상에 위치될 수 있다.
일부 실시예에서, 시스템(400)의 요소의 전부, 또는 일부는 동일한 회로 보드(예를 들어, 마더보드) 상에 상주한다(또는 이에 결합된다). 다양한 실시예에서, 요소 사이에 임의의 적합한 파티셔닝이 존재할 수 있다. 예를 들어, CPU(402)에 도시되는 요소가 단일 다이(즉, 온-칩) 또는 패키지 상에 위치될 수도 있거나 또는 CPU(402)의 요소 중 임의의 것이 오프-칩 또는 오프-패키지 위치될 수도 있다. 이와 유사하게, 저장 디바이스(406)에 도시된 요소는 단일 칩 또는 다수의 칩 상에 위치될 수 있다. 다양한 실시예에서, 저장 디바이스(406) 및 호스트 컴퓨팅 디바이스(예를 들어, CPU(402))는 동일한 회로 보드 상에 또는 동일한 디바이스 상에 위치될 수 있고, 다른 실시예에서, 저장 디바이스(406) 및 호스트 컴퓨팅 디바이스는 상이한 회로 보드 또는 디바이스 상에 위치될 수 있다.
시스템(400)의 컴포넌트는 임의의 적합한 방식으로 서로 결합될 수 있다. 예를 들어, 버스는 컴포넌트 중 임의의 것을 서로 결합시킬 수 있다. 버스는, 멀티-드롭 버스, 메시 인터커넥트, 링 인터커넥트, 포인트-투-포인트 인터커넥트, 직렬 인터커넥트, 병렬 버스, 코히어런트(예를 들어, 캐시 코히어런트) 버스, 계층화된 프로토콜 아키텍처, 차동 버스, 및 GTL(Gunning transceiver logic) 버스와 같은, 임의의 알려진 인터커넥트를 포함할 수 있다. 다양한 실시예에서, 통합 I/O 서브시스템은, 코어(414), 하나 이상의 CPU 메모리 제어기(412), I/O 제어기(410), 통합 I/O 디바이스, DMA(direct memory access) 로직(도시되지 않음) 등과 같은, 시스템(400)의 다양한 컴포넌트 사이의 포인트-투-포인트 멀티플렉싱 로직을 포함한다. 다양한 실시예에서, 컴퓨터 시스템(400)의 컴포넌트는, 라우터, 스위치, 또는 다른 컴퓨팅 디바이스와 같은, 임의의 수의 개재 네트워크 노드를 포함하는 하나 이상의 네트워크를 통해 서로 연결될 수 있다. 예를 들어, 호스트 컴퓨팅 디바이스(예를 들어, CPU(402)) 및 저장 디바이스(406)는 네트워크를 통해 통신 가능하게 연결될 수 있다.
비록 도시되지 않더라도, 시스템(400)은 전력을 수용하는 배터리 및/또는 전원 콘센트 커넥터 및 연관된 시스템, CPU(402)에 의해 제공되는 데이터를 출력하는 디스플레이, 또는 CPU(402)로 하여금 네트워크를 통해 통신하게 하는 네트워크 인터페이스를 사용할 수 있다. 다양한 실시예에서, 배터리, 전원 콘센트 커넥터, 디스플레이, 및/또는 네트워크 인터페이스는 CPU(402)에 통신 가능하게 결합될 수 있다. 리뉴어블 에너지(예를 들어, 태양열 전력 또는 모션 기반 전력)와 같은 전력의 다른 소스가 사용될 수 있다.
본 명세서에서 설명된 흐름은 특정 실시예에서 일어날 수 있는 동작을 나타낸 것에 불과하다. 도면에 도시된 동작 중 일부는 적절한 경우에 반복되거나, 조합되거나, 수정되거나, 생략될 수 있다. 나아가, 동작은, 특정 실시예의 범위를 벗어나지 않으면서 임의의 적절한 순서로 수행될 수 있다.
설계는, 생성부터 시뮬레이션까지 그리고 제조까지 다양한 스테이지를 거칠 수 있다. 설계를 나타내는 데이터는 다수의 방식으로 설계를 나타낼 수 있다. 먼저, 시뮬레이션에서 유용한 것으로, 하드웨어는 하드웨어 기술 언어(HDL) 또는 또 다른 기능적 기술 언어를 이용하여 표현될 수 있다. 나아가, 로직 및/또는 트랜지스터 게이트를 갖는 회로 레벨 모델이 설계 프로세스의 몇몇 스테이지에서 산출될 수 있다. 더욱이, 몇몇 스테이지에서 대부분의 설계는 하드웨어 모델에서의 다양한 디바이스의 물리적 배치를 나타내는 데이터 레벨에 도달한다. 종래의 반도체 제조 기술이 사용되는 경우에, 하드웨어 모델을 나타내는 데이터는 집적 회로를 생산하는데 사용되는 마스크에 대한 상이한 마스크 층상에서 다양한 특징의 존재 또는 부재를 특정하는 데이터일 수 있다. 몇몇 구현예에서, 이런 데이터는 GDS II(Graphic Data System II), OASIS(Open Artwork System Interchange Standard), 또는 유사한 포맷과 같은 데이터 베이스 파일 포맷으로 저장될 수 있다.
일부 구현예에서, 소프트웨어 기반 하드웨어 모델, HDL 및 다른 기능적 기술 언어 오브젝트은, 예 중에서도 특히, RTL(register transfer language) 파일을 포함할 수 있다. 이러한 오브젝트는, 설계 도구가 HDL 오브젝트(또는 모델)를 받고, 설명된 하드웨어의 속성에 대해 HDL 오브젝트를 파싱하며, 오브젝트로부터 물리적 회로 및/또는 온 칩 레이아웃을 결정할 수 있도록, 머신 파싱가능할 수 있다. 설계 도구의 출력은 물리적 디바이스를 제조하기 위해 사용될 수 있다. 예를 들어, 설계 도구는 HDL 오브젝트에서 모델링된 시스템을 실현하기 위해 구현될 수 있는 다른 속성 중에서도 특히, HDL 오브젝트로부터 다양한 하드웨어 및/또는 펌웨어 요소의 구성, 예를 들어, 버스 폭,(크기 및 유형을 포함하는) 레지스터, 메모리 블록, 물리적 링크 경로, 패브릭 토폴로지를 결정할 수 있다. 설계 도구는 SoC(system on chip) 및 다른 하드웨어 디바이스의 토폴로지 및 패브릭 구성을 결정하기 위한 도구를 포함할 수 있다. 일부 경우에서, HDL 오브젝트는 설명된 하드웨어를 제조하기 위해 제조 장비에 의해 사용될 수 있는 모델 및 설계 파일을 개발하기 위한 기반으로서 사용될 수 있다. 사실, HDL 오브젝트 자체는 설명된 하드웨어를 제조하도록 제조 시스템 소프트웨어에의 입력으로서 제공될 수 있다.
설계의 임의의 표현에서, 데이터는 임의의 형태의 머신 판독가능 매체에 저장될 수 있다. 메모리 또는 디스크와 같은 자기 또는 광 저장 디바이스는 이러한 정보를 전송하기 위해 변조되거나 또는 다른 방식으로 생성되는 광 또는 전기파를 통해 전송되는 전기 반송파를 저장할 수 있는 머신 판독가능 매체일 수 있다. 코드 또는 설계를 나타내거나 반송하는 전기적 반송파가 전송될 때, 전기적 신호의 복사, 버퍼링 또는 재전송이 수행되는 정도까지, 새로운 복사가 이뤄진다. 따라서, 통신 제공자 또는 네트워크 제공자는 반송파에 인코딩되는 정보와 같은 아티클을 적어도 일시적으로, 유형의 머신 판독가능 매체상에 저장할 수 있어서, 본 개시의 실시예의 기술을 구현한다.
본 명세서에서 사용된 모듈은 하드웨어, 소프트웨어, 및/또는 펌웨어의 임의의 조합을 말한다. 예로서, 모듈은 마이크로제어기에 의해 실행되도록 적응된 코드를 저장하는 비일시적인 매체와 연관되는 마이크로제어기와 같은 하드웨어를 포함한다. 그러므로 일 실시예에서, 모듈이라고 언급하는 것은 비일시적 매체상에 보유되는 코드를 인식 및/또는 실행하도록 명시적으로 구성된 하드웨어를 말하는 것이다. 또한, 다른 실시예에서, 모듈의 사용은 마이크로제어기에 의해 실행되어 미리 설정된 동작을 수행하도록 명시적으로 적응된 코드를 포함하는 비일시적 매체를 가리킨다. 또 다른 실시예에서 추론될 수 있는 것처럼, (이 예에서) 모듈이라는 용어는 마이크로제어기와 비일시적 매체의 조합을 말할 수 있다. 종종 별개의 것으로 도시되는 모듈 경계는 일반적으로 변하기도 하며 잠재적으로 중첩한다. 예를 들어, 제 1 모듈 및 제 2 모듈은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 조합을 공유하면서, 잠재적으로 일부의 독립적인 하드웨어, 소프트웨어, 또는 펌웨어를 유지할 수 있다. 일 실시예에서, 로직이라는 용어의 사용은 트랜지스터, 레지스터와 같은 하드웨어, 또는 프로그래머블 로직 디바이스와 같은 다른 하드웨어를 포함한다.
로직은 라우팅 테이블(112), 인터페이스(104), 인터페이스(106), 코어(209), 캐시 홈 에이전트(212), BIOS(216), 메모리 제어기(MC0-7), DDR5 메모리 디바이스(206), CXL 메모리 디바이스(208), CXL 호스트 브리지(210), CPU(402), 외부 I/O 제어기(404), 프로세서(408), 코어(414A 및 414B), I/O 제어기(410), CPU 메모리 제어기(412), 저장 디바이스(406), 시스템 메모리 디바이스(407), 메모리 칩(416), 저장 디바이스 제어기(418), 어드레스 변환 엔진(420), 메모리 파티션(422), 프로그램 제어 로직(424), 칩 제어기(426), 또는 본 명세서에 기술된 다른 엔티티 또는 컴포넌트, 또는 이 중 임의 것의의 서브컴포넌트와 같은 다양한 컴포넌트의 기능 중 임의의 것을 구현하는데 사용될 수 있다. "로직"은 하나 이상의 기능을 수행하기 위한 하드웨어, 펌웨어, 소프트웨어 및/또는 각각의 조합을 지칭할 수 있다. 다양한 실시예에서, 로직은 소프트웨어 명령어를 실행하도록 동작 가능한 마이크로프로세서 또는 다른 처리 요소, ASIC(application specific integrated circuit)와 같은 이산 로직, FPGA(field programmable gate array)와 같은 프로그래밍된 논리 장치, 명령어를 포함하는 메모리 장치, 논리 장치의 조합(예컨대, 인쇄 회로 기판 상에서 발견됨), 또는 다른 적절한 하드웨어 및/또는 소프트웨어를 포함할 수 있다. 로직은 하나 이상의 게이트 또는 다른 회로 컴포넌트를 포함할 수 있다. 일부 실시예에 있어서, 로직은 또한 완전히 소프트웨어로 구현될 수 있다. 소프트웨어는 비일시적인 컴퓨터 판독 가능 저장 매체에 기록되는 소프트웨어 패키지, 코드, 명령어, 명령어 세트 및/또는 데이터로 구현될 수 있다. 펌웨어는 저장 디바이스에 하드-코딩된(예컨대, 비휘발성) 코드, 명령어 또는 명령어 세트 및/또는 데이터로 구현될 수 있다.
일 실시예에 있어서, '~하기 위한(to)' 또는 "~하도록 구성되는(configured to)'과 같은 문구를 사용하는 것은, 지정된 또는 결정된 태스크를 수행하도록 장치, 하드웨어, 로직, 또는 요소를 배치, 조립, 제조, 판매, 수입 및/또는 설계하는 것을 의미한다. 이 실시예에서, 동작하고 있지 않은 장치 또는 그 요소가 상기 지정된 태스크를 수행하도록 설계, 결합, 및/또는 상호 접속될 경우에도, 여전히 지정된 태스크를 '수행하도록 구성된다'고 한다. 단지 예시적인 실시예로서, 논리 게이트는 동작 동안 0 또는 1을 제공할 수 있다. 다만, 이네이블 신호를 클록에 '제공하도록 구성되는' 논리 게이트는 1 또는 0을 제공할 수 있는 모든 잠재적인 논리 게이트를 포함하는 것은 아니다. 대신에, 논리 게이트는 동작 동안 1 또는 0 출력이 클록을 활성화하는 방식으로 결합되는 것이다. '~하도록 구성되는'이라는 용어를 사용하는 것은 동작을 필요로 하는 것이 아니고, 대신에 장치, 하드웨어, 및/또는 요소의 잠재적인 상태에 초점을 맞춘다는 점에 다시 한번 유의해야 하며, 잠재적인 상태에서의 장치, 하드웨어, 및/또는 요소는 장치, 하드웨어, 및/또는 요소가 동작할 때 특정 태스크를 수행하도록 설계된다.
더욱이, 일 실시예에 있어서, '~을 할 수 있는(capable of/to)', 및/또는 '~하도록 동작 가능한(operable to)'이라는 문구를 사용하는 것은 일부 장치, 로직부, 하드웨어, 및/또는 요소가 지정된 방식으로 해당 장치, 로직부, 하드웨어, 및/또는 요소의 사용을 가능하게 하는 방식으로 설계된다는 것을 의미한다. 상기와 같이, 일 실시예에 있어서, ~하기 위한, ~을 할 수 있는, 또는 ~하도록 동작 가능한이라는 문구의 사용은 장치, 로직, 하드웨어, 및/또는 요소의 잠재적인 상태를 의미한다는 점에 유의해야 하고, 여기서 장치, 로직, 하드웨어, 및/또는 요소는 동작하고 있지 않지만, 지정된 방식으로 장치를 사용할 수 있도록 설계된다.
본 명세서에서 사용되는 값은 수, 상태, 논리적 상태, 또는 이진 논리적 상태의 임의의 알려진 표현을 포함한다. 흔히, 논리 레벨, 논리 값, 또는 논리적 값의 사용을 단순히 이진 논리 상태를 나타내는 1 및 0이라고도 한다. 예를 들어, 1은 높은 논리 레벨을 의미하고 0은 낮은 논리 레벨을 의미한다. 일 실시예에서, 트랜지스터 또는 플래시 셀과 같은 기억 소자는 단일의 논리적 값 또는 다수의 논리적 값을 유지할 수 있다. 그러나, 컴퓨터 시스템에서 다른 값 표현이 사용되었다. 예를 들어, 십진수 10은 이진 값 1010 및 16진수 문자 A로 표현될 수도 있다. 따라서, 값은 컴퓨터 시스템에 유지될 수 있는 정보의 임의의 표현을 포함한다.
또한, 상태는 값 또는 값의 부분으로 표현될 수 있다. 실시예로서, 논리적 1(one)과 같은 제 1 값은 디폴트 또는 초기 상태를 나타낼 수 있지만, 논리적 영(zero)과 같은 제 2 값은 비-디폴트 상태를 나타낼 수 있다. 나아가, 일 실시예에 있어서, 재설정 및 설정이라는 용어는 제각기 디폴트 및 업데이트된 값 또는 상태를 의미한다. 예를 들어, 디폴트 값은 잠재적으로 높은 논리적 값, 즉 재설정을 포함하는 반면, 업데이트된 값은 잠재적으로 낮은 논리적 값, 즉 설정을 포함한다. 임의의 수의 상태를 나타내기 위해 값들의 임의의 조합을 이용할 수 있다는 점에 유의한다.
전술한 방법, 하드웨어, 소프트웨어, 펌웨어 또는 코드의 실시예는 처리 요소에 의해 실행 가능한 머신-액세스 가능, 머신 판독 가능, 컴퓨터 액세스 가능, 또는 컴퓨터 판독 가능 매체에 저장된 명령어 또는 코드를 통해 구현될 수 있다. 비일시적 머신-액세스 가능/판독가능 매체는 정보를 컴퓨터 또는 전자 시스템과 같은 머신에 의해 판독 가능한 형태로 제공(즉, 저장 및/또는 전송)하는 임의의 메커니즘을 포함한다. 예를 들어, 머신-액세스 가능 매체는, 정보를 수신할 수 있는 비-일시적인 매체와는 구별되는, 정적 RAM(SRAM) 또는 동적 RAM(DRAM)과 같은 RAM(random-access memory); 자기 또는 광학 저장 매체; 플래시 메모리 디바이스; 전기 저장 디바이스; 광학 저장 디바이스; 음향 저장 디바이스; 일시적인(전파된) 신호(예컨대, 반송파, 적외선 신호, 디지털 신호)로부터 수신되는 정보를 유지하기 위한 다른 형태의 저장 디바이스 등을 포함한다.
본 개시물의 실시예를 수행하기 위한 프로그램 논리에 사용되는 명령어는 DRAM, 캐시, 플래시 메모리, 또는 그 밖의 저장부와 같은 시스템의 메모리 내에 저장될 수 있다. 더욱이, 명령어는 네트워크를 통해 또는 다른 컴퓨터 판독 가능 매체를 거쳐 배포될 수 있다. 따라서, 머신-판독 가능 매체는 머신(예컨대, 컴퓨터)에 의해 판독 가능한 형태로 정보를 저장 또는 전송하기 위한 임의의 메커니즘을 포함할 수 있고, 제한되는 것은 아니지만, 플로피 디스켓, 광학 디스크, CD-ROM(Compact Disc, Read-Only Memory), 및 자기-광학 디스크이고, 전기, 광학, 음향 또는 다른 형태의 전파된 신호(예컨대, 반송파, 적외선 신호, 디지털 신호 등)를 통해 인터넷을 통한 정보의 전송에 사용되는 ROM(Read-Only Memory), RAM(Random Access Memory), EPROM(Erasable Programmable Read-Only Memory), EEPROM(Electrically Erasable Programmable Read-Only Memory), 자기 또는 광학 카드, 플래시 메모리, 또는 유형의 머신-판독 가능 저장부를 포함할 수 있다. 따라서, 컴퓨터-판독 가능 매체는 기계(예컨대, 컴퓨터)에 의해 판독 가능한 형태로 전자 명령어 또는 정보를 저장 또는 전송하기에 적합한 임의의 타입의 유형의 기계-판독 가능 매체를 포함한다.
본 명세서 전체에서 "일 실시예" 또는 "실시예"라고 언급하는 것은 설명된 특정한 특징, 구조, 또는 특성이 본 개시물의 적어도 하나의 실시예에 포함된다는 것을 의미한다. 따라서, 본 명세서 전체의 여러 곳에서 "일 실시예에 있어서" 또는 "실시예에 있어서"라는 문구가 나오지만, 이는 반드시 전부 동일한 실시예를 의미하는 것은 아니다. 더욱이, 특정한 특징, 구조, 또는 특성은 하나 이상의 실시예에서 임의의 적절한 방식으로 결합될 수 있다.
전술한 명세서에서는, 구체적인 예시적인 실시예를 참조하여 상세한 설명이 제공되었다. 그러나, 첨부된 청구항에 제시된 바와 같은 본 개시의 보다 넓은 사상 및 범주로부터 일탈함이 없이 다양한 수정 및 변경이 이루어질 수 있음은 자명할 것이다. 따라서, 명세서 및 도면은 제한이 아니며 예시로서 간주되어야 한다. 더욱이, 전술한 실시예 및 다른 예시적인 언어의 사용은 반드시 동일한 실시예 또는 동일한 실시예를 의미하는 것은 아니며, 잠재적으로 동일한 실시예뿐만 아니라 상이하고 구별적인 실시예를 의미할 수도 있다.
예 1은, 적어도 하나의 제 1 메모리 디바이스에 연결되는 제 1 유형의 제 1 메모리 인터페이스와, 적어도 하나의 제 2 메모리 디바이스에 연결되는 제 2 유형의 제 2 메모리 인터페이스와, 적어도 하나의 제 1 메모리 디바이스 및 적어도 하나의 제 2 메모리 디바이스 사이에서 인접하는 논리 메모리 어드레스를 타겟으로 하는 메모리 요청을 인터리브하는 회로를 포함하는 프로세서를 포함한다.
예 2는 예 1의 청구 대상을 포함하며, 제 1 메모리 인터페이스는 통합형 메모리 제어기를 포함한다.
예 3은 예 1 또는 예 2의 청구 대상을 포함하며, 제 2 메모리 인터페이스는 CXL(Compute Express Link) 인터페이스를 포함한다.
예 4는 예 1 내지 예 3 중 어느 하나의 청구 대상을 포함하며, 적어도 하나의 제 1 메모리 디바이스는 복수의 DDR(double data rate) 메모리 디바이스를 포함하고, 적어도 하나의 제 2 메모리 디바이스는 복수의 CXL 메모리 디바이스를 포함한다.
예 5는 예 1 내지 예 4 중 어느 하나의 청구 대상을 포함하며, 메모리 요청을 인터리브하는 회로는, 논리 메모리 어드레스를 제 1 메모리 인터페이스 및 제 2 메모리 인터페이스에 매핑하는 엔트리를 포함하는 라우팅 테이블을 포함한다.
예 6은 예 1 내지 예 5 중 어느 하나의 청구 대상을 포함하며, 메모리 요청을 인터리브하는 회로를 구성하는 제 2 회로를 더 포함한다.
예 7은 예 1 내지 예 6 중 어느 하나의 청구 대상을 포함하며, 제 2 회로는 BIOS(basic input/output system)를 구현한다.
예 8은 예 1 내지 예 7 중 어느 하나의 청구 대상을 포함하며, 제 2 회로는 적어도 하나의 제 1 메모리 디바이스 및 적어도 하나의 제 2 메모리 디바이스의 파라미터를 분석하고, 파라미터에 기초하여, 인터리브하기 위한 적어도 하나의 제 1 메모리 디바이스 및 적어도 하나의 제 2 메모리 디바이스의 적합성을 결정한다.
예 9는 예 1 내지 예 8 중 어느 하나의 청구 대상을 포함하며, 파라미터는 적어도 하나의 제 1 메모리 디바이스 및 적어도 하나의 제 2 메모리 디바이스의 채널 대역폭을 포함한다.
예 10은 예 1 내지 예 9 중 어느 하나의 청구 대상을 포함하며, 파라미터는 적어도 하나의 제 1 메모리 디바이스 및 적어도 하나의 제 2 메모리 디바이스의 레이턴시를 포함한다.
예 11은 시스템으로서, 인접하는 메모리 어드레스를 타겟으로 하는 복수의 메모리 요청을 발행하는 프로세서 유닛과, 적어도 하나의 제 1 메모리 디바이스에 연결되는 제 1 유형의 제 1 메모리 인터페이스와, 적어도 하나의 제 2 메모리 디바이스에 연결되는 제 2 유형의 제 2 메모리 인터페이스와, 적어도 하나의 제 1 메모리 디바이스 및 적어도 하나의 제 2 메모리 디바이스 사이에서 복수의 메모리 요청을 인터리브하는 회로를 포함하는 시스템을 포함한다.
예 12는 예 11의 청구 대상을 포함하며, 적어도 하나의 제 1 메모리 디바이스를 더 포함한다.
예 13은 예 11 또는 예 12의 청구 대상을 포함하며, 적어도 하나의 제 2 메모리 디바이스를 더 포함한다.
예 14는 예 11 내지 예 13 중 어느 하나의 청구 대상을 포함하며, 프로세서에 통신 가능하게 연결된 배터리, 프로세서에 통신 가능하게 연결된 디스플레이, 또는 프로세서에 통신 가능하게 연결된 네트워크 인터페이스 중 하나 이상을 더 포함한다.
예 15는 예 11 내지 예 14 중 어느 하나의 청구 대상을 포함하며, 제 1 메모리 인터페이스는 통합형 메모리 제어기를 포함한다.
예 16은 예 11 내지 예 15 중 어느 하나의 청구 대상을 포함하며, 제 2 메모리 인터페이스는 CXL(Compute Express Link) 인터페이스를 포함한다.
예 17은 예 11 내지 예 16 중 어느 하나의 청구 대상을 포함하며, 적어도 하나의 제 1 메모리 디바이스는 복수의 DDR(double data rate) 메모리 디바이스를 포함하고, 적어도 하나의 제 2 메모리 디바이스는 복수의 CXL 메모리 디바이스를 포함한다.
예 18은 예 11 내지 예 17 중 어느 하나의 청구 대상을 포함하며, 메모리 요청을 인터리브하는 회로는, 논리 메모리 어드레스를 제 1 메모리 인터페이스 및 제 2 메모리 인터페이스에 매핑하는 엔트리를 포함하는 라우팅 테이블을 포함한다.
예 19는 예 11 내지 예 18 중 어느 하나의 청구 대상을 포함하며, 메모리 요청을 인터리브하는 회로를 구성하는 제 2 회로를 더 포함한다.
예 20은 예 11 내지 예 19 중 어느 하나의 청구 대상을 포함하며, 제 2 회로는 BIOS(basic input/output system)를 구현한다.
예 21은 예 11 내지 예 20 중 어느 하나의 청구 대상을 포함하며, 제 2 회로는 적어도 하나의 제 1 메모리 디바이스 및 적어도 하나의 제 2 메모리 디바이스의 파라미터를 분석하고, 파라미터에 기초하여, 인터리브하기 위한 적어도 하나의 제 1 메모리 디바이스 및 적어도 하나의 제 2 메모리 디바이스의 적합성을 결정한다.
예 22는 예 11 내지 예 21 중 어느 하나의 청구 대상을 포함하며, 파라미터는 적어도 하나의 제 1 메모리 디바이스 및 적어도 하나의 제 2 메모리 디바이스의 채널 대역폭을 포함한다.
예 23은 예 11 내지 예 22 중 어느 하나의 청구 대상을 포함하며, 파라미터는 적어도 하나의 제 1 메모리 디바이스 및 적어도 하나의 제 2 메모리 디바이스의 레이턴시를 포함한다.
예 24는 코드가 저장된 하나 이상의 컴퓨터 판독가능 매체를 포함하며, 코드는 머신으로 하여금, 적어도 하나의 제 1 메모리 디바이스 및 적어도 하나의 제 2 메모리 디바이스 사이에서 인접하는 메모리 어드레스를 가진 메모리 요청을 인터리브하도록 프로세서를 구성하게 하도록, 실행가능하며, 프로세서는 적어도 하나의 제 1 메모리 디바이스에 연결되는 제 1 유형의 제 1 메모리 인터페이스 및 적어도 하나의 제 2 메모리 디바이스에 연결되는 제 2 유형의 제 2 메모리 인터페이스를 포함한다.
예 25는 예 24의 청구 대상을 포함하며, 코드는 머신으로 하여금, 적어도 하나의 제 1 메모리 디바이스 및 적어도 하나의 제 2 메모리 디바이스의 파라미터를 분석하고, 파라미터에 기초하여, 인터리브하기 위한 적어도 하나의 제 1 메모리 디바이스 및 적어도 하나의 제 2 메모리 디바이스의 적합성을 결정하게 하도록, 실행가능하다.
예 26은 예 24 또는 예 25의 청구 대상을 포함하며, 파라미터는 적어도 하나의 제 1 메모리 디바이스 및 적어도 하나의 제 2 메모리 디바이스의 채널 대역폭을 포함한다.
예 27은 예 24 내지 예 26 중 어느 하나의 청구 대상을 포함하며, 파라미터는 적어도 하나의 제 1 메모리 디바이스 및 적어도 하나의 제 2 메모리 디바이스의 레이턴시를 포함한다.
예 28은 예 1 내지 예 27 중 어느 하나의 청구 대상을 포함하며, 인접하는 어드레스는 인접하는 논리 어드레스이다.

Claims (21)

  1. 프로세서로서,
    적어도 하나의 제 1 메모리 디바이스에 연결되는 제 1 유형의 제 1 메모리 인터페이스와,
    적어도 하나의 제 2 메모리 디바이스에 연결되는 제 2 유형의 제 2 메모리 인터페이스와,
    상기 적어도 하나의 제 1 메모리 디바이스 및 상기 적어도 하나의 제 2 메모리 디바이스 사이에서 인접하는 메모리 어드레스를 타겟으로 하는 메모리 요청을 인터리브하는 회로
    를 포함하는 프로세서.
  2. 제 1 항에 있어서,
    상기 제 1 메모리 인터페이스는 통합형 메모리 제어기를 포함하는,
    프로세서.
  3. 제 2 항에 있어서,
    상기 제 2 메모리 인터페이스는 CXL(Compute Express Link) 인터페이스를 포함하는,
    프로세서.
  4. 제 3 항에 있어서,
    상기 적어도 하나의 제 1 메모리 디바이스는 복수의 DDR(double data rate) 메모리 디바이스를 포함하고,
    상기 적어도 하나의 제 2 메모리 디바이스는 복수의 CXL 메모리 디바이스를 포함하는,
    프로세서.
  5. 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
    상기 메모리 요청을 인터리브하는 회로는, 논리 메모리 어드레스를 상기 제 1 메모리 인터페이스 및 상기 제 2 메모리 인터페이스에 매핑하는 엔트리를 포함하는 라우팅 테이블을 포함하는,
    프로세서.
  6. 제 1 항에 있어서,
    상기 메모리 요청을 인터리브하는 회로를 구성하는 제 2 회로
    를 더 포함하는 프로세서.
  7. 제 6 항에 있어서,
    상기 제 2 회로는 BIOS(basic input/output system)를 구현하는,
    프로세서.
  8. 제 6 항에 있어서,
    상기 제 2 회로는 상기 적어도 하나의 제 1 메모리 디바이스 및 상기 적어도 하나의 제 2 메모리 디바이스의 파라미터를 분석하고, 상기 파라미터에 기초하여, 인터리브하기 위한 상기 적어도 하나의 제 1 메모리 디바이스 및 상기 적어도 하나의 제 2 메모리 디바이스의 적합성을 결정하는,
    프로세서.
  9. 제 8 항에 있어서,
    상기 파라미터는 상기 적어도 하나의 제 1 메모리 디바이스 및 상기 적어도 하나의 제 2 메모리 디바이스의 채널 대역폭을 포함하는,
    프로세서.
  10. 제 8 항에 있어서,
    상기 파라미터는 상기 적어도 하나의 제 1 메모리 디바이스 및 상기 적어도 하나의 제 2 메모리 디바이스의 레이턴시를 포함하는,
    프로세서.
  11. 코드가 저장된 하나 이상의 컴퓨터 판독가능 매체로서,
    상기 코드는 머신으로 하여금, 적어도 하나의 제 1 메모리 디바이스 및 적어도 하나의 제 2 메모리 디바이스 사이에서 인접하는 메모리 어드레스를 가진 메모리 요청을 인터리브하도록 프로세서를 구성하게 하도록, 실행가능하며,
    상기 프로세서는 상기 적어도 하나의 제 1 메모리 디바이스에 연결되는 제 1 유형의 제 1 메모리 인터페이스 및 상기 적어도 하나의 제 2 메모리 디바이스에 연결되는 제 2 유형의 제 2 메모리 인터페이스를 포함하는,
    컴퓨터 판독가능 매체.
  12. 제 11 항에 있어서,
    상기 코드는 상기 머신으로 하여금, 상기 적어도 하나의 제 1 메모리 디바이스 및 상기 적어도 하나의 제 2 메모리 디바이스의 파라미터를 분석하고, 상기 파라미터에 기초하여, 인터리브하기 위한 상기 적어도 하나의 제 1 메모리 디바이스 및 상기 적어도 하나의 제 2 메모리 디바이스의 적합성을 결정하게 하도록, 실행가능한,
    컴퓨터 판독가능 매체.
  13. 제 12 항에 있어서,
    상기 파라미터는 상기 적어도 하나의 제 1 메모리 디바이스 및 상기 적어도 하나의 제 2 메모리 디바이스의 채널 대역폭을 포함하는,
    컴퓨터 판독가능 매체.
  14. 제 12 항에 있어서,
    상기 파라미터는 상기 적어도 하나의 제 1 메모리 디바이스 및 상기 적어도 하나의 제 2 메모리 디바이스의 레이턴시를 포함하는,
    컴퓨터 판독가능 매체.
  15. 시스템으로서,
    인접하는 메모리 어드레스를 타겟으로 하는 복수의 메모리 요청을 발행하는 프로세서 유닛과,
    적어도 하나의 제 1 메모리 디바이스에 연결되는 제 1 유형의 제 1 메모리 인터페이스와,
    적어도 하나의 제 2 메모리 디바이스에 연결되는 제 2 유형의 제 2 메모리 인터페이스와,
    상기 적어도 하나의 제 1 메모리 디바이스 및 상기 적어도 하나의 제 2 메모리 디바이스 사이에서 상기 복수의 메모리 요청을 인터리브하는 회로
    를 포함하는 시스템.
  16. 제 15 항에 있어서,
    상기 적어도 하나의 제 1 메모리 디바이스
    를 더 포함하는 시스템.
  17. 제 16 항에 있어서,
    상기 적어도 하나의 제 2 메모리 디바이스
    를 더 포함하는 시스템.
  18. 제 15 항에 있어서,
    상기 메모리 요청을 인터리브하는 회로를 구성하는 제 2 회로
    를 더 포함하는 시스템.
  19. 제 18 항에 있어서,
    상기 제 2 회로는 BIOS(basic input/output system)를 구현하는,
    시스템.
  20. 제 15 항에 있어서,
    상기 프로세서에 통신 가능하게 연결된 배터리, 상기 프로세서에 통신 가능하게 연결된 디스플레이, 또는 상기 프로세서에 통신 가능하게 연결된 네트워크 인터페이스 중 하나 이상
    을 더 포함하는 시스템.
  21. 적어도 하나의 제 1 메모리 디바이스 및 적어도 하나의 제 2 메모리 디바이스 사이에서 인접하는 메모리 어드레스를 타겟으로 하는 메모리 요청을 인터리브하는 단계 - 상기 적어도 하나의 제 1 메모리 디바이스에 제 1 유형의 제 1 메모리 인터페이스가 연결되고, 상기 적어도 하나의 제 2 메모리 디바이스에 제 2 유형의 제 1 메모리 인터페이스가 연결됨 -
    를 포함하는 방법.
KR1020220155774A 2021-12-21 2022-11-18 이종 메모리 타겟의 인터리빙 KR20230094964A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/557,963 US20220114115A1 (en) 2021-12-21 2021-12-21 Interleaving of heterogeneous memory targets
US17/557,963 2021-12-21

Publications (1)

Publication Number Publication Date
KR20230094964A true KR20230094964A (ko) 2023-06-28

Family

ID=81077771

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220155774A KR20230094964A (ko) 2021-12-21 2022-11-18 이종 메모리 타겟의 인터리빙

Country Status (4)

Country Link
US (1) US20220114115A1 (ko)
EP (1) EP4202704A1 (ko)
KR (1) KR20230094964A (ko)
CN (1) CN116303155A (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11487454B2 (en) * 2019-12-05 2022-11-01 Sandisk Technologies Llc Systems and methods for defining memory sub-blocks
US12093540B2 (en) 2022-04-21 2024-09-17 Samsung Electronics Co., Ltd. Systems, methods, and apparatus for selecting devices in tiered memory
US20240220405A1 (en) * 2022-12-29 2024-07-04 Advanced Micro Devices, Inc. Systems and methods for hosting an interleave across asymmetrically populated memory channels across two or more different memory types

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8959298B2 (en) * 2012-12-10 2015-02-17 Qualcomm Incorporated System and method for managing performance of a computing device having dissimilar memory types
US20210073151A1 (en) * 2020-11-18 2021-03-11 Intel Corporation Page-based remote memory access using system memory interface network device

Also Published As

Publication number Publication date
US20220114115A1 (en) 2022-04-14
EP4202704A1 (en) 2023-06-28
CN116303155A (zh) 2023-06-23

Similar Documents

Publication Publication Date Title
US10389839B2 (en) Method and apparatus for generating data prefetches specifying various sizes to prefetch data from a remote computing node
US11403044B2 (en) Method and apparatus for performing multi-object transformations on a storage device
US10268407B1 (en) Method and apparatus for specifying read voltage offsets for a read command
US10289313B2 (en) Method and apparatus for improving sequential reading in NAND flash
US20170344430A1 (en) Method and apparatus for data checkpointing and restoration in a storage device
US9727267B1 (en) Power management and monitoring for storage devices
US20220114115A1 (en) Interleaving of heterogeneous memory targets
US10402335B2 (en) Method and apparatus for persistently caching storage data in a page cache
US20220004488A1 (en) Software drive dynamic memory allocation and address mapping for disaggregated memory pool
US10725933B2 (en) Method and apparatus for redirecting memory access commands sent to unusable memory partitions
US11675326B2 (en) Method and apparatus for remote field programmable gate array processing
US9823880B1 (en) Method and apparatus for initiating pre-read operation before completion of data load operation
US20170255565A1 (en) Method and apparatus for providing a contiguously addressable memory region by remapping an address space
US10095432B2 (en) Power management and monitoring for storage devices
WO2018113030A1 (en) Technology to implement bifurcated non-volatile memory express driver
JP2020510951A (ja) マルチコアオンダイメモリマイクロコントローラ
EP4018326A1 (en) Three tiered hierarchical memory systems
US10331385B2 (en) Cooperative write-back cache flushing for storage devices
WO2017218170A1 (en) Method and apparatus for programming wordlines of nand flash memory using alternating encoding schemes
US10229057B2 (en) Method and apparatus for avoiding bus contention after initialization failure
US11016903B2 (en) Hierarchical memory systems
US11106595B2 (en) Hierarchical memory systems