KR20220049978A - 장치-부착 메모리에 대한 액세스를 위한 시스템, 장치 및 방법 - Google Patents

장치-부착 메모리에 대한 액세스를 위한 시스템, 장치 및 방법 Download PDF

Info

Publication number
KR20220049978A
KR20220049978A KR1020200133743A KR20200133743A KR20220049978A KR 20220049978 A KR20220049978 A KR 20220049978A KR 1020200133743 A KR1020200133743 A KR 1020200133743A KR 20200133743 A KR20200133743 A KR 20200133743A KR 20220049978 A KR20220049978 A KR 20220049978A
Authority
KR
South Korea
Prior art keywords
memory
data
host processor
message
controller
Prior art date
Application number
KR1020200133743A
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 삼성전자주식회사
Priority to KR1020200133743A priority Critical patent/KR20220049978A/ko
Priority to CN202110796960.3A priority patent/CN114372011A/zh
Priority to US17/380,805 priority patent/US11586543B2/en
Priority to EP21187164.5A priority patent/EP3985520A1/en
Publication of KR20220049978A publication Critical patent/KR20220049978A/ko
Priority to US18/166,244 priority patent/US11983115B2/en

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/1668Details of memory controller
    • 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/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0828Cache consistency protocols using directory methods with concurrent directory accessing, i.e. handling multiple concurrent coherency transactions
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • 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/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • 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/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4234Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0622Securing storage systems in relation to access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • 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/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • 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
    • 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/60Details of cache memory
    • G06F2212/602Details relating to cache prefetching
    • 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/6028Prefetching based on hints or prefetch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

버스를 통해 호스트 프로세서와 연결된 장치는, 호스트 프로세서로부터 수신된 메시지에 기초하여 동작하는 가속기 회로, 및 장치에 연결된 메모리에 대한 액세스를 제어하는 컨트롤러를 포함할 수 있고, 컨트롤러는, 가속기 회로로부터 수신된 독출 요청에 응답하여, 호스트 프로세서에 일관성의 해소를 요청하는 제1 메시지를 제공하고, 메모리로부터 데이터를 프리페치(prefetch)할 수 있다.

Description

