KR20220049396A - 간접 어드레싱을 위한 시스템, 장치 및 방법 - Google Patents
간접 어드레싱을 위한 시스템, 장치 및 방법 Download PDFInfo
- Publication number
- KR20220049396A KR20220049396A KR1020200132978A KR20200132978A KR20220049396A KR 20220049396 A KR20220049396 A KR 20220049396A KR 1020200132978 A KR1020200132978 A KR 1020200132978A KR 20200132978 A KR20200132978 A KR 20200132978A KR 20220049396 A KR20220049396 A KR 20220049396A
- Authority
- KR
- South Korea
- Prior art keywords
- memory
- address
- data
- read request
- read
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
- G06F13/1626—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
- G06F13/1631—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests through address comparison
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1051—Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements for selecting an address in a digital store
- G11C8/18—Address timing or clocking circuits; Address control signal generation or management, e.g. for row address strobe [RAS] or column address strobe [CAS] signals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0284—Multiple user address space allocation, e.g. using different base addresses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/30—Providing cache or TLB in specific location of a processing system
- G06F2212/3035—In peripheral device, e.g. printer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6028—Prefetching based on hints or prefetch instructions
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)
- Microelectronics & Electronic Packaging (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Executing Machine-Instructions (AREA)
Abstract
버스를 통해 호스트 프로세서와 연결된 장치에 의해서 수행되는 방법은, 메모리에 제1 어드레스를 포함하는 제1 독출 요청을 제공하는 단계, 메모리로부터 제1 어드레스에 대응하는 메모리의 제1 영역에 저장된 제2 어드레스를 수신하는 단계, 메모리에 제2 어드레스를 포함하는 제2 독출 요청을 제공하는 단계, 및 메모리로부터 제2 어드레스에 대응하는 메모리의 제2 영역에 저장된 제1 데이터를 수신하는 단계를 포함할 수 있고, 제1 독출 요청은, 제1 어드레스가 제1 데이터의 간접 어드레스임을 나타내는 정보를 더 포함할 수 있다.
Description
본 개시의 기술적 사상은 메모리 액세스에 관한 것으로서, 자세하게는 간접 어드레싱을 위한 시스템, 장치 및 방법에 관한 것이다.
데이터를 처리하도록 구성된 기기(apparatus)는 메모리에 액세스함으로써 다양한 동작을 수행할 수 있다. 예를 들면, 기기는 메모리로부터 독출한 데이터를 처리할 수도 있고, 처리된 데이터를 메모리에 기입할 수도 있다. 시스템에 요구되는 성능 및 기능들에 기인하여, 높은 대역폭 및 낮은 레이턴시를 제공하는 링크를 통해서 상호 통신 다양한 기기들이 시스템에 포함될 수 있다. 시스템에 포함된 메모리는 2이상의 기기들에 의해서 공유될 수 있고 액세스될 수 있다. 이에 따라, 시스템의 성능은, 기기들 각각의 동작 속도뿐만 아니라, 기기들 사이 통신 효율성 및 메모리 액세스에 소요되는 시간에 의존할 수 있다.
본 개시의 기술적 사상은, 메모리 액세스의 감소된 레이턴시를 위한 시스템, 장치 및 방법을 제공한다.
상기와 같은 목적을 달성하기 위하여, 본 개시의 기술적 사상의 일측면에 따라, 버스를 통해 호스트 프로세서와 연결된 장치에 의해서 액세스되는 메모리를 제어하는 메모리 컨트롤러는, 장치와 통신하는 제1 인터페이스 회로, 메모리와 통신하는 제2 인터페이스 회로, 및 제1 인터페이스 회로를 통해서 수신된 제1 독출 요청에 포함된 정보에 기초하여 제1 독출 요청에 포함된 제1 어드레스가 데이터의 간접 어드레스임을 식별하고, 제2 인터페이스 회로를 통해서 제1 어드레스에 대응하는 메모리의 제1 영역으로부터 제2 어드레스를 독출하고, 제2 인터페이스 회로를 통해서 제2 어드레스에 대응하는 메모리의 제2 영역으로부터 데이터를 프리페치(prefetch)하는 독출 회로를 포함할 수 있다.
본 개시의 기술적 사상의 일측면에 따른 시스템은, 명령어들을 실행하는 적어도 하나의 코어를 포함하는 호스트 프로세서, 호스트 프로세서와 버스를 통해서 연결되고, 가속기 회로 및 메모리 컨트롤러를 포함하는 장치, 및 메모리 컨트롤러를 통해서 가속기 회로에 의해서 액세스되도록 구성된 메모리를 포함할 수 있고, 가속기 회로는, 메모리에 저장된 데이터의 간접 어드레스를 포함하는 제1 독출 요청을 메모리 컨트롤러에 제공할 수 있고, 메모리 컨트롤러는, 제1 독출 요청에 포함된 정보에 기초하여 간접 어드레스를 식별하고, 간접 어드레스에 대응하는 메모리의 영역으로부터 데이터의 직접 어드레스를 독출하고, 직접 어드레스에 대응하는 메모리의 영역으로부터 데이터를 프리페치(prefetch)할 수 있다.
본 개시의 기술적 사상의 일측면에 따라 버스를 통해 호스트 프로세서와 연결된 장치에 의해서 수행되는 방법은, 메모리에 제1 어드레스를 포함하는 제1 독출 요청을 제공하는 단계, 메모리로부터 제1 어드레스에 대응하는 메모리의 제1 영역에 저장된 제2 어드레스를 수신하는 단계, 메모리에 제2 어드레스를 포함하는 제2 독출 요청을 제공하는 단계, 및 메모리로부터 제2 어드레스에 대응하는 메모리의 제2 영역에 저장된 제1 데이터를 수신하는 단계를 포함할 수 있고, 제1 독출 요청은, 제1 어드레스가 제1 데이터의 간접 어드레스임을 나타내는 정보를 더 포함할 수 있다.
본 개시의 예시적 실시예에 따른 시스템, 장치 및 방법에 의하면, 간접 어드레싱에 기초한 메모리 액세스의 레이턴시가 감소할 수 있다.
또한, 본 개시의 예시적 실시예에 따른 시스템, 장치 및 방법에 의하면, 메모리에 액세스하는 다양한 기기들에 감소된 레이턴시가 제공될 수 있고, 이에 따라 시스템의 성능이 향상될 수 있다.
또한, 본 개시의 예시적 실시예에 따른 시스템, 장치 및 방법에 의하면, 기기간 통신을 위한 프로토콜은 간접 어드레싱을 지원할 수 있고, 이에 따라 기기들은 간접 어드레싱을 활용한 동작들을 효율적으로 수행할 수 있다.
본 개시의 예시적 실시예들에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 아니하며, 언급되지 아니한 다른 효과들은 이하의 기재로부터 본 개시의 예시적 실시예들이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 도출되고 이해될 수 있다. 즉, 본 개시의 예시적 실시예들을 실시함에 따른 의도하지 아니한 효과들 역시 본 개시의 예시적 실시예들로부터 당해 기술분야의 통상의 지식을 가진 자에 의해 도출될 수 있다.
도 1은 본 개시의 예시적 실시예에 따른 시스템을 나타내는 블록도이다.
도 2는 본 개시의 예시적 실시예에 따른 간접 어드레싱을 위한 방법을 나타내는 메시지도이다.
도 3은 본 개시의 예시적 실시예에 따른 시스템을 나타내는 블록도이다.
도 4는 본 개시의 예시적 실시예에 따라 다중-프로토콜의 트랜잭션에 포함되는 메시지를 나타낸다.
도 5는 본 개시의 예시적 실시예에 따른 시스템을 나타내는 블록도이다.
도 6은 본 개시의 예시적 실시예에 따른 간접 어드레싱을 위한 방법을 나타내는 순서도이다.
도 7은 본 개시의 예시적 실시예에 따른 버퍼를 나타내는 블록도이다.
도 8은 본 개시의 예시적 실시예에 따른 메모리 컨트롤러 및 메모리를 나타낸다.
도 9는 본 개시의 예시적 실시예에 따른 간접 어드레싱을 위한 방법을 나타내는 메시지도이다.
도 10은 본 개시의 예시적 실시예에 따라 간접 어드레싱을 위한 방법을 나타내는 순서도이다.
도 11a 및 도 11b는 본 개시의 예시적 실시예에 따른 시스템의 예시들을 나타내는 도면들이다.
도 12는 본 개시의 예시적 실시예에 따른 시스템을 포함하는 데이터 센터를 나타내는 블록도이다.
도 2는 본 개시의 예시적 실시예에 따른 간접 어드레싱을 위한 방법을 나타내는 메시지도이다.
도 3은 본 개시의 예시적 실시예에 따른 시스템을 나타내는 블록도이다.
도 4는 본 개시의 예시적 실시예에 따라 다중-프로토콜의 트랜잭션에 포함되는 메시지를 나타낸다.
도 5는 본 개시의 예시적 실시예에 따른 시스템을 나타내는 블록도이다.
도 6은 본 개시의 예시적 실시예에 따른 간접 어드레싱을 위한 방법을 나타내는 순서도이다.
도 7은 본 개시의 예시적 실시예에 따른 버퍼를 나타내는 블록도이다.
도 8은 본 개시의 예시적 실시예에 따른 메모리 컨트롤러 및 메모리를 나타낸다.
도 9는 본 개시의 예시적 실시예에 따른 간접 어드레싱을 위한 방법을 나타내는 메시지도이다.
도 10은 본 개시의 예시적 실시예에 따라 간접 어드레싱을 위한 방법을 나타내는 순서도이다.
도 11a 및 도 11b는 본 개시의 예시적 실시예에 따른 시스템의 예시들을 나타내는 도면들이다.
도 12는 본 개시의 예시적 실시예에 따른 시스템을 포함하는 데이터 센터를 나타내는 블록도이다.
도 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)를 포함할 수 있다. 일부 실시예들에서, 장치-부착 메모리(130)는 시스템(100)에서 생략될 수도 있다.
도 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에 도시된 바와 같이 장치-부착 메모리(130)가 시스템(100)에 포함되는 경우, 가속기 회로(114)는 장치-부착 메모리(130)와 통신할 수 있고, 링크(150)에 독립적인 프로토콜, 즉 장치-고유의(device-specific) 프로토콜에 기초하여 장치-부착 메모리(130)와 통신할 수 있다. 또한, 도 1에 도시된 바와 같이, 가속기 회로(114)는 다수의 프로토콜들을 사용하여 인터페이스 회로(113)를 통해서 호스트 프로세서(120)와 통신할 수 있다.
인터페이스 회로(113)는, 가속기 회로(114) 및 호스트 프로세서(120) 사이 통신을 위한 메시지 및/또는 데이터에 기초하여 다수의 프로토콜들 중 하나의 프로토콜을 판정할 수 있다. 인터페이스 회로(113)는, 다중-프로토콜 멀티플렉서(112)에 포함된 적어도 하나의 프로토콜 큐(queue)에 연결될 수 있고, 적어도 하나의 프로토콜 큐를 통해서 호스트 프로세서(120)와 메시지 및/또는 데이터를 주고 받을 수 있다. 일부 실시예들에서, 인터페이스 회로(113) 및 다중-프로토콜 멀티플렉서(112)는 하나의 구성요소로 통합될 수도 있다. 일부 실시예들에서, 다중-프로토콜 멀티플렉서(112)는 링크(150)에 의해서 지원되는 다수의 프로토콜들 각각에 대응하는 다수의 프로토콜 큐들을 포함할 수 있다. 또한, 일부 실시예들에서, 다중-프로토콜 멀티플렉서(112)는 상이한 프로토콜들에 의한 통신들 사이를 중재(arbitration)할 수 있고, 선택된 통신들을 물리 계층(111)에 제공할 수 있다. 일부 실시예들에서, 물리 계층(111)은, 호스트 프로세서(120)의 물리 계층(121)과 단일 상호연결, 버스, 트레이스(trace) 등을 통해서 연결될 수 있다.
호스트 프로세서(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)에 제공할 수 있다.
일부 실시예들에서, 호스트 프로세서(120)는, 운영 체제(operating system; OS) 및/또는 운영 체제 상에서 실행되는 어플리케이션들을 포함하는 계층적인 소프트웨어를 실행할 수 있고, 가상 메모리(virtual memory)에 기초하여 호스트 메모리(140) 및/또는 장치-부착 메모리(130)에 액세스할 수 있다. 다른 한편으로, 가속기 회로(114)는 장치-부착 메모리(130)에 액세스하기 위한 메모리 컨트롤러에 어드레스를 제공할 수 있고, 호스트 메모리(140) 또는 링크(150)에 연결된 다른 메모리에 액세스하기 위한 어드레스를 포함하는 메시지를 링크(150)를 통해서 제공할 수 있다. 이에 따라, 가속기 회로(114)는 메모리 액세스에 사용하는 어드레싱 모드(addressing mode)를 호스트 프로세서(120)보다 용이하게 식별할 수 있다. 어드레싱 모드는, 데이터가 저장된 메모리의 어드레스를 메모리에 직접 제공하는 직접 어드레싱(direct addressing) 및 제2 어드레스가 저장된 제1 어드레스를 메모리에 제공함으로써 데이터가 저장된 제2 어드레스를 획득한 후 제2 어드레스를 메모리에 제공하는 간접 어드레싱(indirect addressing)을 포함할 수 있다. 본 명세에서, 직접 어드레싱에서 메모리에 제공되는 어드레스 또는 간접 어드레싱에서 메모리에 제공되는 제2 어드레스는 직접 어드레스(direct address)로 지칭될 수 있고, 간접 어드레싱에서 메모리에 제공되는 제1 어드레스는 간접 어드레스(indirect address)로 지칭될 수 있다.
도면들을 참조하여 후술되는 바와 같이, 가속기 회로(114)의 간접 어드레싱에 기초한 메모리 액세스의 레이턴시는 데이터의 프리페칭(prefetching)에 의해서 현저하게 감소할 수 있다. 또한, 시스템(100)에 링크(150)가 지원하는 프로토콜(예컨대, 일관적 프로토콜 및 메모리 프로토콜)은 간접 어드레싱을 지원할 수 있고, 이에 따라 장치(110) 및 시스템(100)에 포함된 다른 장치들은 간접 어드레싱을 활용한 동작들을 효율적으로 수행할 수 있다. 결과적으로, 메모리 엑세스에 대한 감소된 레이턴시 및 장치들의 증가된 효율성에 기인하여, 시스템(100)의 성능이 향상될 수 있다.
도 2는 본 개시의 예시적 실시예에 따른 간접 어드레싱을 위한 방법을 나타내는 메시지도이다. 구체적으로, 도 2는 가속기 회로(210), 메모리 컨트롤러(220) 및 메모리(230) 사이에서 송수신되는 메시지 및/또는 데이터를 시간의 흐름에 따라 나타낸다. 도 2에 도시된 바와 같이, 메모리(230)는, 제1 어드레스(ADR1)에 대응하는 영역에서 제2 어드레스(ADR2)를 저장하고 제2 어드레스(ADR2)에 대응하는 영역에서 데이터(DAT)를 저장하고 있는 것으로 가정된다.
일부 실시예들에서, 도 2의 가속기 회로(210)는 도 1의 가속기 회로(114)에 대응할 수 있고, 메모리 컨트롤러(220)는 메모리(230)에 대한 액세스를 제공할 수 있다. 일부 실시예들에서, 메모리(230)는 도 1의 장치-부착 메모리(130)에 포함될 수 있고, 이 경우 메모리 컨트롤러(220)는 장치(110)에 포함되거나 장치-부착 메모리(130)에 포함될 수 있으며, 가속기 회로(210) 및 메모리 컨트롤러(220)는 장치-고유의 프로토콜에 기초하여 상호 통신할 수 있다. 또한, 일부 실시예들에서, 메모리(230)는 가속기 회로(114)가 링크(150)를 통해서 액세스가능한 원격 메모리(예컨대, 도 1의 140 및 도 11b의 40)에 포함될 수 있고, 이 경우 메모리 컨트롤러(220)는 해당 원격 메모리에 연결된 기기 또는 해당 원격 메모리포함될 수 있고, 가속기 회로(210) 및 메모리 컨트롤러(220)는 링크(150)가 지원하는 프로토콜, 예컨대 일관적 프로토콜 및/또는 메모리 프로토콜에 기초하여 상호 통신할 수 있다.
도 2를 참조하면, 단계 S21에서 가속기 회로(210)는 제1 독출 요청(REQ1)을 메모리 컨트롤러(220)에 제공할 수 있다. 도 2에 도시된 바와 같이, 제1 독출 요청(REQ1)은 제1 어드레스(ADR1)를 포함할 수 있고, 제1 어드레스(ADR1)가 간접 어드레스임을 나타내는 정보(IND)를 포함할 수 있다. 예를 들면, 가속기 회로(210)는 간접 어드레싱에 기초하여 데이터(DAT)를 메모리(230)에 저장한 후, 메모리(230)에 저장된 데이터(DAT)를 획득하기 위하여 제1 어드레스(ADR1) 및 제1 어드레스(ADR1)가 간접 어드레스임을 나타내는 정보(IND)를 포함하는 제1 독출 요청(REQ1)을 메모리 컨트롤러(220)에 제공할 수 있다.
단계 S22에서, 메모리 컨트롤러(220)는 제1 독출 커맨드(CMD1) 및 제1 어드레스(ADR1)를 메모리(230)에 제공할 수 있다. 예를 들면, 메모리 컨트롤러(220)는 제1 독출 요청(REQ1)으로부터 제1 어드레스(ADR1)를 추출할 수 있고, 제1 독출 커맨드(CMD1)를 제1 어드레스(ADR1)와 함께 메모리(230)에 제공할 수 있다.
단계 S23에서, 메모리(230)는 제2 어드레스(ADR2)를 메모리 컨트롤러(220)에 제공할 수 있다. 예를 들면, 메모리(230)는 제1 독출 커맨드(CMD1)에 응답하여, 제1 어드레스(ADR1)를 식별할 수 있고, 제1 어드레스(ADR1)에 대응하는 영역에 저장된 제2 어드레스(ADR2)를 메모리 컨트롤러(220)에 제공할 수 있다.
단계 S24에서, 메모리 컨트롤러(220)는 제1 독출 요청(REQ1)에 대응하는 제1 응답(RES1)을 가속기 회로(210)에 제공할 수 있다. 예를 들면, 도 2에 도시된 바와 같이, 메모리 컨트롤러(220)는 단계 S23에서 메모리(230)로부터 수신된 제2 어드레스(ADR2)를 포함하는 제1 응답(RES1)을 가속기 회로(210)에 제공할 수 있다.
단계 S25에서, 메모리 컨트롤러(220)는 제2 독출 커맨드(CMD2) 및 제2 어드레스(ADR2)를 메모리(230)에 제공할 수 있다. 예를 들면, 메모리 컨트롤러(220)는 단계 S21에서 수신된 제1 독출 요청(REQ1)에 포함된 정보(IND)에 기초하여, 제1 독출 요청(REQ1)에 포함된 제1 어드레스(ADR1)가 간접 어드레스임을 식별할 수 있다. 도 2에 도시된 바와 같이, 메모리 컨트롤러(220)는 가속기 회로(210)로부터 별도의 독출 요청이 발행(issue)되지 아니하더라도 단계 S23에서 메모리(230)로부터 수신된 제2 어드레스(ADR2)와 함께, 제2 독출 커맨드(CMD2)를 메모리(230)에 제공할 수 있다. 일부 실시예들에서, 도 2에 도시된 바와 상이하게, 단계 S24 및 단계 S25는 병렬적으로 수행될 수도 있고, 단계 S25 및 단계 S24가 순차적으로 수행될 수도 있다.
단계 S26에서, 가속기 회로(210)는 제2 독출 요청(REQ2)을 메모리 컨트롤러(220)에 제공할 수 있다. 도 2에 도시된 바와 같이, 제2 독출 요청(REQ2)은 제2 어드레스(ADR2)를 포함할 수 있고, 제2 어드레스(ADR2)가 직접 어드레스임을 나타내는 정보(DIR)를 포함할 수 있다. 예를 들면, 가속기 회로(210)는 단계 S24에서 메모리 컨트롤러(220)로부터 수신한 제1 응답(RES1)으로부터 제2 어드레스(ADR2)를 추출할 수 있고, 제2 어드레스(ADR2) 및 제2 어드레스(ADR2)가 직접 어드레스임을 나타내는 정보(DIR)를 포함하는 제2 독출 요청(REQ2)을 메모리 컨트롤러(220)에 제공할 수 있다.
단계 S27에서, 메모리(230)는 데이터(DAT)를 메모리 컨트롤러(220)에 제공할 수 있다. 예를 들면, 메모리(230)는 제2 독출 커맨드(CMD2)에 응답하여, 제2 어드레스(ADR2)를 식별할 수 있고, 제2 어드레스(ADR2)에 대응하는 영역에 저장된 데이터(DAT)를 메모리 컨트롤러(220)에 제공할 수 있다. 일부 실시예들에서, 도 2에 도시된 바와 상이하게, 단계 S26 및 단계 S27은 병렬적으로 수행될 수도 있고, 단계 S27이 단계 S26이 순차적으로 수행될 수도 있다.
단계 S28에서, 메모리 컨트롤러(220)는 제2 독출 요청(REQ2)에 대응하는 제2 응답(RES2)을 가속기 회로(210)에 제공할 수 있다. 예를 들면, 도 2에 도시된 바와 같이, 메모리 컨트롤러(220)는, 단계 S27에서 메모리(230)로부터 수신된 데이터(DAT)를 포함하는 제2 응답(RES2)을 가속기 회로(210)에 제공할 수 있다. 전술된 바와 같이, 메모리 컨트롤러(220)는 제2 독출 요청(REQ2)과 무관하게 단계 S25에서 제2 독출 커맨드(CMD2)를 메모리(230)에 제공할 수 있고, 메모리(230)로부터 데이터(DAT)를 조기에 수신할 수 있으며, 이에 따라 가속기 회로(210)에 제2 응답(RES2)을 조기에 제공할 수 있다. 본 명세서에서, 메모리 컨트롤러(220)가 가속기 회로(210)로부터 제공된 간접 어드레스에 기초하여 메모리(230)로부터 데이터(DAT)를 조기에 수신하는 동작은 데이터(DAT)의 프리페치(prefetch)로 지칭될 수 있다.
단계 S21로부터 단계 S24까지 소요된 시간, 즉 가속기 회로(210)가 제1 독출 요청(REQ1)을 발행한 후 제1 응답(RES1)을 수신하는데 소요된 시간(T11)은, 메모리 컨트롤러(220)가 메모리(230)에 제1 독출 커맨드(CMD1)를 제공하고 메모리(230)로부터 제2 어드레스(ADR2)를 수신하는데 소요된 시간을 포함할 수 있다. 다른 한편으로, 단계 S26으로부터 단계 S28까지 소요된 시간, 즉 가속기 회로(210)가 제2 독출 요청(REQ2)을 발행한 후 제2 응답(RES2)을 수신하는데 소요된 시간(T12)은, 메모리 컨트롤러(220)에 의한 데이터(DAT)의 프리페칭에 기인하여 단계 S21로부터 단계 S24까지 소요된 시간(T11)보다 짧을 수 있다(T12<T11). 이에 따라, 가속기 회로(210)가 간접 어드레싱에 기초하여 데이터(DAT)를 획득하는데 소요된 총 시간, 즉 가속기 회로(210)가 제1 독출 요청(REQ1)을 발행한 후 제2 응답(RES2)을 수신하는데 소요된 시간(T10)은, 단축된 시간(T12)에 기인하여 단축될 수 있고, 결과적으로 메모리(230)에 대한 액세스 레이턴시가 감소할 수 있다.
도 3은 본 개시의 예시적 실시예에 따른 시스템(300)을 나타내는 블록도이다. 구체적으로, 도 3의 블록도는 장치(310) 및 호스트 프로세서(320) 사이 통신을 위한 다중-프로토콜의 예시를 나타낸다. 도 1을 참조하여 전술된 바와 같이, 장치(310) 및 호스트 프로세서(320)는 다수의 프로토콜들에 기초하여 상호 통신할 수 있다. 도 3에 도시된 바와 같이, 시스템(300)은 장치(310), 호스트 프로세서(320), 장치 메모리(330) 및 호스트 메모리(340)를 포함할 수 있다. 일부 실시예들에서, 장치(310)는 CXL 사양에서 정의된 유형 2 CXL 장치(type 2 CXL device)에 대응할 수 있고, 장치 메모리(330)는 도 1의 장치-부착 메모리(130)에 대응할 수 있다.
도 3에 도시된 바와 같이, 다수의 프로토콜들은 메모리 프로토콜(MEM), 일관적 프로토콜(또는 캐시 프로토콜)(CACHE) 및 비일관적 프로토콜(IO)을 포함할 수 있다. 일부 실시예들에서, 메모리 프로토콜(MEM), 일관적 프로토콜(CACHE) 및 비일관적 프로토콜(IO)은 CXL.mem, CXL.cache 및 CXL.io에 각각 대응할 수 있다. 메모리 프로토콜(MEM)은 지배자(master)와 종속자(subordinate) 사이 트랜잭션들(transactions)을 정의할 수 있다. 예를 들면, 메모리 프로토콜(MEM)은 지배자로부터 종속자를 향하는 트랜잭션 및 종속자로부터 지배자를 향하는 트랜잭션을 정의할 수 있다. 일관적 프로토콜(CACHE)은 장치(310) 및 호스트 프로세서(320) 사이 인터랙션들(interactions)을 정의할 수 있다. 예를 들면, 일관적 프로토콜(CACHE)의 인터페이스는 요청, 응답 및 데이터를 포함하는 3개의 채널들을 포함할 수 있다. 비일관적 프로토콜(IO)은 입출력 장치들을 위한 비일관적 로드/스토어 인터페이스를 제공할 수 있다.
장치(310)는 장치 메모리(330)와 통신할 수 있고, 장치 메모리(330)에 액세스하기 위한 메모리 컨트롤러(312)를 포함할 수 있다. 일부 실시예들에서, 도 3에 도시된 바와 상이하게, 메모리 컨트롤러(312)는 장치(310)의 외부에 있을 수 있고, 장치 메모리(330)와 통합될 수도 있다. 또한, 호스트 프로세서(320)는 호스트 메모리(340)와 통신할 수 있고, 호스트 메모리(340)에 액세스하기 위한 메모리 컨트롤러(322)를 포함할 수 있다. 일부 실시예들에서, 도 3에 도시된 바와 상이하게, 메모리 컨트롤러(322)는 호스트 프로세서(3200의 외부에 있을 수 있고, 호스트 메모리(340)와 통합될 수 있다.
장치(310)의 메모리 컨트롤러(312) 및 호스트 프로세서(320)의 메모리 컨트롤러(322)는, 도 2의 메모리 컨트롤러(220)에 대응할 수 있다. 예를 들면, 장치(310)의 메모리 컨트롤러(312)는 장치 메모리(330)에 대한 독출 요청을 수신할 수 있고, 독출 요청에 포함된 정보에 기초하여 독출 요청에 포함된 어드레스가 간접 어드레스임을 식별할 수 있다. 일부 실시예들에서, 메모리 컨트롤러(312)는, 장치(310)에 포함된 가속기 회로로부터 독출 요청을 수신할 수도 있고, 다수의 프로토콜들을 통해서 호스트 프로세서(320) 또는 다른 장치로부터 독출 요청을 수신할 수도 있다. 또한, 호스트 프로세서(320)의 메모리 컨트롤러(322)는 호스트 메모리(340)에 대한 독출 요청을 수신할 수 있고, 독출 요청에 포함된 정보에 기초하여 독출 요청에 포함된 어드레스가 간접 어드레스임을 식별할 수 있다. 일부 실시예들에서, 메모리 컨트롤러(322)는, 다수의 프로토콜을 통해서 장치(310)로부터 독출 요청을 수신할 수 있다. 이에 따라, 다수의 프로토콜들은, 메모리 컨트롤러들(312, 322)이 간접 어드레스를 식별하도록, 어드레스 모드를 나타내는 정보를 포함하는 메시지(또는 독출 요청)를 지원할 수 있다. 이하에서, 장치(310)에 포함된 메모리 컨트롤러(312) 및 이와 통신하는 장치 메모리(330)가 주로 설명될 것이나, 본 개시의 예시적 실시예들이 이에 제한되지 아니하는 점이 유의된다.
도 4는 본 개시의 예시적 실시예에 따라 다중-프로토콜의 트랜잭션에 포함되는 메시지(400)를 나타낸다. 일부 실시예들에서, 도 4의 메시지(400)는, 도 3의 메모리 프로토콜(MEM) 및/또는 일관적 프로토콜(CACHE)에 의해서 정의될 수 있다. 도 3을 참조하여 전술된 바와 같이, 메모리 컨트롤러가 독출 요청에 포함되는 간접 어드레스를 식별하기 위하여, 다중-프로토콜은, 메시지에 포함된 어드레스가 간접 어드레스(또는 직접 어드레스)임을 나타내는 정보를 포함하는 메시지를 지원할 수 있다.
도 4를 참조하면, 메시지(400)는 제1 필드(F1), 제2 필드(F2) 및 제3 필드(F3)를 포함할 수 있고, 추가적인 필드를 더 포함할 수 있다. 메시지(400)에 포함된 필드들 각각은 적어도 하나의 비트를 포함할 수 있고, 적어도 하나의 비트의 값에 대응하는 정보가 프로토콜에 의해서 정의될 수 있다. 예를 들면, 제1 필드(F1)는 유효(valid) 신호로서, 메시지(400)가 유효한 메시지임을 나타내는 1 비트를 포함할 수 있다. 제2 필드(F2)는 동작 코드로서, 메시지(400)에 대응하는 동작을 정의하는 복수의 비트들을 포함할 수 있다. 예를 들면, 제2 필드(F2)의 동작 코드는 메모리에 대한 독출 또는 기입을 나타낼 수 있다. 제2 필드(F2)의 동작 코드가 메모리에 대한 독출 동작에 대응하는 경우 메시지(400)는 독출 요청으로 지칭될 수 있는 한편, 제2 필드(F2)의 동작 코드가 메모리에 대한 기입 동작에 대응하는 경우 메시지(400)는 기입 요청으로 지칭될 수 있다. 제3 필드(F3)는 어드레스로서, 제2 필드(F2)의 동작 코드와 관련된 어드레스를 나타내는 복수의 비트들을 포함할 수 있다. 예를 들면, 제2 필드(F2)의 동작 코드가 독출 동작에 대응하는 경우, 메시지(400)는 제3 필드(F3)의 어드레스에 대응하는 영역으로부터 데이터의 독출을 요청하는 독출 요청일 수 있다. 또한, 제2 필드(F2)의 동작 코드가 기입 동작에 대응하는 경우, 메시지(400)는 제3 필드(F3)의 어드레스에 대응하는 영역에 데이터의 기입을 요청하는 기입 요청일 수 있다.
메시지(400)는, 제3 필드(F3)의 어드레스가 간접 어드레스(또는 직접 어드레스)임을 나타내는 정보를 다양한 방식으로 포함할 수 있다. 일부 실시예들에서, 프로토콜은, 간접 어드레스를 포함하는 독출 요청에 대응하는 제1 동작 코드 및 직접 어드레스를 포함하는 독출 요청에 대응하는 제2 동작 코드를 제2 필드(F2)에서 각각 정의할 수 있다. 예를 들면, 제2 필드(F2)가 제1 동작 코드를 포함하는 경우, 제3 필드(F3)의 어드레스는 간접 어드레스일 수 있다. 일부 실시예들에서, 프로토콜은, 제3 필드(F3)의 어드레스가 간접 어드레스인지 또는 직접 어드레스인지를 나타내는 1 비트를 포함하는 추가적인 필드를 메시지(400)에서 정의할 수도 있다.
도 5는 본 개시의 예시적 실시예에 따른 시스템(500)을 나타내는 블록도이다. 구체적으로, 도 5의 블록도는 메모리 컨트롤러(540)의 예시적인 구조를 가속기 회로(520) 및 메모리(560)와 함께 나타낸다. 도 5를 참조하면, 메모리 컨트롤러(540)는 제1 인터페이스 회로(541), 제2 인터페이스 회로(542), 독출 회로(543), 버퍼(545) 및 기입 회로(544)를 포함할 수 있다.
제1 인터페이스 회로(541)는 가속기 회로(520)와 통신할 수 있다. 일부 실시예들에서, 메모리 컨트롤러(540)가 메모리(560)와 함께 메모리 장치(예컨대, 도 1의 130, 도 3의 330)에 포함되는 경우, 제1 인터페이스 회로(541)는 가속기 회로(520)를 포함하는 장치와 통신하는 것으로 지칭될 수도 있다. 도 2를 참조하여 전술된 바와 같이, 제1 인터페이스 회로(541)는 가속기 회로(520)로부터 요청을 수신할 수 있고, 가속기 회로(520)에 응답을 제공할 수 있다. 일부 실시예들에서, 독출 요청은 어드레스를 포함할 수 있고, 기입 요청은 어드레스 및 데이터를 포함할 수 있다.
제2 인터페이스 회로(542)는 메모리(560)와 통신할 수 있다. 메모리(560)는 정보를 저장할 수 있는 임의의 저장 매체를 지칭할 수 있다. 예를 들면, 메모리(560)는 반도체 공정에 의해서 제조될 수 있고, SRAM(static random access memory), DRAM(dynamic random access memory) 등과 같은 휘발성(volatile) 메모리를 포함할 수도 있고, 플래시 메모리, RRAM(resistive random access memory) 등과 같은 비휘발성(non-volatile) 메모리를 포함할 수도 있다. 도 2를 참조하여 전술된 바와 같이, 제2 인터페이스 회로(542)는 메모리(560)에 커맨드 및 어드레스를 제공할 수 있고, 메모리(560)로부터 데이터를 수신할 수 있다. 일부 실시예들에서, 독출 커맨드는 어드레스와 함께 메모리(560)에 제공될 수 있고, 기입 커맨드는 어드레스 및 데이터와 함께 메모리(560)에 제공될 수 있다.
독출 회로(543)는 메모리(560)로부터 데이터를 독출하는 동작을 제어할 수 있다. 예를 들면, 독출 회로(543)는, 제1 인터페이스 회로(541)를 통해서 가속기 회로(520)로부터 독출 요청을 수신할 수 있고, 독출 요청에 포함된 어드레스에 기초하여 제2 인터페이스 회로(542)를 통해서 메모리(560)로부터 데이터를 독출할 수 있다. 또한, 기입 회로(544)는 메모리(560)에 데이터를 기입하는 동작을 제어할 수 있다. 예를 들면, 기입 회로(544)는, 제1 인터페이스 회로(541)를 통해서 가속기 회로(520)로부터 기입 요청을 수신할 수 있고, 기입 요청에 포함된 어드레스에 기초하여 제2 인터페이스 회로(542)를 통해서 메모리(560)에 데이터를 기입할 수 있다. 버퍼(545)는, 독출 회로(543)에 의해서 메모리(560)로부터 독출된 데이터 또는 기입 회로(544)에 의해서 메모리(560)에 기입될 데이터를 임시적으로 저장할 수 있다.
일부 실시예들에서, 독출 회로(543)는 제1 인터페이스 회로(541)를 통해서 수신된 독출 요청에 포함된 정보에 기초하여 간접 어드레스를 식별할 수 있다. 독출 회로(543)는 제1 인터페이스 회로(541)로부터 수신된 독출 요청에 포함된 어드레스가 간접 어드레스인 경우, 간접 어드레스에 대응하는 메모리(560)의 영역에 저장된 데이터, 즉 직접 어드레스를 독출한 후 직접 어드레스에 대응하는 메모리(560)의 영역에 저장된 데이터를 가속기 회로(520)의 독출 요청과 무관하게 프리페치(prefetch)할 수 있다. 데이터의 프리페치 또는 데이터의 캐싱(caching)는 메모리 컨트롤러(540)로부터 원거리에 있는 영역에 저장된 데이터를 보다 빠르게 액세스할 수 있는 영역으로 이동시키는 동작을 지칭할 수 있다. 일부 실시예들에서, 독출 회로(543)는, 도 7을 참조하여 후술되는 바와 같이 메모리(560)로부터 독출된 데이터를 버퍼(545)에 저장함으로써 데이터를 프리페치할 수 있다. 또한, 일부 실시예들에서, 독출 회로(543)는, 도 8을 참조하여 후술되는 바와 같이, 메모리(560) 내에서 데이터를 보다 상위 레벨의 메모리로 복사함으로써 데이터를 프리페치할 수도 있다. 이에 따라, 도 2를 참조하여 전술된 바와 같이, 메모리 컨트롤러(540)는, 간접 어드레싱에 기초한 독출 요청에 대한 응답을 가속기 회로(520)에 조기에 제공할 수 있다. 독출 회로(543)의 동작의 예시들이 도 6 및 도 10 등을 참조하여 후술될 것이다.
도 6은 본 개시의 예시적 실시예에 따른 간접 어드레싱을 위한 방법을 나타내는 순서도이다. 구체적으로, 도 6의 순서도는 간접 어드레스를 포함하는 독출 요청에 응답하여 메모리 컨트롤러에서 수행되는 동작의 예시를 나타낸다. 도 6에 도시된 바와 같이, 간접 어드레싱을 위한 방법은 복수의 단계들(S61 내지 S66)을 포함할 수 있다. 일부 실시예들에서, 도 6의 방법은 도 5의 독출 회로(543)에 의해서 수행될 수 있고, 이하에서 도 6은 도 5를 참조하여 설명될 것이다.
도 6을 참조하면, 단계 S61에서 독출 요청이 수신될 수 있다. 예를 들면, 독출 회로(543)는 제1 인터페이스 회로(541)를 통해서 가속기 회로(520)로부터 독출 요청을 수신할 수 있다. 도 2를 참조하여 전술된 바와 같이, 독출 요청은 어드레스를 포함할 수 있고, 어드레스가 간접 어드레스임을 나타내는 정보(IND) 또는 어드레스가 직접 어드레스임을 나타내는 정보(DIR)를 포함할 수 있다.
단계 S62에서, 캐시 히트(cache hit) 여부가 판정될 수 있다. 예를 들면, 독출 회로(543)는 단계 S61에서 수신된 독출 요청에 포함된 어드레스에 대응하는 데이터가 프리페치되어 있는지 여부를 판정할 수 있다. 일부 실시예들에서, 독출 회로(543)는 버퍼(545)에 해당 데이터가 저장되어 있는 경우, 캐시 히트를 판정할 수 있다. 또한, 일부 실시예들에서, 독출 회로(543)는 메모리(560)에 포함된 상위 레벨의 메모리에 해당 데이터가 저장되어 있는 경우, 캐시 히트를 판정할 수도 있다.
도 6에 도시된 바와 같이, 단계 S62에서 캐시 미스(cache miss), 즉 캐시 히트의 실패가 판정된 경우, 단계 S63에서 메모리(560)로부터 독출된 데이터가 가속기 회로(520)에 제공될 수 있다. 예를 들면, 독출 회로(543)는 제2 인터페이스 회로(542)를 통해서, 단계 S61에서 수신된 독출 요청에 포함된 어드레스에 대응하는 메모리(560)의 영역으로부터 데이터를 독출할 수 있다. 독출 회로(543)는 독출된 데이터를 제1 인터페이스 회로(541)를 통해서 가속기 회로(520)에 제공할 수 있다. 일부 실시예들에서, 독출 회로(543)는 메모리(560)로부터 독출된 데이터를 버퍼(545)에 저장할 수 있다.
단계 S62에서, 캐시 히트가 판정된 경우, 단계 S64에서 프리페치된 데이터가 가속기 회로(520)에 제공될 수 있다. 예를 들면, 프리페치된 데이터가 버퍼(545)에 저장되어 있는 경우, 독출 회로(543)는 버퍼(545)에 저장된 데이터를 제1 인터페이스 회로(541)를 통해서 가속기 회로(520)에 제공할 수 있다. 또한, 프리페치된 데이터가 메모리(560)의 상위 레벨의 메모리에 저장된 경우, 독출 회로(543)는 제2 인터페이스 회로(542)를 통해서 메모리(560)로부터 데이터를 독출할 수 있고, 독출된 데이터를 제1 인터페이스 회로(541)를 통해서 가속기 회로(520)에 제공할 수 있다. 이에 따라, 가속기 회로(520)는, 단계 S63에 의해서 데이터를 수시하는 것보다, 단계 S64에 의해서 데이터를 조기에 수신할 수 있다.
단계 S65에서, 독출 요청에 포함된 어드레스가 간접 어드레스인지 여부가 판정될 수 있다. 예를 들면, 독출 회로(543)는 단계 S61에서 수신된 독출 요청에 포함된 정보에 기초하여 독출 요청에 포함된 어드레스가 간접 어드레스인지 여부를 판정할 수 있다. 도 6에 도시된 바와 같이, 독출 회로(543)가 독출 요청에 포함된 어드레스가 직접 어드레스임을 식별한 경우, 단계 S63 또는 단계 S64에서 독출 요청에 대한 데이터가 가속기 회로(520)에 제공되었으므로, 도 6의 방법은 종료할 수 있다.
단계 S65에서 독출 요청에 포함된 어드레스가 간접 어드레스인 것으로 식별된 경우, 단계 S66에서 메모리(560)로부터 데이터가 프리페치될 수 있다. 예를 들면, 독출 회로(543)는, 단계 S61에서 수신된 독출 요청에 포함된 어드레스가 간접 어드레스인 경우, 단계 S63 또는 단계 S64에서 가속기 회로(520)에 제공된 데이터가 직접 어드레스임을 식별할 수 있다. 이에 따라, 독출 회로(543)는 단계 S63 또는 단계 S64에서 가속기 회로(520)에 제공된 데이터, 즉 직접 어드레스에 기초하여 메모리(560)로부터 데이터를 프리페치할 수 있다. 일부 실시예들에서, 독출 회로(543)는 직접 어드레스에 대응하는 메모리(560)의 영역에 저장된 데이터를 제2 인터페이스 회로(542)를 통해서 버퍼(545)에 복사함으로써 데이터의 프리페치를 수행할 수 있다. 또한, 일부 실시예들에서, 독출 회로(543)는 메모리(560)에서, 직접 어드레스에 대응하는 하위 레벨의 메모리의 영역에 저장된 데이터를 상위 레벨의 메모리의 영역으로 복사함으로써 데이터의 프리페치를 수행할 수 있다.
도 7은 본 개시의 예시적 실시예에 따른 버퍼를 나타내는 블록도이다. 구체적으로, 도 7의 버퍼(700)는 도 5의 버퍼(545)의 예시일 수 있고, 도 2에서 단계 S27이 종료된 후 메모리 컨트롤러(220)에 포함된 버퍼의 상태에 대응할 수 있다. 이하에서, 도 7은 도 2 및 도 5를 참조하여 설명될 것이고, 도 5의 버퍼(545)의 버퍼는 도 7의 버퍼(700)인 것으로 가정된다.
일부 실시예들에서, 독출 회로(543)는 버퍼(700)의 일부를 독출 동작을 위한 프리페치를 위한 메모리(또는 캐시 메모리)로서 사용할 수 있다. 예를 들면, 독출 회로(543)는 간접 어드레스인 제1 어드레스(ADR1)를 포함하는 제1 독출 요청(REQ1)에 응답하여, 메모리(560)로부터 제2 어드레스(ADR2)를 독출할 수 있고, 제2 어드레스(ADR2)를 버퍼(700)에 저장할 수 있다. 도 7에 도시된 바와 같이, 버퍼(700)는 제2 어드레스(ADR2)가 저장된 영역에 대응하는 제1 어드레스(ADR1)를 메모리(560)로부터 독출된 제2 어드레스(ADR2)와 함께 제1 엔트리(710)로서 저장할 수 있다. 또한, 독출 회로(543)는, 직접 어드레스인 제2 어드레스(ADR2)에 기초하여 메모리(560)로부터 데이터(DAT)를 독출할 수 있고, 데이터(DAT)를 버퍼(700)에 저장할 수 있다. 도 7에 도시된 바와 같이, 버퍼(700)는 데이터(DAT)가 저장된 영역에 대응하는 제2 어드레스(ADR2)를 메모리(560)로부터 독출된 데이터(DAT)와 함께 제2 엔트리(720)로서 저장할 수 있다.
도 7에 도시된 바와 같이, 버퍼(700)에 저장된 엔트리는 어드레스 필드(ADDR) 및 데이터 필드(DATA)를 포함할 수 있고, 레디 필드(RDY)를 더 포함할 수 있다. 전술된 바와 같이, 데이터 필드(DATA)는 메모리(560)로부터 독출된 데이터에 대응할 수 있고, 어드레스 필드(ADDR)는 데이터 필드(DATA)의 데이터가 저장된 영역의 어드레스에 대응할 수 있다. 레디 필드(RDY)는 엔트리의 데이터 필드(DATA)에 데이터의 저장이 완료되었는지 여부를 나타낼 수 있다. 예를 들면, 도 7에 도시된 바와 같이, 제1 엔트리(710) 및 제2 엔트리(720)는 제2 어드레스(ADR2) 및 데이터(DAT)를 각각 포함하므로, 레디 필드(RDY)에서 값 "1"을 가질 수 있다.
독출 회로(543)는 독출 요청에 포함된 어드레스와 일치하는 어드레스를 가지는 엔트리가 버퍼(700)에 저장되어 있는지 여부에 기초하여 캐시 히트 여부를 판정할 수 있다. 예를 들면, 독출 회로(543)는 제2 어드레스(ADR2)를 포함하는 독출 요청(예컨대, 도 2의 REQ2)을 수신하는 경우, 캐시 히트를 판정할 수 있고, 버퍼(700)의 제2 엔트리(720)에 포함된 데이터(DAT)를 가속기 회로(520)에 제공할 수 있다. 또한, 도 7에 도시된 바와 같이, 제1 엔트리(710) 및 제2 엔트리(720)가 버퍼(700)에 저장된 상태에서, 제1 어드레스(ADR1)를 간접 어드레스로서 포함하는 독출 요청이 수신되는 경우, 독출 회로(543)는 캐시 히트를 판정할 수 있고, 버퍼(700)의 제1 엔트리(710)에 포함된 제2 어드레스(ADR2)를 가속기 회로(520)에 제공할 수 있다. 그 다음에, 독출 회로(543)는 제2 어드레스(ADR2)에 기초한 독출에서 캐시 히트를 판정할 수 있고, 버퍼(700)의 제2 엔트리(720)에 포함된 데이터(DAT)를 가속기 회로(520)에 제공할 수 있다.
일부 실시예들에서, 독출 회로(543)는, 제1 인터페이스 회로(541)로부터 수신된 독출 요청에 포함된 직접 어드레스 또는 간접 어드레스에 기초하여 독출된 직접 어드레스를 사용하여 메모리(560)로부터 데이터를 독출하는 경우, 해당 어드레스를 포함하는 엔트리를 생성할 수 있고, 생성된 엔트리를 버퍼(700)에 저장할 수 있다. 데이터가 메모리(560)로부터 독출되기 전이므로, 생성된 엔트리는 레디 필드(RDY)에서 값 "0"을 가질 수 있다. 독출 회로(543)에 의해서 독출이 개시된 후 데이터의 독출이 완료되기 전에, 가속기 회로(520)로부터 해당 어드레스를 포함하는 독출 요청이 수신되는 경우, 즉 해당 어드레스를 포함하는 엔트리가 레디 필드(RDY)에서 값 "0"을 가지는 경우, 독출 회로(543)는 캐시 히트를 판정할 수 있는 한편, 메모리(560)에 새로운 독출 커맨드를 제공하는 대신, 메모리(560)로부터 데이터가 수신될때까지 대기할 수 있다. 예를 들면, 도 2의 예시에서 단계 S25가 수행된 후 단계 S26에서 제2 독출 요청(REQ2)이 수신되는 경우, 메모리 컨트롤러(220)는 캐시 히트를 판정할 수 있고 데이터(DAT)의 수신을 대기할 수 있다.
도 8은 본 개시의 예시적 실시예에 따른 메모리 컨트롤러(810) 및 메모리(820)를 나타낸다. 구체적으로, 도 8의 블록도는 메모리(820)의 예시적인 구조를 메모리 컨트롤러(810)와 함께 나타내고, 메모리(820)는 도 2에서 단계 S27이 종료된 후 메모리(230)의 상태에 대응할 수 있다.
일부 실시예들에서, 메모리(820)는 계층적(hierarchical) 구조를 가질 수 있다. 예를 들면, 도 8에 도시된 바와 같이, 메모리(820)는 제1 레벨 메모리(L1) 내지 제n 레벨 메모리(Ln)를 포함할 수 있다(n은 1보다 큰 정수). 상위 레벨의 메모리(예컨대, 제1 레벨 메모리(L1)에 가까운 메모리)일수록 상대적으로 작은 용량 및 빠른 응답 속도를 가질 수 있는 한편, 하위 레벨의 메모리(예컨대, 제n 레벨 메모리(Ln)에 가까운 메모리)일수록 상대적으로 큰 용량 및 느린 응답 속도를 가질 수 있다.
메모리 컨트롤러(810)(또는 메모리 컨트롤러(810)에 포함된 독출 회로)는 하위 레벨의 메모리에 저장된 데이터를 상위 레벨의 메모리에 복사함으로써 데이터 프리페치를 수행할 수 있다. 예를 들면, 도 8에 도시된 바와 같이, 메모리 컨트롤러(810)는 제1 어드레스(ADR1)를 포함하는 독출 요청에 응답하여 제2 어드레스(ADR2)를 독출시, 제2 어드레스(ADR2)를 제n 레벨 메모리(Ln)로부터 제1 레벨 메모리(L1)에 복사할 수 있고, 제1 어드레스(ADR1)를 함께 제1 레벨 메모리(L1)에 저장할 수 있다. 또한, 메모리 컨트롤러(810)는, 제2 어드레스(ADR2)에 기초하여 데이터(DAT)를 독출시, 데이터(DAT)를 제n 레벨 메모리(Ln)로부터 제1 레벨 메모리(L1)에 복사 할 수 있고, 제2 어드레스(ADR2)를 함께 제1 레벨 메모리(L1)에 저장할 수 있다. 도 7을 참조하여 전술된 바와 유사하게, 메모리 컨트롤러(810)는 제1 레벨 메모리(L1)에 저장된 어드레스들에 기초하여 캐시 히트 여부를 판정할 수 있다.
도 9는 본 개시의 예시적 실시예에 따른 간접 어드레싱을 위한 방법을 나타내는 메시지도이다. 구체적으로, 도 9는 가속기 회로(910), 메모리 컨트롤러(920) 및 메모리(930) 사이에서 송수신되는 메시지 및/또는 데이터를 시간의 흐름에 따라 나타낸다. 도 9에 도시된 바와 같이, 메모리(930)는, 제1 어드레스(ADR1)에 대응하는 영역에서 제2 어드레스(ADR2)를 저장하고 제2 어드레스(ADR2)에 대응하는 영역에서 데이터(DAT)를 저장하고 있는 것으로 가정된다.
도 2의 예시와 비교할 때, 도 9의 메모리 컨트롤러(920)는 독출 요청에 간접 어드레스가 포함되는 경우, 간접 어드레스에 기초하여 직접 어드레스를 독출한 후, 직접 어드레스에 기초하여 독출된 데이터를 가속기 회로(910)에 제공할 수 있다. 예를 들면, 메모리 컨트롤러(920)는 간접 어드레스인 제1 어드레스(ADR1)를 포함하는 제3 독출 요청(REQ3)에 응답하여 데이터(DATA)를 포함하는 제3 응답(RES3)을 가속기 회로(910)에 제공할 수 있고, 도 2의 단계 S24, 단계 S26에 대응하는 단계들이 생략될 수 있다. 이에 따라, 가속기 회로(910)가 간접 어드레싱에 기초하여 데이터(DAT)를 획득하는데 소요된 총 시간, 즉 가속기 회로(910)가 제3 독출 요청(REQ3)을 발행한 후 제3 응답(RES3)을 수신하는데 소요되는 시간(T30)은, 도 2의 시간(T11)보다 길 수 있고 도 2의 시간(T10)보다 짧을 수 있다(T11<T30<T10).
도 9를 참조하면, 단계 S91에서 가속기 회로(910)는 제3 독출 요청(REQ3)을 메모리 컨트롤러(920)에 제공할 수 있다. 도 9에 도시된 바와 같이, 제3 독출 요청(REQ3)은 제1 어드레스(ADDR1)를 포함할 수 있고, 제1 어드레스(ADR1)가 간접 어드레스임을 나타내는 정보(IND)를 포함할 수 있다.
단계 S92에서, 메모리 컨트롤러(920)는 제1 독출 커맨드(CMD1) 및 제1 어드레스(ADR1)를 메모리(930)에 제공할 수 있다. 예를 들면, 메모리 컨트롤러(920)는 제3 독출 요청(REQ3)으로부터 제1 어드레스(ADR1)를 추출할 수 있고, 제1 독출 커맨드(CMD1)를 제1 어드레스(ADR1)와 함께 메모리(930)에 제공할 수 있다.
단계 S93에서, 메모리(930)는 제2 어드레스(ADR2)를 메모리 컨트롤러(920)에 제공할 수 있다. 예를 들면, 메모리(930)는 제1 독출 커맨드(CMD1)에 응답하여, 제1 어드레스(ADR1)를 식별할 수 있고, 제1 어드레스(ADR1)에 대응하는 영역에 저장된 제2 어드레스(ADR2)를 메모리 컨트롤러(920)에 제공할 수 있다.
단계 S95에서, 메모리 컨트롤러(920)는 제2 독출 커맨드(CMD2) 및 제2 어드레스(ADR2)를 메모리(930)에 제공할 수 있다. 예를 들면, 메모리 컨트롤러(920)는 단계 S91에서 수신된 제3 요청(REQ3)에 포함된 정보(IND)에 기초하여, 제3 독출 요청(REQ3)에 포함된 제1 어드레스(ADR1)가 간접 어드레스임을 식별할 수 있다. 도 2를 참조하여 전술된 바와 유사하게, 메모리 컨트롤러(920)는 가속기 회로(910)로부터 별도의 독출 요청이 발행되지 아니하더라도 단계 S93에서 메모리(930)로부터 수신된 제2 어드레스(ADR2)와 함께, 제2 독출 커맨드(CMD2)를 메모리(930)에 제공할 수 있다.
단계 S97에서, 메모리(930)는 데이터(DAT)를 메모리 컨트롤러(920)에 제공할 수 있다. 예를 들면, 메모리(930)는 제2 독출 커맨드(CMD2)에 응답하여, 제2 어드레스(ADR2)를 식별할 수 있고, 제2 어드레스(ADR2)에 대응하는 영역에 저장된 데이터(DAT)를 메모리 컨트롤러(920)에 제공할 수 있다.
단계 S98에서, 메모리 컨트롤러(920)는 제3 독출 요청(REQ3)에 대응하는 제3 응답(RES3)을 가속기 회로(910)에 제공할 수 있다. 예를 들면, 도 9에 도시된 바와 같이, 메모리 컨트롤러(920)는 단계 S97에서 메모리(930)로부터 수신된 데이터(DAT)를 포함하는 제3 응답(RES3)을 가속기 회로(910)에 제공할 수 있다. 전술된 바와 같이, 메모리 컨트롤러(920)는 제3 독출 요청(REQ3)에 응답하여 제1 독출 커맨드(CMD1)뿐만 아니라 제2 독출 커맨드(CMD2)를 메모리(930)에 제공할 수 있고, 데이터(DAT)를 조기에 수신할 수 있으며, 이에 따라 가속기 회로(910)에 제3 응답(RES3)을 조기에 제공할 수 있다.
일부 실시예들에서, 간접 어드레스를 포함하는 독출 요청은 직접 어드레스의 리턴 여부를 나타내는 정보를 포함할 수 있다. 예를 들면, 가속기 회로(910)는, 도 2의 제1 독출 요청(REQ1)에 직접 어드레스(즉, ADR2)의 리턴을 요청하는 정보를 포함시킬 수 있는 한편, 도 9의 제3 독출 요청(REQ3)에 집적 어드레스의 리턴의 생략을 요청하는 정보를 포함시킬 수 있다. 메모리 컨트롤러(920)는 간접 어드레스를 포함하는 독출 요청에 포함된 정보에 기초하여 메모리(930)로부터 독출된 직접 어드레스, 즉 제2 어드레스(ADR2)를 가속기 회로(910)에 제공하거나 제공하지 아니할 수 있다. 즉, 도 2의 제1 독출 요청(REQ1) 및 도 9의 제3 독출 요청(REQ3)은 가속기 회로(910) 및 메모리 컨트롤러(920)에 의해 모두 지원될 수 있고, 독출 요청에 포함된 정보에 기초하여 제1 독출 요청(REQ1) 및 제3 독출 요청(REQ3)이 구분될 수 있다.
도 10은 본 개시의 예시적 실시예에 따라 간접 어드레싱을 위한 방법을 나타내는 순서도이다. 구체적으로, 도 10의 순서도는 간접 어드레스를 포함하는 독출 요청에 응답하여 메모리 컨트롤러에서 수행되는 동작의 예시를 나타낸다. 도 10에 도시된 바와 같이, 간접 어드레싱을 위한 방법은 복수의 단계들(S101 내지 S105)을 포함할 수 있다. 일부 실시예들에서, 도 10의 방법은 도 9의 메모리 컨트롤러(920) 또는 메모리 컨트롤러(920)에 포함된 독출 회로(예컨대, 도 5의 543)에 의해서 수행될 수 있고, 이하에서 도 10은 도 9를 참조하여 설명될 것이다.
도 10을 참조하면, 단계 S101에서 독출 요청이 수신될 수 있다. 예를 들면, 메모리 컨트롤러(920)는 가속기 회로(910)로부터 독출 요청을 수신할 수 있다. 독출 요청은 어드레스를 포함할 수 있고, 어드레스가 간접 어드레스임을 나타내는 정보(IND) 또는 어드레스가 직접 어드레스임을 나타내는 정보(DIR)를 포함할 수 있다.
단계 S102에서, 독출 요청에 포함된 어드레스가 간접 어드레스인지 여부가 판정될 수 있다. 예를 들면, 메모리 컨트롤러(920)는 단계 S101에서 수신된 독출 요청에 포함된 정보에 기초하여 독출 요청에 포함된 어드레스가 간접 어드레스인지 여부를 판정할 수 있다. 도 10에 도시된 바와 같이, 메모리 컨트롤러(920)가 독출 요청에 포함된 어드레스가 직접 어드레스임을 식별한 경우, 단계 S104가 후속하여 수행될 수 있는 한편, 메모리 컨트롤러(920)가 독출 요청에 포함된 어드레스가 간접 어드레스임을 식별한 경우, 단계 S103에서 메모리(930)로부터 직접 어드레스가 독출될 수 있다. 예를 들면, 메모리 컨트롤러(920)는 단계 S101에서 수신된 독출 요청에 포함된 간접 어드레스에 기초하여 메모리(930)로부터 직접 어드레스를 독출할 수 있다.
단계 S104에서, 메모리(930)로부터 데이터가 독출될 수 있다. 예를 들면, 메모리 컨트롤러(920)는 직접 어드레스에 기초하여 메모리(930)로부터 데이터를 독출할 수 있다. 단계 S102에서 직접 어드레스가 식별된 경우, 메모리 컨트롤러(920)는 단계 S101에서 수신된 독출 요청에 포함된 어드레스에 기초하여 메모리(930)로부터 데이터를 독출할 수 있다. 다른 한편으로, 단계 S102에서 간접 어드레스가 식별된 경우, 메모리 컨트롤러(920)는 단계 S103에서 독출된 직접 어드레스에 기초하여 메모리(930)로부터 데이터를 독출할 수 있다.
단계 S105에서, 메모리(930)로부터 독출된 데이터가 가속기 회로(910)에 제공될 수 있다. 예를 들면, 메모리 컨트롤러(920)는 단계 S101에서 수신된 독출 요청에 대응하는 응답으로서 데이터를 가속기 회로(910)에 제공할 수 있다.
도 11a 및 도 11b는 본 개시의 예시적 실시예에 따른 시스템의 예시들을 나타내는 도면들이다. 구체적으로, 도 11a 및 도 11b의 블록도들은 다수의 CPU들을 포함하는 시스템들(5a, 5b)을 나타낸다. 이하에서, 도 11a 및 도 11b에 대한 설명 중 상호 중복되는 내용은 생략될 것이다.
도 11a를 참조하면, 시스템(5a)은, 제1 및 제2 CPU(11a, 21a)를 포함할 수 있고, 제1 및 제2 CPU(11a, 21a)에 각각 연결된 제1 및 제2 DDR(double data rate) 메모리(12a, 22a)를 포함할 수 있다. 제1 및 제2 CPU(11a, 21a)는 프로세서 상호 연결 기술에 기초한 상호연결 시스템(30a)을 통해서 연결될 수 있다. 도 11a에 도시된 바와 같이, 상호연결 시스템(30a)은, 적어도 하나의 CPU간(CPU-to-CPU) 일관적 링크를 제공할 수 있다.
시스템(5a)은, 제1 CPU(11a)와 통신하는 제1 입출력 장치(13a) 및 제1 가속기(14a)를 포함할 수 있고, 제1 가속기(14a)에 연결된 제1 장치 메모리(15a)를 포함할 수 있다. 제1 CPU(11a) 및 제1 입출력 장치(13a)는 버스(16a)를 통해서 통신할 수 있고, 제1 CPU(11a) 및 제1 가속기(14a)는 버스(17a)를 통해서 통신할 수 있다. 또한, 시스템(5a)은, 제2 CPU(21a)와 통신하는 제2 입출력 장치(23a) 및 제2 가속기(24a)를 포함할 수 있고, 제2 가속기(24a)에 연결된 제2 장치 메모리(25a)를 포함할 수 있다. 제2 CPU(21a) 및 제2 입출력 장치(23a)는 버스(26a)를 통해서 통신할 수 있고, 제2 CPU(21a) 및 제2 가속기(24a)는 버스(27a)를 통해서 통신할 수 있다.
버스들(16a, 17a, 26a, 27a)을 통해서 프로토콜에 기초한 통신이 수행될 수 있고, 프로토콜은 도면들을 참조하여 전술된 간접 어드레스를 포함하는 독출 요청을 지원할 수 있다. 이에 따라, 메모리, 예컨대 제1 장치 메모리(15a), 제2 장치 메모리(25a), 제1 DDR 메모리(12a) 및/또는 제2 DDR 메모리(22a)에 대한 액세스 레이턴시가 감소할 수 있고, 시스템(5a)의 성능이 향상될 수 있다.
도 11b를 참조하면, 시스템(5b)은, 도 11a의 시스템(5a)과 유사하게, 제1 및 제2 CPU(11b, 21b), 제1 및 제2 DDR 메모리(12b, 22b), 제1 및 제2 입출력 장치(13b, 23b) 및 제1 및 제2 가속기(14b, 24b)를 포함할 수 있는 한편, 원격 원거리 메모리(40)를 더 포함할 수 있다. 제1 및 제2 CPU(11b, 21b)는, 상호연결 시스템(30b)을 통해서 상호 통신할 수 있다. 제1 CPU(11b)는 버스들(16b, 17b)을 통해서 제1 및 제2 입출력 장치(13b, 23b)에 연결될 수 있고, 제2 CPU(21b)는 버스들(26b, 27b)을 통해서 제1 및 제2 가속기(14b, 24b)에 연결될 수 있다.
제1 및 제2 CPU(11b, 21b)는 제1 및 제2 버스(18, 28)를 통해서 원격 원거리 메모리(40)에 연결될 수 있다. 원격 원거리 메모리(40)는, 시스템(5b)에서 메모리의 확장을 위하여 사용될 수 있고, 제1 및 제2 버스(18, 28)는 메모리 확장 포트로서 사용될 수 있다. 버스들(16b, 17b, 26b, 27b)뿐만 아니라, 제1 및 제2 버스(18, 28)에 대응하는 프로토콜 또한 도면들을 참조하여 전술된 간접 어드레스를 포함하는 독출 요청을 지원할 수 있다. 이에 따라, 원격 원거리 메모리(40)에 대한 액세스 레이턴시가 감소할 수 있고, 시스템(5b)의 성능이 향상될 수 있다.
도 12는 본 개시의 예시적 실시예에 따른 시스템을 포함하는 데이터 센터(7)를 나타내는 블록도이다. 일부 실시예들에서, 도면들을 참조하여 전술된 시스템은 어플리케이션 서버 및/또는 스토리지 서버로서 데이터 센터(7)에 포함될 수 있다.
도 12를 참조하면, 데이터 센터(7)는 다양한 데이터를 수집하고 서비스를 제공할 수 있고, 데이터 스토리지 센터로 지칭될 수도 있다. 예를 들면, 데이터 센터(7)는 검색 엔진 및 데이터 베이스 운용을 위한 시스템일 수 있고, 은행 등의 기업 또는 정부기관에서 사용되는 컴퓨팅 시스템일 수도 있다. 도 12에 도시된 바와 같이, 데이터 센터(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)는 단일 코어 프로세서 또는 다중 코어 프로세서를 포함할 수 있다. 일부 실시예들에서, 도 12에서 점선으로 도시된 바와 같이, 어플리케이션 서버(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 인터페이스 회로;
메모리와 통신하도록 구성된 제2 인터페이스 회로; 및
상기 제1 인터페이스 회로를 통해서 수신된 제1 독출 요청에 포함된 정보에 기초하여 상기 제1 독출 요청에 포함된 제1 어드레스가 데이터의 간접 어드레스임을 식별하고, 상기 제2 인터페이스 회로를 통해서 상기 제1 어드레스에 대응하는 상기 메모리의 제1 영역으로부터 제2 어드레스를 독출하고, 상기 제2 인터페이스 회로를 통해서 상기 제2 어드레스에 대응하는 상기 메모리의 제2 영역으로부터 상기 데이터를 프리페치(prefetch)하도록 구성된 독출 회로를 포함하는 메모리 컨트롤러. - 청구항 1에 있어서,
상기 독출 회로는, 상기 제1 독출 요청에 응답하여 상기 제1 인터페이스 회로를 통해서 상기 제2 어드레스를 상기 장치에 제공하도록 구성된 것을 특징으로 하는 메모리 컨트롤러. - 청구항 1에 있어서,
상기 독출 회로는, 상기 제1 인터페이스 회로를 통해서 수신된 제2 독출 요청에 포함된 정보에 기초하여 상기 제2 독출 요청에 포함된 상기 제2 어드레스가 상기 데이터의 직접 어드레스임을 식별하고, 상기 제2 독출 요청에 응답하여 상기 제1 인터페이스 회로를 통해서 상기 데이터를 상기 장치에 제공하도록 구성된 것을 특징으로 하는 메모리 컨트롤러. - 청구항 3에 있어서,
프리페치된 상기 데이터를 저장하도록 구성된 버퍼를 더 포함하고,
상기 독출 회로는, 상기 제2 독출 요청에 포함된 상기 제2 어드레스에 기초하여, 상기 버퍼에 저장된 상기 데이터를 상기 제1 인터페이스 회로를 통해서 상기 장치에 제공하도록 구성된 것을 특징으로 하는 메모리 컨트롤러. - 청구항 4에 있어서,
상기 버퍼는, 상기 제2 어드레스를 더 저장하도록 구성되고,
상기 독출 회로는, 상기 제2 독출 요청에 포함된 상기 제2 어드레스에 기초하여 상기 버퍼에 저장된 상기 데이터를 식별하도록 구성된 것을 특징으로 하는 메모리 컨트롤러. - 청구항 4에 있어서,
상기 버퍼는, 상기 버퍼에 저장된 상기 데이터의 유효 여부를 나타내는 레디 정보를 더 저장하도록 구성되고,
상기 독출 회로는, 제2 독출 요청에 응답하여, 상기 레디 정보에 따라 상기 버퍼에 저장된 상기 데이터 또는 상기 메모리의 상기 제2 영역에 저장된 상기 데이터 중 하나를 상기 제1 인터페이스 회로를 통해서 상기 장치에 제공하도록 구성된 것을 특징으로 하는 메모리 컨트롤러. - 청구항 1에 있어서,
상기 독출 회로는, 상기 제1 독출 요청에 응답하여 상기 제1 인터페이스 회로를 통해서 상기 데이터를 상기 장치에 제공하도록 구성된 것을 특징으로 하는 메모리 컨트롤러. - 청구항 1에 있어서,
상기 제1 인터페이스 회로는, 상기 버스의 프로토콜에 기초하여 상기 장치와 통신하도록 구성된 것을 특징으로 하는 메모리 컨트롤러. - 청구항 1에 있어서,
상기 메모리는, 상기 장치에 부착되고 상기 장치를 통해 상기 호스트 프로세서에 의해서 액세스 가능한, 장치 메모리에 포함되는 것을 특징으로 하는 메모리 컨트롤러. - 명령어들을 실행하도록 구성된 적어도 하나의 코어를 포함하는 호스트 프로세서;
상기 호스트 프로세서와 버스를 통해서 연결되고, 가속기 회로 및 메모리 컨트롤러를 포함하는 장치; 및
상기 메모리 컨트롤러를 통해서 상기 가속기 회로에 의해서 액세스되도록 구성된 메모리를 포함하고,
상기 가속기 회로는, 상기 메모리에 저장된 데이터의 간접 어드레스를 포함하는 제1 독출 요청을 상기 메모리 컨트롤러에 제공하도록 구성되고,
상기 메모리 컨트롤러는, 상기 제1 독출 요청에 포함된 정보에 기초하여 상기 간접 어드레스를 식별하고, 상기 간접 어드레스에 대응하는 상기 메모리의 영역으로부터 상기 데이터의 직접 어드레스를 독출하고, 상기 직접 어드레스에 대응하는 상기 메모리의 영역으로부터 상기 데이터를 프리페치(prefetch)하도록 구성된 것을 특징으로 하는 시스템. - 청구항 10에 있어서,
상기 메모리 컨트롤러는, 상기 제1 독출 요청에 응답하여 상기 직접 어드레스를 상기 가속기 회로에 제공하도록 구성되고,
상기 가속기 회로는, 상기 직접 어드레스를 포함하는 제2 독출 요청을 상기 메모리 컨트롤러에 제공하고, 프리페치된 상기 데이터를 상기 메모리 컨트롤러로부터 수신하도록 구성된 것을 특징으로 하는 시스템. - 청구항 11에 있어서,
상기 메모리 컨트롤러는, 프리페치된 상기 데이터를 저장하도록 구성된 버퍼를 포함하고, 상기 제2 독출 요청에 포함된 정보에 기초하여 상기 직접 어드레스를 식별하고, 상기 제2 독출 요청에 응답하여 상기 버퍼에 저장된 상기 데이터를 상기 가속기 회로에 제공하도록 구성된 것을 특징으로 하는 시스템. - 청구항 10에 있어서,
상기 메모리 컨트롤러는, 상기 제1 독출 요청에 응답하여 상기 데이터를 상기 가속기 회로에 제공하도록 구성된 것을 특징으로 하는 시스템. - 청구항 10에 있어서,
상기 메모리는, 상위 레벨의 메모리 및 하위 레벨의 메모리를 포함하고,
상기 메모리 컨트롤러는, 상기 하위 레벨의 메모리에 저장된 상기 데이터를 상기 상위 레벨의 메모리로 복사함으로써 상기 데이터를 프리페치하도록 구성된 것을 특징으로 하는 시스템. - 청구항 10에 있어서,
상기 메모리는, 상기 장치에 부착되고 상기 장치를 통해 상기 호스트 프로세서에 의해서 액세스 가능한 것을 특징으로 하는 메모리 컨트롤러. - 버스를 통해 호스트 프로세서와 연결된 장치에 의해서 수행되는 방법으로서,
메모리에 제1 어드레스를 포함하는 제1 독출 요청을 제공하는 단계;
상기 메모리로부터 상기 제1 어드레스에 대응하는 상기 메모리의 제1 영역에 저장된 제2 어드레스를 수신하는 단계;
상기 메모리에 상기 제2 어드레스를 포함하는 제2 독출 요청을 제공하는 단계; 및
상기 메모리로부터 상기 제2 어드레스에 대응하는 상기 메모리의 제2 영역에 저장된 제1 데이터를 수신하는 단계를 포함하고,
상기 제1 독출 요청은, 상기 제1 어드레스가 상기 제1 데이터의 간접 어드레스임을 나타내는 정보를 더 포함하는 것을 특징으로 하는 방법. - 청구항 16에 있어서,
상기 제2 독출 요청을 제공하는 단계로부터 상기 제1 데이터를 수신하는 단계까지 소요되는 시간은, 상기 제1 독출 요청을 제공하는 단계로부터 상기 제2 어드레스를 수신하는 단계까지 소요되는 시간보다 짧은 것을 특징으로 하는 방법. - 청구항 16에 있어서,
상기 제2 독출 요청은, 상기 제1 데이터의 직접 어드레스임을 나타내는 정보를 더 포함하는 것을 특징으로 하는 방법. - 청구항 16에 있어서,
상기 메모리에 제3 어드레스를 포함하는 제3 독출 요청을 제공하는 단계; 및
상기 메모리로부터 제3 어드레스에 대응하는 상기 메모리의 제3 영역에 저장된 제4 어드레스에 대응하는 상기 메모리의 제4 영역에 저장된 제2 데이터를 수신하는 단계를 더 포함하고,
상기 제3 독출 요청은, 상기 제3 어드레스가 상기 제2 데이터의 간접 어드레스임을 나타내는 정보 및 상기 제4 어드레스의 수신의 생략을 나타내는 정보를 더 포함하는 것을 특징으로 하는 방법. - 청구항 19에 있어서,
상기 제3 독출 요청을 제공하는 단계로부터 상기 제2 데이터를 수신하는 단계까지 소요되는 시간은, 상기 제1 독출 요청을 제공하는 단계로부터 상기 제2 어드레스를 수신하는 단계까지 소요되는 시간보다는 길고 상기 제1 독출 요청을 제공하는 단계로부터 상기 제1 데이터를 수신하는 단계까지 소요되는 시간보다는 짧은 것을 특징으로 하는 방법.
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200132978A KR20220049396A (ko) | 2020-10-14 | 2020-10-14 | 간접 어드레싱을 위한 시스템, 장치 및 방법 |
CN202110795792.6A CN114356790A (zh) | 2020-10-14 | 2021-07-14 | 用于间接寻址的系统、设备和方法 |
US17/378,354 US11809341B2 (en) | 2020-10-14 | 2021-07-16 | System, device and method for indirect addressing |
EP21187355.9A EP3985522A1 (en) | 2020-10-14 | 2021-07-23 | System, device and method for indirect addressing |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200132978A KR20220049396A (ko) | 2020-10-14 | 2020-10-14 | 간접 어드레싱을 위한 시스템, 장치 및 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20220049396A true KR20220049396A (ko) | 2022-04-21 |
Family
ID=77042797
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200132978A KR20220049396A (ko) | 2020-10-14 | 2020-10-14 | 간접 어드레싱을 위한 시스템, 장치 및 방법 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11809341B2 (ko) |
EP (1) | EP3985522A1 (ko) |
KR (1) | KR20220049396A (ko) |
CN (1) | CN114356790A (ko) |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5522061A (en) * | 1994-04-14 | 1996-05-28 | Hewlett-Packard Company | Read concurrency through transaction synthesis |
US7552319B2 (en) * | 2004-06-30 | 2009-06-23 | Intel Corporation | Methods and apparatus to manage memory access |
US7890702B2 (en) | 2007-11-26 | 2011-02-15 | Advanced Micro Devices, Inc. | Prefetch instruction extensions |
US8166277B2 (en) | 2008-02-01 | 2012-04-24 | International Business Machines Corporation | Data prefetching using indirect addressing |
JP5556025B2 (ja) * | 2009-02-27 | 2014-07-23 | 日本電気株式会社 | ストレージシステム |
DE102009046876A1 (de) | 2009-03-31 | 2010-10-07 | Advanced Micro Devices, Inc., Sunnyvale | Verfahren und System für die Datenvorabholung für Schleifen auf der Basis linearer Induktionsausdrücke |
US8880815B2 (en) | 2012-02-20 | 2014-11-04 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Low access time indirect memory accesses |
US9619405B2 (en) | 2014-11-24 | 2017-04-11 | Nxp Usa, Inc. | Device having memory access protection |
US10509726B2 (en) | 2015-12-20 | 2019-12-17 | Intel Corporation | Instructions and logic for load-indices-and-prefetch-scatters operations |
KR20180043451A (ko) * | 2016-10-19 | 2018-04-30 | 삼성전자주식회사 | 컴퓨팅 시스템 및 그것의 동작 방법 |
EP3553665B1 (en) | 2016-12-28 | 2024-05-15 | Huawei Technologies Co., Ltd. | Non-volatile memory access method, device, and system |
US11210092B2 (en) * | 2018-03-06 | 2021-12-28 | International Business Machines Corporation | Servicing indirect data storage requests with multiple memory controllers |
KR102664213B1 (ko) | 2018-10-08 | 2024-05-08 | 삼성전자주식회사 | 인-메모리 프리페칭을 수행하는 메모리 장치 및 이를 포함하는 시스템 |
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 |
US11789878B2 (en) | 2019-12-19 | 2023-10-17 | Intel Corporation | Adaptive fabric allocation for local and remote emerging memories based prediction schemes |
-
2020
- 2020-10-14 KR KR1020200132978A patent/KR20220049396A/ko unknown
-
2021
- 2021-07-14 CN CN202110795792.6A patent/CN114356790A/zh active Pending
- 2021-07-16 US US17/378,354 patent/US11809341B2/en active Active
- 2021-07-23 EP EP21187355.9A patent/EP3985522A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
CN114356790A (zh) | 2022-04-15 |
EP3985522A1 (en) | 2022-04-20 |
US11809341B2 (en) | 2023-11-07 |
US20220114118A1 (en) | 2022-04-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 | |
US20230229357A1 (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 | |
US20220147470A1 (en) | System, device, and method for accessing memory based on multi-protocol | |
US11983115B2 (en) | System, device and method for accessing device-attached memory | |
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 | |
EP3985522A1 (en) | System, device and method for indirect addressing | |
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 | |
US20230222067A1 (en) | Apparatus and method for cache-coherence | |
US20240248850A1 (en) | Memory device, system including the same, and operating method of memory device | |
US20220147458A1 (en) | Semiconductor device | |
KR20240115587A (ko) | 메모리 장치, 이를 포함하는 시스템 및 메모리 장치의 동작 방법 | |
KR20230157151A (ko) | 메모리 장치 및 스토리지 장치를 포함하는 컴퓨팅 장치 및 이의 동작 방법 |