장치-부착 메모리에 대한 액세스를 위한 시스템, 장치 및 방법{SYSTEM, DEVICE AND METHOD FOR ACCESSING DEVICE-ATTACHED MEMORY}
본 개시의 기술적 사상은 메모리 액세스에 관한 것으로서, 자세하게는 장치-부착 메모리에 대한 액세스를 위한 시스템, 장치 및 방법에 관한 것이다.
데이터를 처리하도록 구성된 기기(apparatus)는 메모리에 액세스함으로써 다양한 동작을 수행할 수 있다. 예를 들면, 기기는 메모리로부터 독출한 데이터를 처리할 수도 있고, 처리된 데이터를 메모리에 기입할 수도 있다. 시스템에 요구되는 성능 및 기능들에 기인하여, 높은 대역폭 및 낮은 레이턴시를 제공하는 링크를 통해서 상호 통신하는 다양한 기기들이 시스템에 포함될 수 있다. 시스템에 포함된 메모리는 2이상의 기기들에 의해서 공유될 수 있고 액세스될 수 있다. 이에 따라, 시스템의 성능은, 기기들 각각의 동작 속도뿐만 아니라, 기기들 사이 통신 효율성 및 메모리 액세스에 소요되는 시간에 의존할 수 있다.
본 개시의 기술적 사상은, 메모리 액세스의 감소된 레이턴시를 위한 시스템, 장치 및 방법을 제공한다.
상기와 같은 목적을 달성하기 위하여, 본 개시의 기술적 사상의 일측면에 따라, 버스를 통해 호스트 프로세서와 연결된 장치는, 호스트 프로세서로부터 수신된 메시지에 기초하여 동작하는 가속기 회로, 및 장치에 연결된 메모리에 대한 액세스를 제어하는 컨트롤러를 포함할 수 있고, 컨트롤러는, 가속기 회로로부터 수신된 독출 요청에 응답하여, 호스트 프로세서에 일관성의 해소를 요청하는 제1 메시지를 제공하고, 메모리로부터 데이터를 프리페치(prefetch)할 수 있다.
본 개시의 기술적 사상의 일측면에 따른 시스템은, 명령어들을 실행하는 적어도 하나의 코어를 포함하는 호스트 프로세서, 호스트 프로세서와 버스를 통해서 연결되고, 호스트 바이어스 모드 또는 장치 바이어스 모드로 설정되도록 구성된 장치, 및 장치에 연결되고, 장치를 통해 호스트 프로세서에 의해서 액세스되도록 구성된 메모리를 포함할 수 있고, 장치는, 호스트 바이어스 모드에서, 호스트 프로세서에 일관성의 해소를 요청하는 제1 메시지를 제공하고, 호스트 프로세서로부터 일관성의 해소 완료를 나타내는 제2 메시지를 수신하기 전 메모리로부터 데이터를 프리페치할 수 있다.
본 개시의 기술적 사상의 일측면에 따라 버스를 통해 호스트 프로세서와 연결된 장치의 동작 방법은, 장치에 연결된 메모리에 액세스하기 위한 모드로서 호스트 바이어스 모드로 설정되는 단계, 버스를 통해서 호스트 프로세서에 어드레스에 대응하는 메모리의 영역에 대한 일관성의 해소를 요청하는 제1 메시지를 제공하는 단계, 어드레스에 기초하여 메모리의 영역으로부터 데이터를 프리페치하는 단계, 및 버스를 통해서 호스트 프로세서로부터 메모리의 영역에 대한 일관성의 해소 완료를 나타내는 제2 메시지를 수신하는 단계를 포함할 수 있고, 데이터를 프리페치하는 단계는, 제2 메시지를 수신하는 단계가 수행되기 전 개시될 수 있다.
본 개시의 예시적 실시예에 따른 시스템, 장치 및 방법에 의하면, 장치-부착 메모리가 호스트 프로세서에 의해서 빈번하게 액세스되는 상황에서도 장치의 장치-부착 메모리에 대한 액세스 레이턴시가 감소할 수 있다.
또한, 본 개시의 예시적 실시예에 따른 시스템, 장치 및 방법에 의하면, 장치-부착 메모리에 대한 감소된 액세스 레이턴시에 기인하여 장치의 성능이 향상될 수 있고, 결과적으로 시스템의 성능이 향상될 수 있다.
본 개시의 예시적 실시예들에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 아니하며, 언급되지 아니한 다른 효과들은 이하의 기재로부터 본 개시의 예시적 실시예들이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 도출되고 이해될 수 있다. 즉, 본 개시의 예시적 실시예들을 실시함에 따른 의도하지 아니한 효과들 역시 본 개시의 예시적 실시예들로부터 당해 기술분야의 통상의 지식을 가진 자에 의해 도출될 수 있다.
도 1은 본 개시의 예시적 실시예에 따른 시스템을 나타내는 블록도이다.
도 2a 및 도 2b는 본 개시의 예시적 실시예들에 따른 시스템의 예시들을 나타내는 블록도들이다.
도 3a 및 도 3b는 장치-부착 메모리에 대한 액세스를 위한 방법의 예시들을 나타내는 메시지도들이다.
도 4는 본 개시의 예시적 실시예에 따른 시스템을 나타내는 블록도이다.
도 5는 본 개시의 예시적 실시예에 따른 장치-부착 메모리에 대한 액세스를 위한 방법을 나타내는 메시지도이다.
도 6은 본 개시의 예시적 실시예에 따른 버퍼를 나타내는 블록도이다.
도 7은 본 개시의 예시적 실시예에 따른 장치 메모리를 나타내는 블록도이다.
도 8은 본 개시의 예시적 실시예에 따른 장치-부착 메모리에 대한 액세스를 위한 방법을 나타내는 메시지도이다.
도 9는 본 개시의 예시적 실시예에 따른 장치-부착 메모리에 액세스하기 위한 방법을 나타내는 순서도이다.
도 10은 본 개시의 예시적 실시예에 따른 장치-부착 메모리에 액세스하기 위한 방법을 나타내는 순서도이다.
도 11a 및 도 11b는 본 개시의 예시적 실시예들에 따른 장치-부착 메모리에 액세스하기 위한 방법의 예시들을 나타내는 순서도들이다.
도 12는 본 개시의 예시적 실시예에 따른 시스템을 나타내는 도면이다.
도 13은 본 개시의 예시적 실시예에 따른 시스템을 포함하는 데이터 센터를 나타내는 블록도이다.
도 1은 본 개시의 예시적 실시예에 따른 시스템(100)을 나타내는 블록도이다. 시스템(100)은 상호 통신하는 장치(110) 및 호스트 프로세서(120)를 포함하는 임의의 컴퓨팅 시스템(또는 컴퓨팅 시스템에 포함된 구성요소)일 수 있다. 예를 들면, 시스템(100)은, 데스크탑 컴퓨터, 서버, 키오스크(kiosk) 등과 같은 고정형(stationary) 컴퓨팅 시스템에 포함될 수도 있고, 랩탑 컴퓨터, 모바일 폰, 웨어러블 장치 등과 같은 휴대형(portable) 컴퓨팅 시스템에 포함될 수도 있다. 또한, 일부 실시예들에서, 시스템(100)은, 장치(110) 및 호스트 프로세서(120)가 하나의 칩 또는 패키지에 구현된, 시스템-온-칩(system-on-chip; SoC) 또는 시스템-인-패키지(system-in-package; SiP)에 포함될 수도 있다. 도 1에 도시된 바와 같이, 시스템(100)은, 장치(110), 호스트 프로세서(120), 장치 메모리(130) 및 호스트 메모리(140)를 포함할 수 있다.
도 1을 참조하면, 장치(110) 및 호스트 프로세서(120)는 링크(150)를 통해서 상호 통신할 수 있고, 링크(150) 상으로 메시지 및/또는 데이터를 상호 송신하거나 수신할 수 있다. 본 개시의 예시적 실시예들은, CXL(compute express link) 프로토콜들을 지원하는 CXL 사양에 기초한 링크(150)를 참조하여 설명될 것이나, 장치(110) 및 호스트 프로세서(120)는, 비제한적인 예시로서 XBus 프로토콜, NVLink 프로토콜, Infinity Fabric 프로토콜, CCIX(cache coherent interconnect for accelerators) 프로토콜, CAPI(coherent accelerator processor interface) 등과 같은 일관적 상호연결(coherent interconnect) 기술들에 기초하여 상호 통신할 수도 있다.
일부 실시예들에서, 링크(150)는 다수의(multiple) 프로토콜들을 지원할 수 있고, 다수의 프로토콜들을 통해서 메시지 및/또는 데이터가 전달될 수 있다. 예를 들면, 링크(150)는, 비일관적(non-coherent) 프로토콜(예컨대, CXL.io), 일관적 프로토콜(예컨대, CXL.cache) 및 메모리 액세스 프로토콜(또는 메모리 프로토콜)(예컨대, CXL.mem)을 포함하는 CXL 프로토콜들을 지원할 수 있다. 일부 실시예들에서, 링크(150)는, 비제한적인 예시로서 PCI(peripheral component interconnect), PCIe(PCI express), USB(universal serial bus), SATA(serial advanced technology attachment) 등과 같은 프로토콜을 지원할 수도 있다. 본 명세서에서, 링크(150)에 의해서 지원되는 프로토콜은 상호연결 프로토콜로서 지칭될 수도 있다.
장치(110)는 호스트 프로세서(120)에 유용한 기능을 제공하는 임의의 장치를 지칭할 수 있고, 일부 실시예들에서 CXL 사양의 가속기(accelerator)에 대응할 수 있다. 예를 들면, 호스트 프로세서(120) 상에서 실행되는 소프트웨어는 연산(computing) 및/또는 입출력(I/O) 작업의 적어도 일부를 장치(110)에 일임(offload)할 수 있다. 일부 실시예들에서, 장치(110)는, GPU(graphic processing unit), NPU(neural processing unit) 등과 같은 프로그램가능한(programmable) 구성요소(component), IP(intellectual property) 코어 등과 같은 고정된 기능을 제공하는 구성요소 및 FPGA(field programmable gate array) 등과 같은 재구성가능한(reconfigurable) 구성요소 중 적어도 하나를 포함할 수 있다. 도 1에 도시된 바와 같이, 장치(110)는 물리 계층(111), 다중-프로토콜 멀티플렉서(112), 인터페이스 회로(113) 및 가속기 회로(114)를 포함할 수 있고, 장치 메모리(130)와 통신할 수 있다.
가속기 회로(114)는, 장치(110)가 호스트 프로세서(120)에 제공하는 유용한 기능을 수행할 수 있고, 가속기 로직으로 지칭될 수도 있다. 도 1에 도시된 바와 같이, 가속기 회로(114)는 다수의 프로토콜들을 사용하여 인터페이스 회로(113)를 통해서 호스트 프로세서(120)와 통신할 수 있다. 인터페이스 회로(113)는, 가속기 회로(114) 및 호스트 프로세서(120) 사이 통신을 위한 메시지 및/또는 데이터에 기초하여 다수의 프로토콜들 중 하나의 프로토콜을 판정할 수 있다. 인터페이스 회로(113)는, 다중-프로토콜 멀티플렉서(112)에 포함된 적어도 하나의 프로토콜 큐(queue)에 연결될 수 있고, 적어도 하나의 프로토콜 큐를 통해서 호스트 프로세서(120)와 메시지 및/또는 데이터를 주고 받을 수 있다. 일부 실시예들에서, 인터페이스 회로(113) 및 다중-프로토콜 멀티플렉서(112)는 하나의 구성요소로 통합될 수도 있다. 일부 실시예들에서, 다중-프로토콜 멀티플렉서(112)는 링크(150)에 의해서 지원되는 다수의 프로토콜들 각각에 대응하는 다수의 프로토콜 큐들을 포함할 수 있다. 또한, 일부 실시예들에서, 다중-프로토콜 멀티플렉서(112)는 상이한 프로토콜들에 의한 통신들 사이를 중재(arbitration)할 수 있고, 선택된 통신들을 물리 계층(111)에 제공할 수 있다. 일부 실시예들에서, 물리 계층(111)은, 호스트 프로세서(120)의 물리 계층(121)과 단일 상호연결, 버스, 트레이스(trace) 등을 통해서 연결될 수 있다.
장치 메모리(130)는, 도 1에 도시된 바와 같이, 장치(110)에 연결될 수 있고, 장치-부착 메모리(device-attached memory)로서 지칭될 수 있다. 도 1에 도시된 바와 같이 장치 메모리(130)가 시스템(100)에 포함되는 경우, 가속기 회로(114)는 장치 메모리(130)와 통신할 수 있고, 링크(150)에 독립적인 프로토콜, 즉 장치-고유의(device-specific) 프로토콜에 기초하여 장치-부착 메모리(130)와 통신할 수 있다. 일부 실시예들에서, 도 2a 및 도 2b를 참조하여 후술되는 바와 같이, 장치(110)는 장치 메모리(130)에 액세스하기 위한 구성요소로서 컨트롤러를 포함할 수 있고, 가속기 회로(114)는 컨트롤러를 통해서 장치 메모리(130)에 액세스할 수 있다. 컨트롤러는, 장치(110), 즉 가속기 회로(114)의 장치 메모리(130)에 대한 액세스뿐만 아니라 링크(150)를 통한 호스트 프로세서(120)의 장치 메모리(1300)에 대한 액세스를 제공할 수 있다. 일부 실시예들에서, 장치 메모리(130)는 CXL 사양의 장치 부착 메모리에 대응할 수 있다.
호스트 프로세서(120)는 시스템(100)의 메인 프로세서, 예컨대 CPU(central processing unit)일 수 있고, 일부 실시예들에서 CXL 사양의 호스트 프로세서(또는 호스트)에 대응할 수 있다. 도 1에 도시된 바와 같이, 호스트 프로세서(120)는 호스트 메모리(140)에 연결될 수 있고, 물리 계층(121), 다중-프로토콜 멀티플렉서(122), 인터페이스 회로(123), 일관성/캐시 회로(124), 버스 회로(125), 적어도 하나의 코어(126) 및 입출력 장치(127)를 포함할 수 있다.
적어도 하나의 코어(126)는 명령어(instruction)를 실행할 수 있고, 일관성/캐시 회로(124)와 연결될 수 있다. 일관성/캐시 회로(124)는 캐시 계층(cache hierarchy)을 포함할 수 있고, 일관성/캐시 로직으로 지칭될 수도 있다. 도 1에 도시된 바와 같이, 일관성/캐시 회로(124)는 적어도 하나의 코어(126) 및 인터페이스 회로(123)와 통신할 수 있다. 예를 들면, 일관성/캐시 회로(124)는 일관적 프로토콜 및 메모리 액세스 프로토콜을 포함하는 2이상의 프로토콜들을 통한 통신을 가능하게 할 수 있다. 일부 실시예들에서, 일관성/캐시 회로(124)는 DMA(direct memory access) 회로를 포함할 수도 있다. 입출력 장치(127)는 버스 회로(125)와 통신하기 위하여 사용될 수 있다. 예를 들면, 버스 회로(125)는 PCIe 로직일 수 있고, 입출력 장치(127)는 PCIe 입출력 장치일 수 있다.
인터페이스 회로(123)는, 호스트 프로세서(120)의 구성요소들, 예컨대 일관성/캐시 회로(124) 및 버스 회로(125)와 장치(110) 사이 통신을 가능하게 할 수 있다. 일부 실시예들에서, 인터페이스 회로(123)는 다수의 프로토콜들, 예컨대 비일관적 프로토콜, 일관적 프로토콜 및 메모리 프로토콜에 따라 호스트 프로세서(120)의 구성요소들 및 장치(110) 사이 메시지 및/또는 데이터의 통신을 가능하게 할 수 있다. 예를 들면, 인터페이스 회로(123)는, 호스트 프로세서(120)의 구성요소들 및 장치(110) 사이 통신을 위한 메시지 및/또는 데이터에 기초하여 다수의 프로토콜들 중 하나의 프로토콜을 판정할 수 있다.
다중-프로토콜 멀티플렉서(122)는 적어도 하나의 프로토콜 큐를 포함할 수 있다. 인터페이스 회로(123)는 적어도 하나의 프로토콜 큐에 연결될 수 있고, 적어도 하나의 프로토콜 큐를 통해서 장치(110)와 메시지 및/데이터를 주고 받을 수 있다. 일부 실시예들에서, 인터페이스 회로(123) 및 다중-프로토콜 멀티플렉서(122)는 하나의 구성요소로 통합될 수도 있다. 일부 실시예들에서, 다중-프로토콜 멀티플렉서(122)는 링크(150)에 의해서 지원되는 다수의 프로토콜들 각각에 대응하는 다수의 프로토콜 큐들을 포함할 수 있다. 또한, 일부 실시예들에서, 다중-프로토콜 멀티플렉서(122)는 상이한 프로토콜들에 의한 통신들 사이를 중재할 수 있고, 선택된 통신들을 물리 계층(121)에 제공할 수 있다.
장치(110)는, 장치(110) 및 장치 메모리(130) 사이 대역폭에 의존하는 성능을 가질 수 있고, 이에 따라 장치(110) 및 장치 메모리(130) 사이 거대한(massive) 대역폭이 제공될 수 있다. 또한, 호스트 프로세서(120)는 링크(150) 및 장치(110)를 통해서 장치 메모리(130)에 액세스할 수 있다. 장치 메모리(130)에 대한 액세스 성능을 최적화하기 위하여 장치 메모리(130)에 대한 액세스 방식이 동적으로 설정할 수 있다. 예를 들면, 도 2a 및 도 2b를 참조하여 후술되는 바와 같이, 장치 메모리(130)가 장치(110)에 의해서 주로 액세스되는 구간에서 장치 바이어스 모드가 설정될 수 있는 한편, 장치 메모리(130)가 호스트 프로세서(120)에 의해서 주로(mainly) 액세스되는 구간에서 호스트 바이어스 모드가 설정될 수 있다.
장치(110)는 작업의 수행을 위하여, 호스트 바이어스 모드에서도 장치 메모리(130)에 데이터를 기입하거나 장치 메모리(130)로부터 데이터를 독출할 수 있다. 이를 위하여, 장치(110)는 도 2를 참조하여 후술되는 바와 같이, 호스트 바이어스 모드에서 장치 메모리(130)에 액세스하기 전 호스트 프로세서(120)와 메시지를 주고 받는 것이 요구될 수 있고, 이에 따라 호스트 바이어스 모드에서 장치 메모리(130)에 대한 장치(110)의 액세스가 지연될 수 있다. 도면들을 참조하여 후술되는 바와 같이, 장치 메모리(130)가 호스트 프로세서(120)에 의해서 빈번하게 액세스되는 상황, 즉 호스트 바이어스 모드에서, 장치(110)는 호스트 프로세서(120)와의 통신과 병렬적으로 장치 메모리(130)로부터 데이터를 프리페치(prefetch)할 수 있고, 이에 따라 장치 메모리(130)에 대한 장치(110)의 액세스 레이턴시가 감소할 수 있다. 또한, 장치 메모리(130)에 대한 장치(110)의 감소된 액세스 레이턴시에 기인하여, 장치(110)에 의해서 수행되는 작업의 효율성뿐만 아니라 시스템(100)의 성능이 향상될 수 있다.
도 2a 및 도 2b는 본 개시의 예시적 실시예들에 따른 시스템의 예시들을 나타내는 블록도들이다. 구체적으로, 도 2a의 블록도는 장치 메모리(230a)에 대한 액세스 방식으로서 장치 바이어스 모드로 설정된 시스템(200a)을 나타내고, 도 2b의 블록도는 장치 메모리(230b)에 대한 액세스 방식으로서 호스트 바이어스 모드로 설정된 시스템(200b)을 나타낸다. 장치 바이어스 모드 및 호스트 바이어스 모드는 임의의 방식으로 상호 전환(flip)될 수 있고, 예컨대 CXL 사양의 소프트웨어 지원(software assistance) 및/또는 하드웨어 자율(hardware autonomous)에 기초하여 동적으로 상호 전환될 수 있다. 도 2a 및 도 2b에서, 점선 화살표는 장치(210a 또는 210b)의 장치 메모리(230a 또는 230b)에 대한 액세스를 위한 통신을 나타내고, 실선 화살표는 호스트 프로세서(220a 또는 220b)의 장치 메모리(230a 또는 230b)에 대한 액세스를 위한 통신을 나타낸다. 이하에서, 도 2a 및 도 2b에 대한 설명 중 상호 중복되는 내용은 생략될 것이다.
도 2a를 참조하면, 시스템(200a)은 장치(210a), 호스트 프로세서(220a) 및 장치 메모리(230a)를 포함할 수 있다. 장치(210a)는, 호스트 프로세서(220a) 장치 메모리(230a)와 통신할 수 있는 컨트롤러(211a)를 포함할 수 있고, 일부 실시예들에서, 컨트롤러(211a)는 CXL 사양의 데이터 일관성 엔진(data coherence engine; DCOH)에 대응할 수 있다. 비록 도 2a에 도시되지 아니하였으나, 장치(210a)는, 장치(210a)가 호스트(220a)에 제공하는 기능을 수행하고 컨트롤러(211a)를 통해서 장치 메모리(230a)에 액세스하는, 구성요소(예컨대, 도 1의 가속기 회로(114))를 더 포함할 수 있다.
호스트 프로세서(220a)는 일관성 브릿지(222a) 및 일관성 엔진(221a)을 포함할 수 있다. 일관성 브릿지(222a)는, 장치(210a) 및 호스트 프로세서(220a) 사이 인터랙션들(interactions)을 정의하는 일관성 프로토콜(예컨대, CXL.cache)에 기초하여, 장치(210a)와 통신할 수 있다. 예를 들면, 일관성 브릿지(222a)는, 장치(210a)로부터 요청(예컨대, D2H request), 응답(예컨대, D2H response) 및 데이터(D2H data)를 수신할 수 있고, 장치(210a)로 요청(H2D request), 응답(예컨대, H2D response) 및 데이터(H2D data)를 제공할 수 있다. 일관성 엔진(221a)은 메모리 프로토콜(예컨대, CXL.mem)에 기초하여 장치(210a)와 통신할 수 있고, 정해진(given) 어드레스를 위한 일관성을 해소할 수 있다. 일부 실시예들에서, 일관성 엔진(221a)은 CXL 사양의 홈 에이전트(home agent)에 대응할 수 있다.
장치 바이어스 모드는 장치(210a)에 의해서 수행되는 작업의 효율성을 위하여 설정될 수 있고, 장치 바이어스 모드에서 장치(210a)는 높은 대역폭 및 낮은 레이턴시에 기초하여 장치 메모리(230a)에 액세스할 수 있다. 예를 들면, 도 2a에서 점선 화살표로 표시된 바와 같이, 컨트롤러(211a)는 호스트 프로세서(220a)의 일관성 엔진, 즉 일관성 엔진(221a)과의 상의(consulting)없이 장치 메모리(230a)에 액세스할 수 있다. 또한, 장치 바이어스 모드에서 호스트 프로세서(220a)는 장치 메모리(230a)에 액세스할 수 있으나, 도 2a에서 실선으로 표시된 바와 같이, 장치(210a)와 통신(C1)을 수행한 후, 컨트롤러(211a)와 통신(C2)을 수행함으로써 장치 메모리(230a)에 액세스할 수 있다.
도 2b를 참조하면, 시스템(200b)은 장치(210b), 호스트 프로세서(220b) 및 장치 메모리(230b)를 포함할 수 있다. 장치(210b)는 컨트롤러(211b)를 포함할 수 있고, 호스트 프로세서(220b)는 일관성 브릿지(222b) 및 일관성 엔진(221b)을 포함할 수 있다. 비록 도 2b에 도시되지 아니하였으나, 장치(210b)는, 장치(210b)가 호스트(220b)에 제공하는 기능을 수행하고 컨트롤러(211b)를 통해서 장치 메모리(230b)에 액세스하는, 구성요소(예컨대, 도 1의 가속기 회로(114))를 더 포함할 수 있다.
호스트 바이어스 모드는, 호스트 프로세서(220b)가 장치 메모리(230b)에 액세스하기 위하여 설정될 수 있고, 호스트 바이어스 모드에서 장치 메모리(230b)에 대한 장치(210b)의 액세스는 최적이 아닐 수 있다. 예를 들면, 호스트 프로세서(220b)가 장치(210b)에서 수행되는 작업을 위한 입력, 예컨대 피연산자(operands)를 푸시(push)하거나 장치(210b)에 의해서 수행된 작업의 결과를 풀(pull)하기 위하여, 호스트 바이어스 모드가 설정될 수 있다. 도 2b에서 실선으로 표시된 바와 같이, 호스트 바이어스 모드에서 호스트 프로세서(220b)는, 호스트 메모리(예컨대, 도 1의 140)에 액세스하는 것과 유사하게 컨트롤러(211b)를 통해서 장치 메모리(230b)에 액세스할 수 있다.
장치(210b) 또는 장치(210b)에 포함된 가속기 회로에 의한 작업의 수행을 위하여, 호스트 바이어스 모드에서도 장치 메모리(230b)에 대한 장치(210b)의 액세스가 요구될 수 있다. 호스트 바이어스 모드에서 장치(210b)가 장치 메모리(230b)에 액세스하는 경우 메모리 일관성을 위하여, 도 2b에서 점선으로 표시된 바와 같이, 컨트롤러(211b)는, 호스트 프로세서(220b)와 통신(C3)을 수행함으로써 장치 메모리(222b)에 대한 액세스의 승인을 요청할 수 있고, 호스트 프로세서(220b)와 통신(C4)을 수행함으로써 호스트 프로세서(220b)로부터 장치 메모리(222b)에 대한 액세스를 승인 수신할 수 있으며, 그 다음에 통신(C5)을 통해 장치 메모리 장치(230b)에 액세스할 수 있다. 이에 따라, 호스트 바이어스 모드에서 장치 메모리(230b)에 대한 장치(210b)의 액세스는 지연될 수 있다.
도 3a 및 도 3b는 장치-부착 메모리에 대한 액세스를 위한 방법의 예시들을 나타내는 메시지도들이다. 구체적으로, 도 3a의 메시지도는, 비교예에 따라 호스트 바이어스 모드에서 장치 메모리(330a)에 대한 장치(310a)의 액세스를 나타내고, 도 3b는 본 개시의 예시적 실시예에 따라 호스트 바이어스 모드에서 장치 메모리(330b)에 대한 장치(310b)의 액세스를 나타낸다. 이하에서, 도 3a 및 도 3b에 대한 설명 중 상호 중복되는 내용은 생략될 것이다.
도 3a를 참조하면, 단계 S31에서 장치(310a)는 어드레스(ADR)를 포함하는 제1 메시지(MSG1)를 호스트 프로세서(320a)에 제공할 수 있다. 예를 들면, 장치(310a)는 어드레스(ADR)에 대응하는 장치 메모리(330a)의 영역에 저장된 데이터(DAT)를 독출하기 위하여 호스트 프로세서(320a)에 어드레스(ADR)를 포함하는 제1 메시지(MSG1)를 호스트 프로세서(320a)에 제공할 수 있다. 일부 실시예들에서, 도 9를 참조하여 후술되는 바와 같이, 제1 메시지(MSG1)는 어드레스(ADR)에 대응하는 영역에 대한 일관성의 해소를 요청하기 위한 것일 수 있다. 일부 실시예들에서, 제1 메시지(MSG1)는 일관성 프로토콜(예컨대, CXL.cache)에 기초하여 장치(310a)로부터 호스트 프로세서(320a)에 제공될 수 있다.
단계 S32에서, 호스트 프로세서(320a)는 제2 메시지(MSG2)를 장치(310a)에 제공할 수 있다. 예를 들면, 호스트 프로세서(320a)는, 단계 S31에서 수신된 제1 메시지(MSG1)에 응답하여, 제1 메시지(MSG)에 포함된 어드레스(ADR)에 대응하는 장치 메모리(330a)의 영역에 대한 장치(310a)의 액세스를 제2 메시지(MSG2)를 통해 승인할 수 있다. 일부 실시예들에서, 도 9를 참조하여 후술되는 바와 같이, 제2 메시지(MSG2)는 어드레스(ADR)에 대응하는 영역에 대한 일관성 해소의 완료를 나타낼 수 있다. 일부 실시예들에서, 제2 메시지(MSG2)는 메모리 프로토콜(예컨대, CXL.mem)에 기초하여 호스트 프로세서(320a)로부터 장치(310a)에 제공될 수 있다.
단계 S33에서 장치(310a)는 독출 커맨드(CMD) 및 어드레스(ADR)를 장치 메모리(330a)에 제공할 수 있고, 단계 S34에서 장치 메모리(330a)는 데이터(DAT)를 장치(310a)에 제공할 수 있다. 예를 들면, 장치(310a)는, 단계 S32에서 수신된 제2 메시지(MSG2)에 응답하여, 어드레스(ADR)에 대응하는 장치 메모리(330a)의 영역으로부터 데이터(DAT)를 독출하기 위하여, 어드레스(ADR)와 함께 독출 커맨드(CMD)를 장치 메모리(330a)에 제공할 수 있다. 메모리 장치(330b)는 독출 커맨드(CMD)에 응답하여, 어드레스(ADR)에 대응하는 영역에 저장된 데이터(DAT)를 장치(310a)에 제공할 수 있다. 도 1을 참조하여 전술된 바와 같이, 장치(310a) 및 장치 메모리(330a)는 장치-고유의 프로토콜에 기초하여 상호 통신할 수 있다.
도 3b를 참조하면, 단계 S35에서 장치(310b)는 어드레스(ADR)를 포함하는 제1 메시지(MSG1)를 호스트 프로세서(320b)에 제공할 수 있다. 예를 들면, 장치(310b)는 어드레스(ADR)에 대응하는 장치 메모리(330b)의 영역에 저장된 데이터(DAT)를 독출하기 위하여 호스트 프로세서(320b)에 어드레스(ADR)를 포함하는 제1 메시지(MSG1)를 제공할 수 있다.
단계 S36에서, 장치(310b)는 독출 커맨드(CMD) 및 어드레스(ADR)를 장치 메모리(330b)에 제공할 수 있다. 도 3a의 예시와 비교할 때, 장치(310b)는 호스트 프로세서(320b)로부터 제공되는 제2 메시지(MSG2)가 수신되기 전에, 독출 커맨드(CMD) 및 어드레스(ADR)를 장치 메모리(330b)에 제공할 수 있다. 즉, 장치(310b)는 호스트 프로세서(320b)로부터 제공되는 제2 메시지(MSG2)가 수신되기 전에, 장치 메모리(330b)로부터 데이터(DAT)의 독출 동작을 개시할 수 있다. 일부 실시예들에서, 도 3b에 도시된 바와 상이하게, 단계 S36은 단계 S35와 병렬적으로 수행될 수도 있고, 단계 S36 및 단계 S35가 순차적으로 수행될 수도 있다.
단계 S37에서, 호스트 프로세서(320b)가 제2 메시지(MSG2)를 장치(310b)에 제공할 수 있다. 예를 들면, 호스트 프로세서(320b)는, 단계 S35에서 수신된 제1 메시지(MSG1)에 응답하여, 제1 메시지(MSG1)에 포함된 어드레스(ADR)에 대응하는 장치 메모리(330a)의 영역에 대한 장치(310a)의 액세스를 제2 메시지(MSG2)를 통해 승인할 수 있다.
단계 S38에서, 장치 메모리(330b)는 데이터(DAT)를 장치 메모리(310b)에 제공할 수 있다. 예를 들면, 장치 메모리(330b)는 단계 S36에서 수신된 독출 커맨드(CMD)에 응답하여, 어드레스(ADR)에 대응하는 영역에 저장된 데이터(DAT)를 장치(310b)에 제공할 수 있다. 일부 실시예들에서, 도 3b에 도시된 바와 상이하게, 장치(310b)는 제2 메시지(MSG2) 및 데이터(DAT)를 동시에 수신할 수도 있고, 제2 메시지(MSG2) 보다 데이터(DAT)를 먼저 수신할 수도 있다.
도 3b의 장치(310b)는 도 3a의 장치(310a)보다 조기에 데이터(DAT)를 사용할 수 있다. 예를 들면, 도 3a의 장치(310a)는 단계 S34에서 장치 메모리(330a)로부터 데이터(DAT)를 수신한 후 사용할 수 있고, 이에 따라 단계 S31에서 호스트 프로세서(320a)에 제1 메시지(MSG1)를 제공한 시점으로부터 시간(T31)이 도과된 시점에서 데이터(DAT)를 사용할 수 있다. 다른 한편으로, 도 3b의 장치(320b)는 단계 S38에서 데이터(DAT)가 수신되는 시점 및 단계 S37에서 호스트 프로세서(320b)로부터 제2 메시지(MSG2)가 수신되는 시점 중 늦은 시점에서 데이터(DAT)를 사용할 수 있다. 이에 따라, 도 3b의 장치(320b)는, 단계 S35에서 호스트 프로세서(320b)에 제1 메시지(MSG1)를 제공한 시점으로부터 시간(T32)이 도과된 시점에서 데이터(DAT)를 사용할 수 있다. 도 3a의 예시와 상이하게, 도 3b의 예시에서 메모리 장치(330b)로부터 데이터(DAT)를 독출하는데 소요되는 구간 및 호스트 프로세서(320b)와 통신하는 구간이 적어도 부분적으로 중첩될 수 있고, 이에 따라 도 3b의 메모리 장치(330b)에 대한 장치(310b)의 액세스 레이턴시는, 도 3a의 메모리 장치(330a)에 대한 장치(310a)의 액세스 레이턴시보다 짧을 수 있다(T32<T31). 본 명세서에서, 도 3b의 예시와 같이, 호스트 프로세서(320b)로부터 제2 메시지(MSG2)를 수신하기 전에, 장치 메모리(330b)로부터 데이터(DAT)를 독출하기 위한 동작을 개시하거나 수행하는 것은, 데이터(DAT)의 프리페치(prefetch)로서 지칭될 수 있다. 일부 실시예들에서, 데이터(DAT)의 프리페치는, 도 3b에 도시된 바와 같이 장치(330b)가 장치 메모리(330b)로부터 데이터(DAT)를 수신하는 동작을 포함할 수도 있고, 도 8을 참조하여 후술되는 바와 같이 장치 메모리(330b) 내부에서 데이터(DAT)를 하위 레벨의 메모리로부터 상위 레벨의 메모리로 복사하는 동작을 포함할 수도 있다.
도 4는 본 개시의 예시적 실시예에 따른 시스템(400)을 나타내는 블록도이다. 구체적으로, 도 4의 블록도는 장치(410)의 예시적인 구조를 호스트 프로세서(420) 및 장치 메모리(430)와 함께 나타낸다. 도 4를 참조하면, 장치(410)는 가속기 회로(412), 컨트롤러(414) 및 버퍼(416)를 포함할 수 있다.
가속기 회로(412)는, 도 1을 참조하여 전술된 바와 같이, 장치(410)가 호스트 프로세서(420)에 제공하는 기능을 수행할 수 있다. 이를 위하여, 가속기 회로(412)는 호스트 프로세서(420)와 통신할 수 있고, 컨트롤러(414)를 통해서 장치 메모리(430)에 액세스할 수 있다. 일부 실시예들에서, 가속기 회로(412)는 버퍼(416)와 통신할 수 있고, 버퍼(416)로부터 데이터를 수신하거나 버퍼(416)에 데이터를 제공할 수 있다.
컨트롤러(414)는 장치 메모리(430)에 대한 액세스를 제어할 수 있고, 일관성 엔진으로 지칭될 수도 있다. 예를 들면, 컨트롤러(414)는, 장치 바이어스 모드 또는 호스트 바이어스 모드로 설정될 수 있고, 설정된 모드에 기초하여 장치 메모리(430)에 대한 가속기 회로(412) 및/또는 호스트 프로세서(420)의 액세스를 제어할 수 있다. 일부 실시예들에서, 컨트롤러(414)는 도 3b를 참조하여 전술된 바와 같이, 호스트 프로세서(420)에 제1 메시지(MSG1)를 제공할 수 있고, 장치 메모리(430)에 대한 독출 동작을 수행할 수 있다. 컨트롤러(414)의 동작의 예시들이 도 5 등을 참조하여 후술될 것이다.
버퍼(416)는 컨트롤러(414)와 통신할 수 있고, 컨트롤러(414)로부터 제공되는 데이터를 임시적으로 저장할 수 있다. 예를 들면, 컨트롤러(414)는 장치 메모리(430)로부터 독출된 데이터 및/또는 장치 메모리(430)에 기입될 데이터를 버퍼(416)에 임시적으로 저장할 수 있다. 일부 실시예들에서, 도 6을 참조하여 후술되는 바와 같이, 컨트롤러(414)는 장치 메모리(430)로부터 프리페치된 데이터를 버퍼(416)에 저장할 수 있다.
도 5는 본 개시의 예시적 실시예에 따른 장치-부착 메모리에 대한 액세스를 위한 방법을 나타내는 메시지도이다. 구체적으로, 도 5의 메시지도는, 장치 메모리(530), 호스트 프로세서(520) 및 장치에 포함된 가속기 회로(512) 및 컨트롤러(514)와 사이 송수신되는 메시지들 및/또는 데이터를 시간의 흐름에 따라 나타낸다. 도 5의 예시에서, 컨트롤러(514) 및 호스트 프로세서(520)는 호스트 바이어스 모드로 설정된 것으로 가정된다.
도 5를 참조하면, 단계 S51에서 가속기 회로(512)는 어드레스(ADR)를 포함하는 독출 요청(REQ)을 컨트롤러(514)에 제공할 수 있다. 예를 들면, 가속기 회로(512)는 주어진 기능을 수행하기 위하여 어드레스(ADR)에 대응하는 장치 메모리(530)의 영역에 저장된 데이터(DAT)를 필요로 할 수 있고, 이에 따라 어드레스(ADR)를 포함하는 독출 요청(REQ)을 컨트롤러(514)에 제공할 수 있다.
단계 S52에서, 컨트롤러(514)는 어드레스(ADR)를 포함하는 제1 메시지(MSG1)를 호스트 프로세서(520)에 제공할 수 있다. 호스트 바이어스 모드에 기인하여, 컨트롤러(514)는 가속기 회로(512)로부터 제공된 독출 요청(REQ)의 처리를 위하여 어드레스(ADR)를 포함하는 제1 메시지(MSG1)를 호스트 프로세서(520)에 제공할 수 있다.
단계 S53에서, 컨트롤러(514)는 독출 커맨드(CMD) 및 어드레스(ADR)를 장치 메모리(530)에 제공할 수 있다. 예를 들면, 컨트롤러(514)는 데이터(DAT)의 프리페치를 위하여, 호스트 프로세서(520)로부터 제2 메시지(MSG2)를 수신하기 전에 독출 커맨드(CMD) 및 어드레스(ADR)를 장치 메모리(530)에 제공할 수 있다.
단계 S54에서, 호스트 프로세서(520)는 제2 메시지(MSG2)를 컨트롤러(514)에 제공할 수 있다. 예를 들면, 단계 S52에서 컨트롤러(514)로부터 수신된 제1 메시지(MSG1)는 어드레스(ADR)에 대응하는 장치 메모리(530)의 영역에 대한 일관성 해소를 요청할 수 있고, 호스트 프로세서(520)는 일관성 해소의 완료를 나타내는 제2 메시지(MSG2)를 컨트롤러(514)에 제공할 수 있다. 일부 실시예들에서, 제2 메시지(MSG2)는 CXL 사양의 CXL.mem 프로토콜에 의해서 지원되는 MemRdFwd에 대응할 수 있다.
단계 S55에서, 장치 메모리(530)는 데이터(DAT)를 컨트롤러(514)에 제공할 수 있다. 예를 들면, 장치 메모리(530)는 단계 S53에서 수신된 독출 커맨드(CMD)에 응답하여 어드레스(ADR)에 대응하는 영역에 저장된 데이터(DAT)를 컨트롤러(514)에 제공할 수 있다. 도 3b를 참조하여 전술된 바와 같이, 일부 실시예들에서 컨트롤러(514)는 제2 메시지(MSG2)보다 데이터(DAT)를 먼저 수신할 수도 있고, 제2 메시지(MSG2) 및 데이터(DAT)를 동시에 수신할 수도 있다.
단계 S56에서, 컨트롤러(514)는 데이터(DAT)를 포함하는 응답(RES)을 가속기 회로(512)에 제공할 수 있다. 전술된 바와 같이, 컨트롤러(514)에 의한 데이터(DAT)의 프리페치에 기인하여, 호스트 프로세서(520)에 제1 메시지(MSG1)를 제공하고 호스트 프로세서(520)로부터 제2 메시지(MSG2)를 수신하는 구간 및 장치 메모리(530)로부터 데이터(DAT)를 독출하는 구간이 적어도 부분적으로 중첩될 수 있다. 이에 따라, 가속기 회로(512)가 어드레스(ADR)를 포함하는 독출 요청(REQ)을 발행(issue)한 시점으로부터 데이터(DAT)를 포함하는 응답(RES)을 수신하는 시점까지 소요된 시간이 단축될 수 있고, 결과적으로 가속기 회로(512)는 데이터(DAT)에 기초한 작업을 조기에 완료할 수 있다.
도 6은 본 개시의 예시적 실시예에 따른 버퍼(600)를 나타내는 블록도이다. 구체적으로, 도 6의 버퍼는 도 4의 버퍼(416)의 예시일 수 있고, 도 5의 단계 S55가 종료된 후 상태에 대응할 수 있다. 이하에서, 도 6은 도 5를 참조하여 설명될 것이고, 도 5의 컨트롤러(514)가 도 6의 버퍼(600)에 액세스하는 것으로 가정된다.
일부 실시예들에서, 컨트롤러(514)는 장치 메모리(530)로부터 데이터(DAT)를 독출하여 버퍼(600)에 저장함으로써 데이터(DAT)를 프리페치할 수 있다. 예를 들면, 도 6에 도시된 바와 같이, 컨트롤러(514)는 장치 메모리(530)로부터 독출된 데이터(DAT)를 포함하는 제1 엔트리(601)로서 버퍼(600)에 저장할 수 있다. 컨트롤러(514)는 버퍼(600)에 데이터(DAT)의 저장이 완료되는 경우, 버퍼(600)로부터 데이터(DAT)를 가속기 회로(512)에 제공할 수 있다.
제1 엔트리(601)는, 도 6에 도시된 바와 같이, 레디 필드(RDY) 및 데이터 필드(DATA)를 포함할 수 있다. 데이터 필드(DATA)는 장치 메모리(530)로부터 독출된 데이터를 포함할 수 있는 한편, 레디 필드(RDY)는 데이터 필드(DATA)에 데이터의 저장이 완료되었는지 여부를 나타낼 수 있다. 예를 들면, 도 6에 도시된 바와 같이, 제1 엔트리(601)는 데이터 필드(DATA)에서 데이터(DAT)를 온전하게 포함할 수 있고, 이에 따라 레디 필드(RDY)에서 값 "1"을 가질 수 있다.
컨트롤러(514)는 레디 필드(RDY)에 포함된 값에 기초하여 가속기 회로(512)에 데이터(DAT)를 제공할 수 있다. 예를 들면, 컨트롤러(514)는 가속기 회로(512)로부터 독출 요청(REQ)을 수신하는 경우, 레디 필드(RDY)에서 값 "0"을 포함하는 제1 엔트리(601)를 버퍼(600)에서 생성할 수 있다. 컨트롤러(514)는, 호스트 프로세서(520)로부터 제2 메시지(MSG2)를 수신하는 경우, 제1 엔트리(601)의 레디 필드(RDY)의 값에 기초하여 버퍼(600)에 저장된 데이터(DAT)를 가속기 회로(512)에 제공하거나 버퍼(600)에 데이터(DAT)의 저장이 완료될 때까지 대기할 수 있다.
도 7은 본 개시의 예시적 실시예에 따른 장치 메모리(700)를 나타내는 블록도이다. 구체적으로, 도 7의 장치 메모리(700)는 도 4의 장치 메모리(430)의 예시일 수 있고, 이하에서 도 7은 도 4를 참조하여 설명될 것이며, 도 4의 장치 메모리(430)는 도 7의 장치 메모리(700)인 것으로 가정된다.
일부 실시예들에서, 장치 메모리(700)는 계층적(hierarchical) 구조를 가질 수 있다. 예를 들면, 도 7에 도시된 바와 같이, 장치 메모리(700)는 제1 내지 제n 레벨 메모리(L1 내지 Ln)를 포함할 수 있다(n은 1보다 큰 정수). 상위 레벨의 메모리(예컨대, 제1 레벨 메모리(L1)에 가까운 메모리)일 수록 상대적으로 작은 용량을 및 빠른 응답 속도를 가질 수 있는 한편, 하위 레벨의 메모리(예컨대, 제n 레벨 메모리(Ln)에 가까운 메모리)일수록 상대적으로 큰 용량 및 느린 응답 속도를 가질 수 있다.
컨트롤러(414)는 하위 레벨의 메모리에 저장된 데이터를 상위 레벨의 메모리에 복사함으로써 데이터의 프리페치를 수행할 수 있다. 예를 들면, 도 7에 도시된 바와 같이, 컨트롤러(414)는 가속기 회로(412)로부터 수신된, 어드레스(ADR)를 포함하는 독출 요청(REQ)에 응답하여 데이터(DAT)를 프리페치하기 위하여, 어드레스(ADR)에 대응하는 제n 레벨 메모리(Ln)의 영역에 저장된 데이터(DAT)를 제1 레벨 메모리(L1)에 복사할 수 있고, 어드레스(ADR)를 함께 제1 레벨 메모리(L1)에 저장할 수 있다. 제n 레벨 메모리(Ln)에만 데이터(DAT)가 저장된 경우와 비교할 때, 도 7에 도시된 바와 같이 제1 레벨 메모리(L1)에 데이터(DAT)가 저장되 경우, 데이터(DAT)는 장치 메모리(700)로부터 조기에 독출될 수 있다. 도 7의 장치 메모리(700)와 같이, 계층적 구조의 장치 메모리를 액세스하기 위한 방법의 예시가 도 8을 참조하여 후술될 것이다.
도 8은 본 개시의 예시적 실시예에 따른 장치-부착 메모리에 대한 액세스를 위한 방법을 나타내는 메시지도이다. 구체적으로, 도 8의 메시지도는, 호스트 프로세서(820), 장치 메모리에 포함되는 근거리 메모리(832) 및 원거리 메모리(834), 장치에 포함되는 가속기 회로(812) 및 컨트롤러(814) 사이 송수신되는 메시지들 및/또는 데이터를 시간의 흐름에 따라 나타낸다. 일부 실시예들에서, 도 8의 근거리 메모리(832)는 도 7의 제1 레벨 메모리(L1)에 대응할 수 있고, 도 8의 원거리 메모리(834)는 도 7의 제n 레벨 메모리(Ln)에 대응할 수 있다. 도 8의 예시에서 컨트롤러(814) 및 호스트 프로세서(820)는 호스트 바이어스 모드로 설정된 것으로 가정된다.
도 8을 참조하면, 단계 S81에서 가속기 회로(512)는 어드레스(ADR)를 포함하는 독출 요청(REQ)을 컨트롤러(814)에 제공할 수 있다. 예를 들면, 가속기 회로(812)는 주어진 기능을 수행하기 위하여 어드레스(ADR)에 대응하는 장치 메모리의 원거리 메모리(834)의 영역에 저장된 데이터(DAT)를 필요로 할 수 있고, 이에 따라 어드레스(ADR)를 포함하는 독출 요청(REQ)을 컨트롤러(814)에 제공할 수 있다.
단계 S82에서, 컨트롤러(814)는 어드레스(ADR)를 포함하는 제1 메시지(MSG1)를 호스트 프로세서(820)에 제공할 수 있다. 호스트 바이어스 모드에 기인하여, 컨트롤러(814)는 가속기 회로(812)로부터 제공된 독출 요청(REQ)의 처리를 위하여 어드레스(ADR)를 포함하는 제1 메시지(MSG1)를 호스트 프로세서(820)에 제공할 수 있다.
단계 S83에서, 컨트롤러(814)는 제1 독출 명령(CMD1) 및 어드레스(ADR)를 원거리 메모리(834)에 제공할 수 있다. 비록 도 8은 이해의 편의를 위하여 제2 독출 명령(CMD2) 및 어드레스(ADR)가 원거리 메모리(834)에 제공되는 것으로 도시되나, 일부 실시예들에서 제2 독출 명령(CMD2) 및 어드레스(ADR)는 근거리 메모리(832) 및 원거리 메모리(834)에 대한 액세스를 제어하는, 장치 메모리에 포함된 메모리 컨트롤러에 제공될 수 있다.
단계 S87에서, 근거리 메모리(832)는 데이터(DAT)를 컨트롤러(814)에 제공할 수 있다. 예를 들면, 장치 메모리에 포함된 컨트롤러는, 단계 S86에서 수신된 제2 독출 커맨드(CMD2)에 응답하여, 근거리 메모리(832)에서 어드레스(ADR)를 포함하는 엔트리를 식별할 수 있고, 식별된 엔트리에 포함된 데이터(DAT)를 근거리 메모리(832)로부터 독출하여 컨트롤러(814)에 제공할 수 있다. 컨트롤러(814)가 호스트 프로세서(820)로부터 제2 메시지(MSG2)를 수신한 후 장치 메모리로부터 데이터(DAT)를 수신하기까지 소요된 시간은, 데이터(DAT)가 근거리 메모리(832)로부터 제공됨으로써 단축될 수 있다.
단계 S88에서, 컨트롤러(814)는 데이터(DAT)를 포함하는 응답(RES)을 가속기 회로(812)에 제공할 수 있다. 전술된 바와 같이, 컨트롤러(814)에 의한 프리페치에 기인하여, 호스트 프로세서(820)에 제1 메시지(MSG1)를 제공하고 호스트 프로세서(820)로부터 제2 메시지(MSG2)를 수신하는 구간 및 장치 메모리의 원거리 메모리(834)로부터 데이터(DAT)를 독출하는 구간이 적어도 부분적으로 중첩될 수 있다. 이에 따라, 가속기 회로(812)가 어드레스(ADR)를 포함하는 독출 요청(REQ)을 발행한 시점으로부터 데이터(DAT)를 포함하는 응답(RES)을 수신하는 시점까지 소요된 시간이 단축될 수 있고, 결과적으로 가속기 회로(812)는 데이터(DAT)에 기초한 작업을 조기에 완료할 수 있다.
도 9는 본 개시의 예시적 실시예에 따른 장치-부착 메모리에 액세스하기 위한 방법을 나타내는 순서도이다. 구체적으로, 도 9의 순서도는 장치-부착 메모리에 저장된 데이터를 독출하기 위한 장치의 동작 방법의 예시를 나타낸다. 도 9에 도시된 바와 같이, 장치-부착 메모리에 액세스하기 위한 방법은 복수의 단계들(S110 내지 S190)을 포함할 수 있다. 일부 실시예들에서, 도 9의 방법은 도 4의 장치(410)에 의해서 수행될 수 있고, 이하에서 도 9는 도 4를 참조하여 설명될 것이다.
도 9를 참조하면 단계 S110에서, 독출의 트리거 여부가 판정될 수 있다. 예를 들면, 가속기 회로(412)는 작업의 수행을 위해서 장치 메모리(430)에 저장된 데이터의 독출 요청을 발행함으로써 데이터의 독출(또는 독출 동작)을 트리거할 수 있다. 컨트롤러(414)는 가속기 회로(412)로부터 어드레스를 포함하는 독출 요청을 수신할 수 있다. 도 9에 도시된 바와 같이, 장치 메모리(430)에 대한 장치(410)의 독출 동작이 트리거되는 경우, 단계 S120이 후속하여 수행될 수 있다.
단계 S120에서, 장치 메모리(430)에 액세스하기 위한 바이어스 모드가 판정될 수 있다. 예를 들면, 컨트롤러(414)는 가속기 회로(412)로부터 독출 요청을 수신하는 경우, 현재 설정된 모드가 장치 바이어스 모드인지 또는 호스트 바이어스 모드인지를 식별할 수 있다. 도 2a 및 도 2b를 참조하여 전술된 바와 같이, 장치 메모리(430)에 액세스하기 위한 바이어스 모드는 다양한 방식으로 설정될 수 있고, 컨트롤러(414)는 설정된 바이어스 모드를 식별할 수 있다. 도 9에 도시된 바와 같이, 장치 바이어스 모드가 식별된 경우 단계 S130이 후속하여 수행될 수 있는 한편, 호스트 바이어스 모드가 식별된 경우 단계 S150 및 단계 S170이 후속하여 병렬적으로 수행될 수 있다.
단계 S120에서 장치 바이어스 모드가 식별된 경우, 단계 S130에서 장치 메모리(430)로부터 데이터가 독출될 수 있다. 예를 들면, 도 2a를 참조하여 전술된 바와 같이, 장치 바이어스 모드에서 장치(410)는 호스트 프로세서(420)에 독립적으로, 높은 대역폭 및 낮은 레이턴시에 기초하여 장치 메모리(430)에 액세스할 수 있다. 이에 따라, 컨트롤러(414)는 장치 바이어스 모드에서 가속기 회로(412)의 독출 요청을 수신하는 경우, 독출 요청에 포함된 어드레스에 기초하여 장치 메모리(430)로부터 데이터를 독출할 수 있다. 일부 실시예들에서, 컨트롤러(414)는 장치 메모리(430)로부터 독출된 데이터를 버퍼(416)에 저장할 수 있다.
단계 S140에서, 독출된 데이터가 사용될 수 있다. 예를 들면, 가속기 회로(412)는 컨트롤러(414)로부터 데이터를 포함하는 응답을 수신할 수 있고, 수신된 데이터에 기초하여 작업을 수행할 수 있다. 일부 실시예들에서, 가속기 회로(412)는 버퍼(416)로부터 (예컨대, 컨트롤러(414)를 통해서) 데이터를 수신할 수도 있다.
단계 S120에서 호스트 바이어스 모드가 식별된 경우, 단계 S150에서 일관성 해소가 요청될 수 있다. 예를 들면, 컨트롤러(414)는 단계 S110에서 수신된 독출 요청에 포함된 어드레스를 호스트 프로세서(420)에 제공할 수 있고, 해당 어드레스에 대응하는 장치 메모리(430)의 영역에 대한 일관성의 해소를 요청할 수 있다. 호스트 바이어스 모드의 경우, 장치 메모리(430)의 메모리 일관성은 호스트 프로세서(420)에 의해서 관리(management)되고 있으므로, 컨트롤러(414)는 일관성의 해소를 요청하기 위한 메시지(예컨대, 도 5의 MSG1)를 호스트 프로세서(420)에 제공할 수 있다. 단계 S150의 예시가 도 10을 참조하여 후술될 것이다.
단계 S160에서, 일관성 해소가 완료될 수 있다. 예를 들면, 호스트 프로세서(420)는 장치(410)의 컨트롤러(414)가 요청한 일관성 해소를 완료할 수 있고, 일관성 해소의 완료를 나타내는 메시지(예컨대, 도 5의 MSG2)를 장치(410)의 컨트롤러(414)에 제공할 수 있다. 일부 실시예들에서, 호스트 프로세서(420)는 XL 사양의 CXL.mem 프로토콜에 의해서 지원되는 MemRdFwd를 컨트롤러(414)에 제공할 수 있고, MemRdFwd는 호스트 프로세서(420)에 의한 어떠한 완료(completion) 없이도 장치 메모리(430)로부터 장치(410)에 데이터가 전달(forward)될 수 있음을 나타낼 수 있다. 단계 S160의 예시가 도 10을 참조하여 후술될 것이다.
단계 S120에서 호스트 바이어스 모드가 식별되는 경우, 단계 S150 및 단계 S160에 병렬적으로, 단계 S170에서 데이터가 프리페치될 수 있다. 예를 들면, 컨트롤러(414)는 일관성 해소를 위한 호스트 프로세서(420)와의 통신과 병렬적으로 장치 메모리(430)로부터 데이터를 프리페치할 수 있다. 이에 따라, 도면들을 참조하여 후술되는 바와 같이, 호스트 바이어스 모드에서 가속기 회로(412)가 데이터를 취득하는데 소요되는 시간이 단축될 수 있다. 단계 S170의 예시들이 도 11a 및 도 11b를 참조하여 후술될 것이다.
단계 S160 및 단계 S170에 후속하여, 단계 S180에서 프리페치의 완료 여부가 판정될 수 있다. 예를 들면, 단계 S170이 단계 S150 및 단계 S160과 병렬적으로 수행됨에 기인하여, 단계 S160에서 일관성의 해소가 완료되는 시점, 즉 컨트롤러(414)가 호스트 프로세서(420)로부터 일관성 해소를 나타내는 메시지(예컨대, 도 5의 MSG2)를 수신하는 시점에 데이터의 프리페치가 완료되지 아니할 수도 있다. 일부 실시예들에서, 컨트롤러(414)는 도 6을 참조하여 전술된 바와 같이, 버퍼(600)의 레디 필드(RDY)의 값에 기초하여 프리페치의 완료 여부를 판정할 수 있다. 또한, 일부 실시예들에서, 데이터의 프리페치가 장치 메모리(430) 내에서 하위 레벨의 메모리로부터 상위 레벨의 메모리로의 데이터 복사를 포함하는 경우, 컨트롤러(414)는 상위 레벨의 메모리에 저장된 데이터를 장치 메모리(430)로부터 독출함으로써 프리페치의 완료를 판정할 수도 있다. 도 9에 도시된 바와 같이, 프리페치가 완료된 경우, 단계 S190이 후속하여 수행될 수 있다.
단계 S190에서, 프리페치된 데이터가 사용될 수 있다. 예를 들면, 가속기 회로(412)는 컨트롤러(414)에 의해서 프리페치된 데이터를 수신할 수 있고, 수신된 데이터에 기초하여 작업을 수행할 수 있다. 일부 실시예들에서, 컨트롤러(414)에 의해서 프리페치된 데이터가 버퍼(416)에 저장된 경우, 가속기 회로(412)는 버퍼(416)에 저장된 데이터를 수신할 수 있다.
도 10은 본 개시의 예시적 실시예에 따른 장치-부착 메모리에 액세스하기 위한 방법을 나타내는 순서도이다. 구체적으로, 도 10의 순서도는 도 9의 단계 S150 및 단계 S160의 예시를 나타낸다. 도 9를 참조하여 전술된 바와 같이, 도 10의 단계 S150'에서 일관성의 해소가 요청될 수 있고, 단계 S160'에서 일관성의 해소가 완료될 수 있다. 일부 실시예들에서, 도 10의 단계 S150' 및 단계 S160'은 도 4의 컨트롤러(414)에 의해서 수행될 수 있고, 이하에서 도 10은 도 4 및 도 9를 참조하여 설명될 것이다.
도 9의 단계 S120에 후속하여, 단계 S150'에서 제1 프로토콜에 기초하여 호스트 프로세서(420)에 제1 메시지(MSG1)가 제공될 수 있다. 도 1을 참조하여 전술된 바와 같이, 장치(410) 및 호스트 프로세서(420)는 다수의 프로토콜들에 기초하여 상호 통신할 수 있고, 컨트롤러(414)는 다수의 프로토콜들 중 제1 프로토콜에 기초하여 일관성의 해소를 요청하는 제1 메시지(MSG1)를 호스트 프로세서(420)에 제공할 수 있다. 일부 실시예들에서, 제1 프로토콜은 일관적 프로토콜로서 CXL 사양의 CXL.cache에 대응할 수 있고, 제1 메시지(MSG1)는 CXL 사양의 Rd*에 대응할 수 있다.
단계 S160'에서, 제2 프로토콜에 기초하여 호스트 프로세서(420)로부터 제2 메시지(MSG2)가 수신될 수 있다. 즉, 단계 S150'에서 제1 메시지(MSG1)의 제공에 사용된 제1 프로토콜과 상이한 제2 프로토콜에 기초하여 제2 메시지(MSG2)가 수신될 수 있다. 일부 실시예들에서, 제2 프로토콜은 메모리 프로토콜로서 CXL 사양의 CXL.mem에 대응할 수 있고, 제2 메시지(MSG2)는 CXL 사양의 MemRdFwd에 대응할 수 있다. 도 10에 도시된 바와 같이, 단계 S160'에 후속하여 도 9의 단계 S180이 수행될 수 있다.
도 11a 및 도 11b는 본 개시의 예시적 실시예들에 따른 장치-부착 메모리에 액세스하기 위한 방법의 예시들을 나타내는 순서도들이다. 구체적으로, 도 11a 및 도 11b의 순서도들은 도 9의 단계 S170의 예시들을 각각 나타낸다. 도 9를 참조하여 전술된 바와 같이, 단계 S170에서 데이터가 프리페치될 수 있다. 일부 실시예들에서, 도 11a의 단계 S170' 및 도 11b의 단계 S170"은 도 4의 컨트롤러(414) 및/또는 장치 메모리(430)에 의해서 수행될 수 있고, 이하에서 도 11a 및 도 11b는 도 4 및 도 9를 참조하여 설명될 것이다.
도 11a를 참조하면, 단계 S170'은 복수의 단계들(S171 내지 S174)을 포함할 수 있다. 단계 S171에서, 장치 메모리(430)로부터 데이터가 독출될 수 있다. 예를 들면, 컨트롤러(414)는 가속기 회로(412)로부터 수신된 독출 요청에 포함된 어드레스에 기초하여 장치 메모리(430)로부터 데이터를 독출할 수 있다. 그 다음에 단계 S172에서, 독출된 데이터가 버퍼(416)에 저장될 수 있다. 예를 들면, 컨트롤러(414)는 장치 메모리(430)로부터 수신되는 데이터를 버퍼(416)에 순차적으로 저장할 수 있다. 일부 실시예들에서, 컨트롤러(414)는 버퍼(416)에 저장되는 데이터의 레디 정보를 비활성화시킬 수 있다. 예를 들면, 도 6을 참조하여 전술된 바와 같이, 컨트롤러(414)는 버퍼(416)에 엔트리를 생성할 수 있고, 엔트리의 레디 필드(RDY)에 값 "0"을 저장할 수 있다.
단계 S173에서, 버퍼(416)에 데이터의 저장의 완료 여부가 판정될 수 있다. 예를 들면, 컨트롤러(414)는 가속기 회로(412)로부터 제공된 어드레스에 대응하는 장치 메모리(430)의 영역으로부터 모든 데이터가 수신되어 버퍼(416)에 저장되었는지 여부를 판정할 수 있다. 도 11a에 도시된 바와 같이, 데이터의 저장이 완료된 경우, 단계 S174에서 데이터의 레디 정보가 활성화될 수 있다. 예를 들면, 도 6을 참조하여 전술된 바와 같이, 컨트롤러(414)는 엔트리의 레디 필드(RDY)에 값 "1"을 저장할 수 있다.
도 11b를 참조하면, 단계 S170"에서 데이터가 하위 메모리로부터 상위 메모리로 복사될 수 있다. 예를 들면, 도 4의 장치 메모리(430)는, 도 7의 장치 메모리(700)와 같이 계층적인 구조를 가질 수 있고, 상이한 레벨들에 각각 대응하는 2이상의 메모리들을 포함할 수 있다. 컨트롤러(414)는 데이터의 프리페치를 위하여, 하위 레벨의 메모리에 저장된 데이터를 상위 레벨의 메모리로 복사할 것을 지시하는 커맨드를 장치 메모리(430)에 제공할 수 있고, 장치 메모리(430) 또는 장치 메모리(430)에 포함된 메모리 컨트롤러는 하위 메모리에 저장된 데이터를 독출하여 상위 메모리에 저장할 수 있다. 이에 따라, 상대적으로 빠른 응답 속도를 제공하는 상위 메모리로 데이터가 복사됨으로써, 이후 장치 메모리(430)로부터 데이터를 독출하는데 소요되는 시간이 단축될 수 있다.
도 12는 본 개시의 예시적 실시예에 따른 시스템을 나타내는 도면이다. 구체적으로, 도 12의 블록도들은 다수의 CPU들을 포함하는 시스템(5)을 나타낸다.
도 12를 참조하면, 시스템(5)은, 제1 CPU(11) 및 제2 CPU(21)를 포함할 수 있고, 제1 CPU(11) 및 제2 CPU(21)에 각각 연결된 제1 DDR(double data rate) 메모리(12) 및 제2 DDR 메모리(22)를 포함할 수 있다. 제1 CPU(11) 및 제2 CPU(21)는 프로세서 상호 연결 기술에 기초한 상호연결 시스템(30)을 통해서 연결될 수 있다. 도 12에 도시된 바와 같이, 상호연결 시스템(30)은, 적어도 하나의 CPU간(CPU-to-CPU) 일관적 링크를 제공할 수 있다.
시스템(5)은, 제1 CPU(11)와 통신하는 제1 입출력 장치(13) 및 제1 가속기(14)를 포함할 수 있고, 제1 가속기(14)에 연결된 제1 장치 메모리(15)를 포함할 수 있다. 제1 CPU(11) 및 제1 입출력 장치(13)는 버스(16)를 통해서 통신할 수 있고, 제1 CPU(11) 및 제1 가속기(14)는 버스(17)를 통해서 통신할 수 있다. 또한, 시스템(5)은, 제2 CPU(21)와 통신하는 제2 입출력 장치(23) 및 제2 가속기(24)를 포함할 수 있고, 제2 가속기(24)에 연결된 제2 장치 메모리(25)를 포함할 수 있다. 제2 CPU(21) 및 제2 입출력 장치(23)는 버스(26)를 통해서 통신할 수 있고, 제2 CPU(21) 및 제2 가속기(24)는 버스(27)를 통해서 통신할 수 있다. 일부 실시예들에서, 제1 장치 메모리(15) 및 제2 장치 메모리(25) 중 적어도 하나는 시스템(5)에서 생략될 수도 있다.
또한, 시스템(5)은 원격 원거리 메모리(40)를 포함할 수 있다. 제1 CPU(11) 및 제2 CPU(21)는 버스들(18, 28)을 통해서 원격 원거리 메모리(40)에 각각 연결될 수 있다. 원격 원거리 메모리(40)는, 시스템(5)에서 메모리의 확장을 위하여 사용될 수 있고, 버스들(18, 28)은 메모리 확장 포트로서 사용될 수 있다. 일부 실시예들에서, 원격 원거리 메모리(40)는 시스템(5)에서 생략될 수도 있다.
버스들(16, 17, 18, 26, 27, 28)을 통해서 다수의 프로토콜들 중 적어도 일부에 에 기초한 통신이 수행될 수 있다. 예를 들면, 버스들(16, 17, 18, 26, 27, 28) 각각을 통해서, 비일관적 프로토콜에 기초하여 초기 설정 등의 정보가 전달될 수 있다. 또한, 버스들(17, 27)을 통해서, 일관적 프로토콜 및/또는 메모리 프로토콜에 기초하여 메시지 및/또는 데이터가 전달될 수 있다. 또한, 버스들(18, 28)을 통해서, 메모리 프로토콜에 기초하여 메시지 및/또는 데이터가 전달될 수 있다.
제1 장치 메모리(15)에 대한 액세스를 위하여, 제1 가속기(14)는 장치 바이어스 모드 또는 호스트 바이어스 모드로 설정될 수 있다. 도면들을 참조하여 전술된 바와 같이, 호스트 바이어스 모드에서 제1 가속기(14)는, 제1 장치 메모리(15)에 대한 독출 동작의 트리거시 버스(17)를 통해서 제1 CPU(11)에 제1 장치 메모리(15)에 대한 액세스를 알리는 것과 병렬적으로 제1 장치 메모리(15)에 저장된 데이터를 프리페치할 수 있다. 이에 따라, 제1 CPU(11)로부터 버스(17)를 통해서 제1 장치 메모리(15)에 대한 액세스의 승인이 수신되는 경우, 제1 가속기(14)는 프리페치된 데이터를 사용할 수 있고, 결과적으로 데이터에 기초한 작업을 조기에 완료할 수 있다.
제1 가속기(14)와 유사하게, 제2 장치 메모리(25)에 대한 액세스를 위하여, 제2 가속기(24)는 장치 바이어스 모드 또는 호스트 바이어스 모드로 설정될 수 있다. 도면들을 참조하여 전술된 바와 같이, 호스트 바이어스 모드에서 제2 가속기(24)는, 제2 장치 메모리(25)에 대한 독출 동작의 트리거시 버스(27)를 통해서 제2 CPU(21)에 제2 장치 메모리(25)에 대한 액세스를 알리는 것과 병렬적으로 제2 장치 메모리(25)에 저장된 데이터를 프리페치할 수 있다. 이에 따라, 제2 CPU(21)로부터 버스(27)를 통해서 제2 장치 메모리(25)에 대한 액세스의 승인이 수신되는 경우, 제2 가속기(24)는 프리페치된 데이터를 사용할 수 있고, 결과적으로 데이터에 기초한 작업을 조기에 완료할 수 있다.
도 13은 본 개시의 예시적 실시예에 따른 시스템을 포함하는 데이터 센터(7)를 나타내는 블록도이다. 일부 실시예들에서, 도면들을 참조하여 전술된 시스템은 어플리케이션 서버 및/또는 스토리지 서버로서 데이터 센터(7)에 포함될 수 있다.
도 13을 참조하면, 데이터 센터(7)는 다양한 데이터를 수집하고 서비스를 제공할 수 있고, 데이터 스토리지 센터로 지칭될 수도 있다. 예를 들면, 데이터 센터(7)는 검색 엔진 및 데이터 베이스 운용을 위한 시스템일 수 있고, 은행 등의 기업 또는 정부기관에서 사용되는 컴퓨팅 시스템일 수도 있다. 도 13에 도시된 바와 같이, 데이터 센터(7)는 어플리케이션 서버들(50_1 내지 50_n) 및 스토리지 서버들(60_1 내지 60_m)을 포함할 수 있다(m 및 n은 1보다 큰 정수). 어플리케이션 서버들(50_1 내지 50_n)의 개수 n 및 스토리지 서버들(60_1 내지 60_m)의 개수 m은 실시예에 따라 다양하게 선택될 수 있고, 어플리케이션 서버들(50_1 내지 50_n)의 개수 n 및 스토리지 서버들(60_1 내지 60_m)의 개수 m은 상이할 수 있다(m?n).
어플리케이션 서버(50_1 또는 50_n)는 프로세서(51_1 또는 51_n), 메모리(52_1 또는 52_n), 스위치(53_1 또는 53_n), NIC(network interface controller)(54_1 또는 54_n) 및 스토리지 장치(55_1 또는 55_n) 중 적어도 하나를 포함할 수 있다. 프로세서(52_1 또는 51_n)는 어플리케이션 서버(50_1 또는 50_n)의 전반적인 동작을 제어할 수 있고, 메모리(52_1 또는 52_n)에 액세스하여 메모리(52_1 또는 52_n)에 로딩된 명령어들(instructions) 및/또는 데이터를 실행할 수 있다. 메모리(52_1 또는 52_n)는 비제한적인 예시로서, DDR SDRAM(Double Data Rate Synchronous DRAM), HBM(High Bandwidth Memory), HMC(Hybrid Memory Cube), DIMM(Dual In-line Memory Module), Optane DIMM 또는 NVMDIMM(Non-Volatile DIMM)를 포함할 수 있다. 실시예에 따라, 어플리케이션 서버(50_1 또는 50_n)에 포함되는 프로세서들의 개수 및 메모리들의 개수는 다양하게 선택될 수 있다. 일부 실시예들에서, 프로세서(51_1 또는 51_n)와 메모리(52_1 또는 52_n)는 프로세서-메모리 페어를 제공할 수 있다. 일부 실시예들에서, 프로세서(51_1 또는 51_n)와 메모리(52_1 또는 52_n)의 개수는 상이할 수 있다. 프로세서(51_1 또는 51_n)는 단일 코어 프로세서 또는 다중 코어 프로세서를 포함할 수 있다. 일부 실시예들에서, 도 13에서 점선으로 도시된 바와 같이, 어플리케이션 서버(50_1 또는 50_n)에서 스토리지 장치(55_1 또는 55_n)는 생략될 수도 있다. 스토리지 서버(50_1 또는 50_n)에 포함되는 스토리지 장치(55_1 또는 55_n)의 개수는 실시예에 따라 다양하게 선택될 수 있다. 프로세서(51_1 또는 51_n), 메모리(52_1 또는 52_n), 스위치(53_1 또는 53_n), NIC(network interface controller)(54_1 또는 54_n) 및/또는 스토리지 장치(55_1 또는 55_n)는, 도면들을 참조하여 전술된 링크를 통해서 상호 통신할 수 있다.
스토리지 서버(60_1 또는 60_m)는 프로세서(61_1 또는 61_m), 메모리(62_1 또는 62_m), 스위치(63_1 또는 63_m), NIC(64_1 또는 64_n) 및 스토리지 장치(65_1 또는 65_m) 중 적어도 하나를 포함할 수 있다. 프로세서(61_1 또는 61_m) 및 메모리(62_1 또는 62_m)는, 전술된 어플리케이션 서버(50_1 또는 50_n)의 프로세서(51_1 또는 51_n) 및 메모리(52_1 또는 52_n)와 유사하게 동작할 수 있다.
어플리케이션 서버들(50_1 내지 50_n) 및 스토리지 서버들(60_1 내지 60_m)은 네트워크(70)를 통해 상호 통신할 수 있다. 일부 실시예들에서, 네트워크(70)는 FC(Fibre Channel) 또는 이더넷(Ethernet) 등을 이용하여 구현될 수 있다. FC는 상대적으로 고속의 데이터 전송에 사용되는 매체일 수 있고, 고성능/고가용성을 제공하는 광 스위치가 사용될 수 있다. 네트워크(70)의 액세스 방식에 따라 스토리지 서버들(60_1 내지 60_m)은 파일 스토리지, 블록 스토리지, 또는 오브젝트 스토리지로서 제공될 수 있다.
일부 실시예들에서, 네트워크(70)는 SAN(Storage Area Network)와 같은 스토리지 전용 네트워크일 수 있다. 예를 들어, SAN은 FC 네트워크를 이용할 수 있고 FCP(FC Protocol)에 따라 구현된 FC-SAN일 수 있다. 다르게는, SAN은 TCP/IP 네트워크를 이용하고 iSCSI(SCSI over TCP/IP 또는 Internet SCSI) 프로토콜에 따라 구현된 IP-SAN일 수 있다. 일부 실시예들에서, 네트워크(70)는 TCP/IP 네트워크와 같은 일반 네트워크일 수 있다. 예를 들면, 네트워크(70)는 FCoE(FC over Ethernet), NAS(Network Attached Storage), NVMe-oF(NVMe over Fabrics) 등의 프로토콜에 따라 구현될 수 있다.
이하에서, 어플리케이션 서버(50_1) 및 스토리지 서버(60_1)가 주로 설명되나, 어플리케이션 서버(50_1)에 대한 설명은 다른 어플리케이션 서버(예컨대, 50_n)에도 적용될 수 있고, 스토리지 서버(60_1)에 대한 설명은 다른 스토리지 서버(예컨대, 60_m)에도 적용될 수 있는 점이 유의된다.
어플리케이션 서버(50_1)는 사용자 또는 클라이언트가 저장을 요청한 데이터를 네트워크(70)를 통해 스토리지 서버들(60_1 내지 60_m) 중 하나에 저장할 수 있다. 또한, 어플리케이션 서버(50_1)는 사용자 또는 클라이언트가 독출을 요청한 데이터를 스토리지 서버들(60_1 내지 60_m) 중 하나로부터 네트워크(70)를 통해 획득할 수 있다. 예를 들어, 어플리케이션 서버(50_1)는 웹 서버 또는 DBMS(Database Management System) 등으로 구현될 수 있다.
어플리케이션 서버(50_1)는 네트워크(70)를 통해 다른 어플리케이션 서버(50_n)에 포함된 메모리(52_n) 및/또는 스토리지 장치(55_n)에 액세스할 수 있고, 그리고/또는 네트워크(70)를 통해 스토리지 서버들(60_1 내지 60_m)에 포함된 메모리들(62_1 내지 62_m) 및/또는 스토리지 장치들(65_1 내지 65_m)에 액세스할 수 있다. 이에 따라, 어플리케이션 서버(50_1)는 어플리케이션 서버들(50_1 내지 50_n) 및/또는 스토리지 서버들(60_1 내지 60_m)에 저장된 데이터에 대해 다양한 동작들을 수행할 수 있다. 예를 들어, 어플리케이션 서버(50_1)는 어플리케이션 서버들(50_1 내지 50_n) 및/또는 스토리지 서버들(60_1 내지 60_m) 사이에서 데이터를 이동시키거나 복사(copy)하기 위한 명령어를 실행할 수 있다. 이 때 데이터는 스토리지 서버들(60_1 내지 60_m)의 스토리지 장치로(65_1 내지 65_m)부터 스토리지 서버들(_1 내지 60_m)의 메모리들(62_1 내지 62_m)을 통해서 또는 직접적으로 어플리케이션 서버들(50_1 내지 50_n)의 메모리(52_1 내지 52_n)로 이동될 수 있다. 일부 실시예들에서, 네트워크(70)를 통해 이동하는 데이터는 보안 또는 프라이버시를 위해 암호화된 데이터일 수 있다.
스토리지 서버(60_1)에서, 인터페이스(IF)는 프로세서(61_1)와 컨트롤러(CTRL)의 물리적 연결 및 NIC(64_1)와 컨트롤러(CTRL)의 물리적 연결을 제공할 수 있다. 예를 들어, 인터페이스(IF)는 스토리지 장치(65_1)를 전용 케이블로 직접 접속하는 DAS(Direct Attached Storage) 방식으로 구현될 수 있다. 또한, 예를 들어, 인터페이스(IF)는 ATA(Advanced Technology Attachment), SATA(Serial ATA), e-SATA(external SATA), SCSI(Small Computer Small Interface), SAS(Serial Attached SCSI), PCI(Peripheral Component Interconnection), PCIe(PCI express), NVMe(NVM express), IEEE 1394, USB(universal serial bus), SD(secure digital) 카드, MMC(multi-media card), eMMC(embedded multi-media card), UFS(Universal Flash Storage), eUFS(embedded Universal Flash Storage), CF(compact flash) 카드 인터페이스 등과 같은 다양한 인터페이스 방식으로 구현될 수 있다.
스토리지 서버(60_1)에서, 스위치(63_1)는 프로세서(61_1)의 제어에 따라 프로세서(61_1)와 스토리지 장치(65_1)를 선택적으로 접속시키거나, NIC(64_1)과 스토리지 장치(65_1)를 선택적으로 접속시킬 수 있다.
일부 실시예들에서, NIC(64_1)는 네트워크 인터페이스 카드, 네트워크 어댑터 등을 포함할 수 있다. NIC(54_1)는 유선 인터페이스, 무선 인터페이스, 블루투스 인터페이스, 광학 인터페이스 등에 의해 네트워크(70)에 연결될 수 있다. NIC(54_1)는 내부 메모리, DSP, 호스트 버스 인터페이스 등을 포함할 수 있으며, 호스트 버스 인터페이스를 통해 프로세서(61_1) 및/또는 스위치(63_1) 등과 연결될 수 있다. 일부 실시예들에서, NIC(64_1)는 프로세서(61_1), 스위치(63_1), 스토리지 장치(65_1) 중 적어도 하나와 통합될 수도 있다.
어플리케이션 서버(50_1 내지 50_n) 또는 스토리지 서버(60_1 내지 60_m)에서 프로세서(51_1 내지 51_m, 61_1 내지 61_n)는 스토리지 장치들(55_1 내지 55_n, 65_1 내지 65_m) 또는 메모리(52_1 내지 52_n, 62_1 내지 62_m)로 커맨드를 전송하여 데이터를 프로그램하거나 리드할 수 있다. 이 때 데이터는 ECC(Error Correction Code) 엔진을 통해 에러 정정된 데이터일 수 있다. 데이터는 데이터 버스 변환(Data Bus Inversion: DBI) 또는 데이터 마스킹(Data Masking: DM) 처리된 데이터로서, CRC(Cyclic Redundancy Code) 정보를 포함할 수 있다. 데이터는 보안 또는 프라이버시를 위해 암호화된 데이터일 수 있다.
스토리지 장치(55_1 내지 55_n, 65_1 내지 65_m)는 프로세서(51_1 내지 51_m, 61_1 내지 61_n)로부터 수신된 리드 커맨드에 응답하여, 제어 신호 및 커맨드/어드레스 신호를 비휘발성 메모리 장치(예컨대 NAND 플래시 메모리 장치)(NVM)로 전송할 수 있다. 이에 따라 비휘발성 메모리 장치(NVM)로부터 데이터를 독출하는 경우, 독출 인에이블 신호는 데이터 출력 제어 신호로 입력되어, 데이터를 DQ 버스로 출력하는 역할을 할 수 있다. 독출 인에이블 신호를 이용하여 데이터 스트로브 신호를 생성할 수 있다. 커맨드와 어드레스 신호는 기입 인에이블 신호의 상승 엣지 또는 하강 엣지에 따라 래치될 수 있다.
컨트롤러(CTRL)는 스토리지 장치(65_1)의 동작을 전반적으로 제어할 수 있다. 일 실시예에서, 컨트롤러(CTRL)는 SRAM(Static Random Access Memory)을 포함할 수 있다. 컨트롤러(CTRL)는 기입 커맨드에 응답하여 비휘발성 메모리 장치(NVM)에 데이터를 기입할 수 있고, 또는 독출 커맨드에 응답하여 비휘발성 메모리 장치(NVM)로부터 데이터를 독출할 수 있다. 예를 들어, 기입 커맨드 및/또는 독출 커맨드는 호스트, 예컨대 스토리지 서버(60_1) 내의 프로세서(61_1), 다른 스토리지 서버(60_m) 내의 프로세서(61_m) 또는 어플리케이션 서버(50_1 또는 50_n) 내의 프로세서(51_1 또는 51_n)로부터 제공된 요청에 기초하여 생성될 수 있다. 버퍼(BUF)는 비휘발성 메모리 장치(NVM)에 기입될 데이터 또는 비휘발성 메모리 장치(NVM)로부터 독출된 데이터를 임시 저장(버퍼링)할 수 있다. 일부 실시예들에서 버퍼(BUF)는 DRAM을 포함할 수 있다. 또한, 버퍼(BUF)는 메타 데이터를 저장할 수 있고, 메타 데이터는 사용자 데이터 또는 비휘발성 메모리 장치(NVM)를 관리하기 위해 컨트롤러(CTRL)에서 생성된 데이터를 지칭할 수 있다. 스토리지 장치(65_1)는 보안 또는 프라이버시를 위해 SE(Secure Element)를 포함할 수 있다.
이상에서와 같이 도면과 명세서에서 예시적인 실시예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시예들이 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (20)

  1. 버스를 통해 호스트 프로세서와 연결된 장치로서,
    상기 호스트 프로세서로부터 수신된 메시지에 기초하여 동작하도록 구성된 가속기 회로; 및
    상기 장치에 연결된 메모리에 대한 액세스를 제어하는 컨트롤러를 포함하고,
    상기 컨트롤러는, 상기 가속기 회로로부터 수신된 독출 요청에 응답하여, 상기 호스트 프로세서에 일관성의 해소를 요청하는 제1 메시지를 제공하고, 상기 메모리로부터 데이터를 프리페치(prefetch)하도록 구성된 것을 특징으로 하는 장치.
  2. 청구항 1에 있어서,
    상기 컨트롤러는, 상기 버스를 통해서 상기 호스트 프로세서로부터 일관성의 해소 완료를 나타내는 제2 메시지를 수신하고, 상기 제2 메시지에 응답하여 프리페치된 상기 데이터를 상기 가속기 회로에 제공하도록 구성된 것을 특징으로 하는 장치.
  3. 청구항 2에 있어서,
    상기 컨트롤러는, 상기 버스를 통해서 제1 프로토콜에 기초하여 상기 제1 메시지를 상기 호스트 프로세서에 제공하고, 상기 버스를 통해서 제2 프로토콜에 기초하여 상기 제2 메시지를 상기 호스트 프로세서로부터 수신하도록 구성되고,
    상기 호스트 프로세서는, 상기 제2 프로토콜에 기초하여 상기 버스 및 상기 컨트롤러를 통해서 상기 메모리에 액세스하도록 구성된 것을 특징으로 하는 장치.
  4. 청구항 1에 있어서,
    상기 컨트롤러는, 상기 호스트 프로세서에 의해서 호스트 바이어스 모드 또는 장치 바이어스 모드로 설정되도록 구성되고, 상기 호스트 바이어스 모드에서 수신된 상기 독출 요청에 응답하여, 상기 제1 메시지를 제공하고 상기 데이터를 프리페치하도록 구성된 것을 특징으로 하는 장치.
  5. 청구항 4에 있어서,
    상기 컨트롤러는, 상기 장치 바이어스 모드에서 상기 독출 요청에 응답하여, 상기 메모리로부터 상기 데이터를 독출하고 독출된 상기 데이터를 상기 가속기 회로에 제공하도록 구성된 것을 특징으로 하는 장치.
  6. 청구항 1에 있어서,
    상기 프리페치된 데이터를 저장하도록 구성된 버퍼를 더 포함하고,
    상기 컨트롤러는, 상기 버퍼에 저장된 상기 데이터를 상기 가속기 회로에 제공하도록 구성된 것을 특징으로 하는 장치.
  7. 청구항 6에 있어서,
    상기 버퍼는, 상기 버퍼에 저장된 데이터의 유효 여부를 나타내는 레디 정보를 더 저장하도록 구성되고,
    상기 컨트롤러는, 상기 호스트 프로세서로부터 일관성의 해소 완료를 나타내는 제2 메시지를 수신시, 상기 레디 정보에 기초하여, 상기 버퍼에 저장된 데이터를 상기 가속기 회로에 제공하거나 상기 메모리로부터 데이터의 수신을 대기하도록 구성된 것을 특징으로 하는 장치.
  8. 청구항 1에 있어서,
    상기 메모리는, 상위 레벨의 메모리 및 하위 레벨의 메모리를 포함하고,
    상기 컨트롤러는, 상기 하위 레벨의 메모리에 저장된 상기 데이터를 상기 상위 레벨의 메모리로 복사함으로써 상기 데이터를 프리페치하도록 구성된 것을 특징으로 하는 장치.
  9. 청구항 8에 있어서,
    상기 컨트롤러는, 상기 호스트 프로세서로부터 일관성의 해소 완료를 나타내는 제2 메시지에 응답하여, 상기 상위 레벨의 메모리에 프리페치된 상기 데이터를 상기 가속기 회로에 제공하도록 구성된 것을 특징으로 하는 장치.
  10. 명령어들을 실행하도록 구성된 적어도 하나의 코어를 포함하는 호스트 프로세서;
    상기 호스트 프로세서와 버스를 통해서 연결되고, 호스트 바이어스 모드 또는 장치 바이어스 모드로 설정되도록 구성된 장치; 및
    상기 장치에 연결되고, 상기 장치를 통해 상기 호스트 프로세서에 의해서 액세스되도록 구성된 메모리를 포함하고,
    상기 장치는, 상기 호스트 바이어스 모드에서, 상기 호스트 프로세서에 일관성의 해소를 요청하는 제1 메시지를 제공하고, 상기 호스트 프로세서로부터 일관성의 해소 완료를 나타내는 제2 메시지를 수신하기 전 상기 메모리로부터 데이터를 프리페치(prefetch)하도록 구성된 것을 특징으로 하는 시스템.
  11. 청구항 10에 있어서,
    상기 장치는, 상기 버스를 통해서 제1 프로토콜에 기초하여 상기 제1 메시지를 상기 호스트 프로세서에 제공하고, 상기 버스를 통해서 제2 프로토콜에 기초하여 상기 제2 메시지를 상기 호스트 프로세서로부터 수신하도록 구성되고,
    상기 호스트 프로세서는, 상기 제2 프로토콜에 기초하여 상기 버스 및 상기 장치를 통해서 상기 메모리에 액세스하도록 구성된 것을 특징으로 하는 시스템.
  12. 청구항 10에 있어서,
    상기 장치는, 상기 장치 바이어스 모드에서 상기 호스트 프로세서에 상기 제1 메시지의 제공을 생략하고, 상기 메모리로부터 데이터를 독출하도록 구성된 것을 특징으로 하는 시스템.
  13. 청구항 10에 있어서,
    상기 장치는, 상기 프리페치된 데이터를 저장하도록 구성된 버퍼를 포함하고, 상기 호스트 프로세서로부터 상기 제2 메시지를 수신시 상기 버퍼에 저장된 데이터를 사용하도록 구성된 것을 특징으로 하는 시스템.
  14. 청구항 10에 있어서,
    상기 메모리는, 상위 레벨의 메모리 및 하위 레벨의 메모리를 포함하고,
    상기 장치는, 상기 하위 레벨의 메모리에 저장된 상기 데이터를 상기 상위 레벨의 메모리로 복사함으로써 상기 데이터를 프리페치하도록 구성된 것을 특징으로 하는 장치.
  15. 버스를 통해 호스트 프로세서와 연결된 장치의 동작 방법으로서,
    상기 장치에 연결된 메모리에 액세스하기 위한 모드로서 호스트 바이어스 모드로 설정되는 단계;
    상기 버스를 통해서 상기 호스트 프로세서에 어드레스에 대응하는 상기 메모리의 영역에 대한 일관성의 해소를 요청하는 제1 메시지를 제공하는 단계;
    상기 어드레스에 기초하여 상기 메모리의 상기 영역으로부터 데이터를 프리페치(prefetch)하는 단계; 및
    상기 버스를 통해서 상기 호스트 프로세서로부터 상기 메모리의 상기 영역에 대한 일관성의 해소 완료를 나타내는 제2 메시지를 수신하는 단계를 포함하고,
    상기 데이터를 프리페치하는 단계는, 상기 제2 메시지를 수신하는 단계가 수행되기 전 개시되는 것을 특징으로 하는 장치의 동작 방법.
  16. 청구항 15에 있어서,
    상기 메모리로부터 상기 메모리의 상기 영역에 대한 독출의 트리거를 검출하는 단계를 더 포함하고,
    상기 제1 메시지를 제공하는 단계 및 상기 데이터를 프리페치하는 단계는, 검출된 상기 트리거에 응답하여 개시되는 것을 특징으로 하는 장치의 동작 방법.
  17. 청구항 15에 있어서,
    상기 제1 메시지를 제공하는 단계는, 제1 프로토콜에 기초하여 상기 호스트 프로세서에 상기 제1 메시지를 제공하는 단계를 포함하고,
    상기 제2 메시지를 수신하는 단계는, 제2 프로토콜에 기초하여 상기 호스트 프로세서로부터 상기 제2 메시지를 수신하는 단계를 포함하고,
    상기 버스를 통해서 상기 제2 프로토콜에 기초하여 상기 호스트 프로세서로부터 상기 메모리에 액세스하기 위한 제3 메시지를 수신하는 단계를 더 포함하는 장치의 동작 방법.
  18. 청구항 15에 있어서,
    상기 데이터를 프리페치하는 단계는,
    상기 어드레스에 기초하여 상기 메모리로부터 데이터를 독출하는 단계; 및
    독출된 상기 데이터를 상기 장치에 포함된 버퍼에 저장하는 단계를 포함하는 것을 특징으로 하는 장치의 동작 방법.
  19. 청구항 18에 있어서,
    상기 데이터를 프리페치하는 단계는, 독출된 상기 데이터가 상기 버퍼에 저장이 완료된 경우, 레디 정보를 활성화하는 단계를 더 포함하고,
    상기 제2 메시지를 수신시, 상기 레디 정보에 기초하여 상기 버퍼에 저장된 데이터를 사용하거나 상기 메모리로부터 데이터의 수신을 대기하는 단계를 더 포함하는 장치의 동작 방법.
  20. 청구항 16에 있어서,
    상기 데이터를 프리페치하는 단계는, 상기 어드레스에 기초하여 상기 메모리에 포함된 하위 레벨의 메모리로부터 상기 메모리에 포함된 상위 레벨의 메모리로 상기 데이터를 복사하는 단계를 포함하는 것을 특징으로 하는 장치의 동작 방법.
KR1020200133743A 2020-10-15 2020-10-15 장치-부착 메모리에 대한 액세스를 위한 시스템, 장치 및 방법 KR20220049978A (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020200133743A KR20220049978A (ko) 2020-10-15 2020-10-15 장치-부착 메모리에 대한 액세스를 위한 시스템, 장치 및 방법
CN202110796960.3A CN114372011A (zh) 2020-10-15 2021-07-14 用于访问设备附加存储器的系统、设备和方法
US17/380,805 US11586543B2 (en) 2020-10-15 2021-07-20 System, device and method for accessing device-attached memory
EP21187164.5A EP3985520A1 (en) 2020-10-15 2021-07-22 System, device and method for accessing device-attached memory
US18/166,244 US11983115B2 (en) 2020-10-15 2023-02-08 System, device and method for accessing device-attached memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200133743A KR20220049978A (ko) 2020-10-15 2020-10-15 장치-부착 메모리에 대한 액세스를 위한 시스템, 장치 및 방법

Publications (1)

Publication Number Publication Date
KR20220049978A true KR20220049978A (ko) 2022-04-22

Family

ID=77021252

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200133743A KR20220049978A (ko) 2020-10-15 2020-10-15 장치-부착 메모리에 대한 액세스를 위한 시스템, 장치 및 방법

Country Status (4)

Country Link
US (2) US11586543B2 (ko)
EP (1) EP3985520A1 (ko)
KR (1) KR20220049978A (ko)
CN (1) CN114372011A (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20240020027A1 (en) * 2022-07-14 2024-01-18 Samsung Electronics Co., Ltd. Systems and methods for managing bias mode switching

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7058767B2 (en) 2003-04-28 2006-06-06 International Business Machines Corporation Adaptive memory access speculation
US8281079B2 (en) 2004-01-13 2012-10-02 Hewlett-Packard Development Company, L.P. Multi-processor system receiving input from a pre-fetch buffer
US7490184B2 (en) 2005-06-08 2009-02-10 International Business Machines Corporation Systems and methods for data intervention for out-of-order castouts
JP2007241612A (ja) 2006-03-08 2007-09-20 Matsushita Electric Ind Co Ltd マルチマスタシステム
US7814279B2 (en) 2006-03-23 2010-10-12 International Business Machines Corporation Low-cost cache coherency for accelerators
US7600078B1 (en) 2006-03-29 2009-10-06 Intel Corporation Speculatively performing read transactions
US20080320233A1 (en) * 2007-06-22 2008-12-25 Mips Technologies Inc. Reduced Handling of Writeback Data
US20090106498A1 (en) 2007-10-23 2009-04-23 Kevin Michael Lepak Coherent dram prefetcher
KR102276912B1 (ko) 2017-06-07 2021-07-13 삼성전자주식회사 스토리지 시스템 및 이의 동작 방법
US11263143B2 (en) 2017-09-29 2022-03-01 Intel Corporation Coherent accelerator fabric controller
US10606785B2 (en) 2018-05-04 2020-03-31 Intel Corporation Flex bus protocol negotiation and enabling sequence
US11036650B2 (en) 2019-09-19 2021-06-15 Intel Corporation System, apparatus and method for processing remote direct memory access operations with a device-attached memory
US11416397B2 (en) * 2019-10-14 2022-08-16 Intel Corporation Global persistent flush

Also Published As

Publication number Publication date
US20230185717A1 (en) 2023-06-15
US11586543B2 (en) 2023-02-21
CN114372011A (zh) 2022-04-19
US20220121574A1 (en) 2022-04-21
EP3985520A1 (en) 2022-04-20
US11983115B2 (en) 2024-05-14

Similar Documents

Publication Publication Date Title
US11741034B2 (en) Memory device including direct memory access engine, system including the memory device, and method of operating the memory device
US11645011B2 (en) Storage controller, computational storage device, and operational method of computational storage device
EP4123649A1 (en) Memory module, system including the same, and operation method of memory module
US11983115B2 (en) System, device and method for accessing device-attached memory
US11556279B2 (en) System device, and method for memory interface including reconfigurable channel
US20230325277A1 (en) Memory controller performing selective and parallel error correction, system including the same and operating method of memory device
US11962675B2 (en) Interface circuit for providing extension packet and processor including the same
US20230229357A1 (en) Storage controller, computational storage device, and operational method of computational storage device
US20220147470A1 (en) System, device, and method for accessing memory based on multi-protocol
US11809341B2 (en) System, device and method for indirect addressing
KR20220060155A (ko) 스토리지 서버, 상기 스토리지의 서버 구동 방법 및 상기 스토리지 서버를 포함하는 데이터 센터
US11853215B2 (en) Memory controller, system including the same, and operating method of memory device for increasing a cache hit and reducing read latency using an integrated commad
US20220147458A1 (en) Semiconductor device
US20230084539A1 (en) Computational storage device and storage system including the computational storage device
KR20230169885A (ko) 영구 메모리 장치 및 컴퓨팅 시스템
KR20220099347A (ko) 메모리 장치를 제어하는 가속기, 이를 포함하는 컴퓨팅 시스템 및 가속기의 동작방법
KR20230046362A (ko) 메모리 모듈의 동작 방법, 메모리 컨트롤러의 동작 방법, 및 메모리 시스템의 동작 방법