KR20240097424A - 메모리 장치 및 이의 스케줄링 방법 - Google Patents
메모리 장치 및 이의 스케줄링 방법 Download PDFInfo
- Publication number
- KR20240097424A KR20240097424A KR1020220179463A KR20220179463A KR20240097424A KR 20240097424 A KR20240097424 A KR 20240097424A KR 1020220179463 A KR1020220179463 A KR 1020220179463A KR 20220179463 A KR20220179463 A KR 20220179463A KR 20240097424 A KR20240097424 A KR 20240097424A
- Authority
- KR
- South Korea
- Prior art keywords
- priority
- command
- signal
- request
- cxl
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 51
- 230000015654 memory Effects 0.000 claims abstract description 121
- 230000008569 process Effects 0.000 claims description 39
- 238000010586 diagram Methods 0.000 description 14
- 238000012545 processing Methods 0.000 description 13
- 230000004913 activation Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 239000004744 fabric Substances 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Classifications
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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/18—Handling requests for interconnection or transfer for access to memory bus based on priority control
-
- 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/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
-
- 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/0604—Improving or facilitating administration, e.g. storage management
-
- 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
- G06F3/0613—Improving I/O performance in relation to throughput
-
- 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/0629—Configuration or reconfiguration of storage systems
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- 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/0662—Virtualisation aspects
- G06F3/0664—Virtualisation aspects at device level, e.g. emulation of a storage device or system
-
- 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
- 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
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- 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
-
- 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/72—Details relating to flash memory management
- G06F2212/7202—Allocation control and policies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
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 프로토콜을 사용하여 호스트로부터 요청자 식별자를 포함하는 제1 신호를 수신하고, 상기 요청자 식별자에 대응하는 제1 우선순위를 출력하는 요청 레지스터; 상기 제1 프로토콜과 상이한 제2 프로토콜을 사용하여 상기 호스트로부터 커맨드 및 요청 타입을 포함하는 제2 신호를 수신하고, 상기 요청 레지스터로부터 상기 제1 우선순위를 수신하고, 상기 제1 우선순위 및 상기 요청 타입에 기초하여 상기 커맨드의 제2 우선순위를 결정하는 체커 모듈; 상기 커맨드로부터 메모리 동작을 위한 내부 커맨드를 생성하는 커맨드 생성기; 및 상기 제2 우선순위에 기초하여 상기 내부 커맨드를 스케줄링하는 메모리 컨트롤러를 포함한다.
Description
개시 내용은 메모리 장치 및 이의 스케줄링 방법에 관한 것이다.
압축, 암호화, 및 인공지능과 같이 특화된 워크로드의 사용과 데이터의 급격한 증가로 인해, 특수 목적을 위해 개발된 가속기가 범용 프로세서와 함께 동작하는 이기종 컴퓨팅(heterogeneous computing)에 대한 수요가 증가하고 있다.
이러한 가속기는 프로세서와의 고성능 연결을 필요로 하는데, 오버헤드와 레이턴시를 줄이기 위해서는 메모리 공간을 공유하는 것이 이상적이다. 이에 프로세서를 다양한 가속기에 연결하여 메모리 및 캐시-일관성을 유지하는 칩 간 상호 연결 프로토콜에 대한 연구가 있다.
일 실시예는 칩 간 상호 연결 프로토콜을 사용하는 시나리오에서 커맨드의 우선순위를 결정하여 처리하는 메모리 장치 및 이의 스케줄링 방법을 제공하고자 한다.
이러한 기술적 과제를 해결하기 위한 일 실시예에 따른 메모리 장치는 제1 프로토콜을 사용하여 호스트로부터 요청자 식별자를 포함하는 제1 신호를 수신하고, 상기 요청자 식별자에 대응하는 제1 우선순위를 출력하는 요청 레지스터(request register); 상기 제1 프로토콜과 상이한 제2 프로토콜을 사용하여 상기 호스트로부터 커맨드 및 요청 타입을 포함하는 제2 신호를 수신하고, 상기 요청 레지스터로부터 상기 제1 우선순위를 수신하고, 상기 제1 우선순위 및 상기 요청 타입에 기초하여 상기 커맨드의 제2 우선순위를 결정하는 체커 모듈(checker module); 상기 커맨드로부터 메모리 동작을 위한 내부 커맨드를 생성하는 커맨드 생성기(command generator); 및 상기 제2 우선순위에 기초하여 상기 내부 커맨드를 스케줄링하는 메모리 컨트롤러(memory controller)를 포함한다.
상기 요청 레지스터가 상기 제1 신호를 수신하는 시간과, 상기 체커 모듈이 상기 제2 신호를 수신하는 시간은 동일할 수 있다.
상기 제1 프로토콜은 CXL.io 프로토콜이고, 상기 제2 프로토콜은 CXL.mem 프로토콜일 수 있다.
상기 신호는, 상기 요청 타입을 전달하는 메타데이터 필드를 포함하고, 상기 메타데이터 필드의 값이 제1 값이면 상기 커맨드가 긴급 요청임을 지시하고, 상기 메타데이터 필드의 값이 상기 제1 값과 상이한 제2 값이면 상기 커맨드가 일반 요청임을 지시할 수 있다.
상기 체커 모듈은, 상기 커맨드가 상기 긴급 요청인 때의 상기 커맨드의 제2 우선순위를 상기 커맨드가 상기 일반 요청인 때의 상기 커맨드의 제2 우선순위보다 더 높게 결정할 수 있다.
상기 요청 레지스터는, 상기 제1 프로토콜을 사용하여 상기 호스트로부터 요청자 식별자를 포함하는 제3 신호를 수신하고, 상기 제3 신호의 요청자 식별자에 대응하는 제1 우선순위를 출력하고, 상기 체커 모듈은, 상기 제2 프로토콜을 사용하여 커맨드 및 요청 타입을 포함하는 제4 신호를 수신하고, 상기 요청 레지스터로부터 상기 제3 신호의 요청자 식별자에 대응하는 제1 우선순위를 수신하고, 상기 제1 신호의 요청자 식별자에 대응하는 제1 우선순위, 상기 제2 신호의 요청 타입, 상기 제3 신호의 요청자 식별자에 대응하는 제1 우선순위, 및 상기 제4 신호의 요청 타입에 기초하여 상기 제2 신호의 커맨드의 제2 우선순위 및 상기 제4 신호의 커맨드의 제2 우선순위를 결정할 수 있다.
상기 체커 모듈은, 상기 제2 신호의 요청 타입과 상기 제4 신호의 요청 타입이 동일하면, 상기 제1 신호의 요청자 식별자에 대응하는 제1 우선순위 및 상기 제3 신호의 요청자 식별자에 대응하는 제1 우선순위에 기초하여 상기 제2 신호의 커맨드의 제2 우선순위 및 상기 제4 신호의 커맨드의 제2 우선순위를 결정할 수 있다.
상기 체커 모듈은, 상기 제2 신호의 요청 타입이 긴급 요청이고 상기 제4 신호의 요청 타입이 일반 요청이면, 상기 제2 신호의 커맨드의 제2 우선순위를 상기 제4 신호의 커맨드의 제2 우선순위보다 높게 결정할 수 있다.
상기 체커 모듈은, 가속기로부터 커맨드 및 요청 타입을 포함하는 제5 신호를 수신하고, 제1 신호의 요청자 식별자에 대응하는 제1 우선순위, 상기 제2 신호의 요청 타입, 상기 제3 신호의 요청자 식별자에 대응하는 제1 우선순위, 상기 제4 신호의 요청 타입, 및 상기 제5 신호의 요청 타입에 기초하여 상기 제2 신호의 커맨드의 제2 우선순위, 상기 제4 신호의 커맨드의 제2 우선순위, 및 상기 제5 신호의 커맨드의 제2 우선순위를 결정할 수 있다.
상기 체커 모듈은, 상기 제2 신호의 요청 타입과 상기 제4 신호의 요청 타입이 동일하면, 상기 제1 신호의 요청자 식별자에 대응하는 제1 우선순위 및 상기 제3 신호의 요청자 식별자에 대응하는 제1 우선순위에 기초하여 상기 제2 신호의 커맨드의 제2 우선순위 및 상기 제4 신호의 커맨드의 제2 우선순위를 결정할 수 있다.
상기 체커 모듈은, 요청 타입이 긴급 요청인 신호의 커맨드의 제2 우선순위를, 요청 타입이 일반 요청인 신호의 커맨드의 제2 우선순위보다 높게 결정할 수 있다.
상기 체커 모듈은, 상기 제2 신호의 요청 타입이 긴급 요청이고, 상기 제5 신호의 요청 타입이 긴급 요청이면, 상기 제2 신호의 커맨드의 제2 우선순위를 상기 제5 신호의 커맨드의 제2 우선순위보다 높게 결정할 수 있다.
상기 체커 모듈은, 상기 제1 신호의 요청자 식별자에 대응하는 제1 우선순위가 높음이고, 상기 제2 신호의 요청 타입이 일반 요청이고, 상기 제5 신호의 요청 타입이 일반 요청이면, 상기 제2 신호의 커맨드의 제2 우선순위를 상기 제5 신호의 커맨드의 제2 우선순위보다 높게 결정할 수 있다.
상기 체커 모듈은, 상기 제1 신호의 요청자 식별자에 대응하는 제1 우선순위가 낮음이고, 상기 제2 신호의 요청 타입이 일반 요청이고, 상기 제5 신호의 요청 타입이 일반 요청이면, 상기 제2 신호의 커맨드의 제2 우선순위와 상기 제5 신호의 커맨드의 제2 우선순위를 동일하게 결정할 수 있다.
일 실시예에 따른 CXL 장치는 CXL 프로토콜을 통해 호스트의 복수의 프로세스 각각으로부터 복수의 제1 커맨드를 수신하고, 가속기로부터 제2 커맨드를 수신하며, 요청자 우선순위 및 요청 타입에 기초하여 상기 복수의 제1 커맨드 및 상기 제2 커맨드를 스케줄링하여 커맨드 큐를 생성하는 컨트롤러; 및 상기 커맨드 큐에 기초하여 동작하는 메모리를 포함한다.
상기 컨트롤러는, CXL.io 프로토콜을 사용하여 상기 복수의 프로세스 각각으로부터 요청자 식별자를 수신하며, 상기 요청자 식별자에 대응하는 상기 요청자 우선순위를 획득하고, CXL.mem 프로토콜을 사용하여 상기 복수의 제1 커맨드, 상기 제2 커맨드, 및 상기 요청 타입을 수신할 수 있다.
상기 컨트롤러는, 상기 요청 타입이 긴급 요청인 커맨드가 상기 요청 타입이 일반 요청인 커맨드보다 우선적으로 처리되도록 상기 복수의 제1 커맨드 및 상기 제2 커맨드를 스케줄링할 수 있다.
상기 컨트롤러는, 상기 복수의 제1 커맨드의 요청 타입이 긴급 요청이고, 상기 제2 커맨드의 요청 타입이 긴급 요청이면, 상기 상기 복수의 제1 커맨드가 상기 제2 커맨드보다 우선적으로 처리되도록 상기 복수의 제1 커맨드 및 상기 제2 커맨드를 스케줄링할 수 있다.
상기 컨트롤러는, 요청 타입이 동일한 커맨드들 중 요청자 우선순위가 높은 커맨드가 우선적으로 처리되도록 상기 복수의 제1 커맨드 및 상기 제2 커맨드를 스케줄링할 수 있다.
일 실시예에 따른 스케줄링 방법은 제1 프로토콜을 사용하여 호스트로부터 요청자 식별자를 수신하는 단계; 미리 결정된 요청자 우선순위에 기초하여 상기 요청자 식별자에 대응하는 제1 우선순위를 결정하는 단계; 상기 제1 프로토콜과 상이한 제2 프로토콜을 사용하여 상기 호스트로부터 커맨드 및 요청 타입을 포함하는 신호를 수신하는 단계; 상기 제1 우선순위 및 상기 요청 타입에 기초하여 상기 커맨드의 제2 우선순위를 결정하는 단계; 및 상기 커맨드로부터 메모리 동작을 위한 내부 커맨드를 생성하고, 상기 제2 우선순위에 기초하여 상기 내부 커맨드를 스케줄링하는 단계를 포함한다.
도 1은 일 실시예에 따른 컴퓨터 시스템을 도시한 블록도이다.
도 2는 일 실시예에 따른 호스트 및 CXL 장치의 동작을 설명하기 위한 도면이다.
도 3은 일 실시예에 따른 CXL 장치의 개략적인 블록도이다.
도 4는 일 실시예에 따른 호스트 및 CXL 장치의 동작을 설명하기 위한 도면이다.
도 5는 일 실시예에 따른 CXL 장치의 개략적인 블록도이다.
도 6은 일 실시예에 따른 스케줄링 방법의 순서도를 나타낸다.
도 7은 일 실시예에 따른 스케줄링 방법의 순서도를 나타낸다.
도 8은 다른 실시예에 따른 컴퓨터 시스템을 나타낸 블록도이다.
도 9는 일 실시예에 따른 서버 시스템을 나타낸 블록도이다.
도 2는 일 실시예에 따른 호스트 및 CXL 장치의 동작을 설명하기 위한 도면이다.
도 3은 일 실시예에 따른 CXL 장치의 개략적인 블록도이다.
도 4는 일 실시예에 따른 호스트 및 CXL 장치의 동작을 설명하기 위한 도면이다.
도 5는 일 실시예에 따른 CXL 장치의 개략적인 블록도이다.
도 6은 일 실시예에 따른 스케줄링 방법의 순서도를 나타낸다.
도 7은 일 실시예에 따른 스케줄링 방법의 순서도를 나타낸다.
도 8은 다른 실시예에 따른 컴퓨터 시스템을 나타낸 블록도이다.
도 9는 일 실시예에 따른 서버 시스템을 나타낸 블록도이다.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다.
그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다. 도면을 참고하여 설명한 흐름도에서, 동작 순서는 변경될 수 있고, 여러 동작들이 병합되거나, 어느 동작이 분할될 수 있고, 특정 동작은 수행되지 않을 수 있다.
또한, 단수로 기재된 표현은 "하나" 또는 "단일" 등의 명시적인 표현을 사용하지 않은 이상, 단수 또는 복수로 해석될 수 있다. 제1, 제2 등과 같이 서수를 포함하는 용어는 다양한 구성요소를 설명하는데 사용될 수 있지만, 구성요소는 이러한 용어에 의해 한정되지는 않는다. 이들 용어는 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로 사용될 수 있다.
도 1은 일 실시예에 따른 컴퓨터 시스템을 도시한 블록도이다.
도 1을 참조하면, 컴퓨터 시스템(100)은 호스트(110), 메모리(120), 및 적어도 하나의 CXL(Compute Express Link) 장치(150)를 포함할 수 있다. 컴퓨터 시스템(100)은 복수의 사용자에 의해 사용될 수 있으며, 각 사용자는 호스트(110)를 통해 적어도 하나의 CXL 장치(150)를 사용할 수 있다. 적어도 하나의 CXL 장치(150)는 제1 내지 제n CXL 장치(150_1~150_n; n은 1 이상의 자연수)를 포함할 수 있다. 어떤 실시예에서, 컴퓨터 시스템(100)은 개인용 컴퓨터(Personal Computer, PC), 랩탑(laptop) 컴퓨터, 서버(server), 미디어 재생기, 디지털 카메라 등과 같은 사용자 장치들, 또는 내비게이션(navigation), 블랙 박스, 차량용 전장 장치 등과 같은 차량용 장비(automotive device)에 포함될 수 있다. 또는, 컴퓨터 시스템(100)은 휴대용 통신 단말기(mobile phone), 스마트폰(smart phone), 태블릿 PC(tablet Personal Computer), 웨어러블 기기, 헬스케어 기기 또는 사물 인터넷(Internet of Things, IoT) 기기와 같은 모바일(mobile) 시스템일 수 있다.
호스트(110)는 컴퓨터 시스템(100)의 제반 동작을 제어할 수 있다. 일 실시예에서, 호스트(110)는 CPU(Central Processing Unit), GPU(Graphics Processing Unit), NPU(Neural Processing Unit), DPU(Data Processing Unit) 등과 같은 다양한 프로세서들 중 하나일 수 있다. 일 실시예에서, 호스트(110)는 싱글 코어 프로세서 또는 멀티 코어 프로세서를 포함할 수 있다.
일 실시예에서, 적어도 하나의 CXL 장치(150)는 호스트(110)의 캐시 버퍼로서 동작할 수 있다. 즉, 호스트(110)는 적어도 하나의 CXL 장치(150)의 메모리(153_1~153_n)를 캐시 버퍼로 사용할 수 있다.
호스트(110)는 적어도 하나의 CXL 장치(150) 및/또는 메모리(120)에 대한 신호를 생성할 수 있다. 신호는 커맨드와 어드레스를 포함할 수 있다. 어떤 실시예에서, 커맨드들은 기입 커맨드들 또는 판독 커맨드들과 같은 커맨드들을 포함할 수 있다. 어떤 실시예에서, 커맨드는 활성화(activate) 명령, 및 읽기/쓰기 명령을 포함할 수 있다. 어떤 실시예에서, 커맨드는 프리차지(precharge) 명령, 리프레시(refresh) 명령 등을 더 포함할 수 있다.
활성화 명령은 적어도 하나의 CXL 장치(150)에 데이터를 쓰거나 적어도 하나의 CXL 장치(150)로부터 데이터를 읽기 위해 적어도 하나의 CXL 장치(150) 내의 메모리(153_1~153_n)의 대상 행을 액티브 상태로 전환하는 명령일 수 있다. 또는, 활성화 명령은 메모리(120)에 데이터를 쓰거나 메모리(120)로부터 데이터를 읽기 위해 메모리(120) 내의 대상 행을 액티브 상태로 전환하는 명령일 수 있다. 적어도 하나의 CXL 장치(150) 및/또는 메모리(120)는 활성화 명령에 응답하여 대상 행의 메모리 셀이 활성화(예를 들면, 구동)될 수 있다. 읽기/쓰기 명령은 액티브 상태로 전환된 행의 대상 메모리 셀에서 읽기 또는 쓰기 동작을 수행하기 위한 명령일 수 있다.
호스트(110)는 상이한 프로토콜을 사용하여 적어도 하나의 CXL 장치(150)와 통신할 수 있다. 예를 들어, 호스트(110)는 CXL.io 프로토콜, CXL.mem 프로토콜, 및 CXL.cache 프로토콜 중 적어도 하나를 사용하여 적어도 하나의 CXL 장치(150)와 통신할 수 있다.
CXL.io 프로토콜은 적어도 하나의 CXL 장치(150)에서 가장 기본적으로 지원하는 프로토콜일 수 있다. 호스트(110)는 CXL.io 프로토콜을 사용하여 적어도 하나의 CXL 장치(150)의 초기 설정, 메모리 용량 설정, 가상화, 장치 검색 및 연결, 레지스터 접근 등을 수행할 수 있다.
CXL.mem 프로토콜은 호스트(110)가 적어도 하나의 CXL 장치(150)의 메모리(153_1~153_n)에 접근하도록 지원하는 프로토콜일 수 있다. 호스트(110)는 CXL.mem 프로토콜을 사용하여 메모리(153_1~153_n)를 추가 메모리 공간으로 인식할 수 있다. CXL.mem 프로토콜은 휘발성 메모리, 지속성 메모리(persistent memory)와 같은 아키텍처의 메모리(153_1~153_n)를 지원할 수 있다.
CXL.cache 프로토콜은 적어도 하나의 CXL 장치(150)가 호스트(110)의 메모리(120)에 접근하여 캐시 일관성(cache coherence)을 구현하도록 지원하는 프로토콜일 수 있다. CXL.cache 프로토콜은 호스트(110)와 적어도 하나의 CXL 장치(150) 간의 인터랙션을 정의하며, 적어도 하나의 CXL 장치(150)는 호스트(110)의 메모리(120)를 효과적으로 캐싱할 수 있다.
일 실시예에서, 호스트(110)를 사용하는 사용자는 요청자(requester)로서 적어도 하나의 프로세스(process)를 실행할 수 있다. 프로세스의 실행에 의해, 호스트(110)는 제1 신호와 제2 신호를 하나의 CXL 장치(예를 들어, 150_1)에 동시에 전송할 수 있다. 즉, CXL 장치(150_1)는 제1 신호와 제2 신호를 동시에 수신할 수 있다. 제1 신호는 요청자 식별자(requester identifier(ID))를 포함할 수 있다. 제2 신호는 커맨드, 어드레스, 및 메타데이터 필드(metadata field)를 포함할 수 있다. 메타데이터 필드는 요청 타입(request type)에 대한 정보를 포함할 수 있다. 요청 타입은 긴급(emergency) 요청 및 일반(normal) 요청을 포함할 수 있다. 실시예에 따라, 제1 신호와 제2 신호는 추가적인 데이터를 더 포함하는 것으로 구현될 수도 있다. 호스트(110)는 CXL.io 프로토콜을 사용하여 적어도 하나의 CXL 장치(150)에 제1 신호를 전송할 수 있다. 호스트(110)는 CXL.mem 프로토콜을 사용하여 적어도 하나의 CXL 장치(150)에 제1 신호와 상이한 제2 신호를 전송할 수 있다.
적어도 하나의 CXL 장치(150)는 복수의 커맨드가 스케줄링된 커맨드 큐(queue)를 생성할 수 있다. 커맨드 큐는 선입선출되는 커맨드 대기열로 이해될 수 있다. 적어도 하나의 CXL 장치(150)는 커맨드 큐에 기초하여 동작할 수 있다. 어떤 실시예에서, 제1 신호 및 제2 신호를 수신한 CXL 장치(150_1)는 제1 신호 및 제2 신호에 기초하여, (제2 신호에 포함된 커맨드와 CXL 장치(150_1)의 커맨드 큐에 스캐줄링된) 복수의 커맨드를 스케줄링할 수 있다.
CXL 프로토콜은 비결정적 레이턴시(non-deterministic latency)로 동작하므로, 종래의 컴퓨터 시스템에서 CXL 장치는 호스트가 출력하는 복수의 커맨드를 순서대로 처리하였다. 반면에, 일 실시예에 따른 컴퓨터 시스템(100)은 제1 신호 및 제2 신호에 기초하여 복수의 커맨드를 스케줄링하므로, CXL 프로토콜이 비결정적 레이턴시로 동작하더라도, 적어도 하나의 CXL 장치(150)가 긴급한 프로세스를 우선적으로 처리할 수 있는 이점이 있다. 적어도 하나의 CXL 장치(150)가 제1 신호 및 제2 신호를 사용하여 복수의 커맨드를 스케줄링하는 구성에 대해서는 도 2 내지 도 5를 참조하여 후술한다.
메모리(120)는 컴퓨터 시스템(100)의 메인 메모리 또는 시스템 메모리로서 사용될 수 있다. 일 실시예에서, 메모리(120)는 DRAM(Dynamic Random Access Memory) 장치일 수 있으며, DIMM(Dual In-line Memory Module)의 폼 팩터를 가질 수 있다. 그러나 본 발명은 이에 한정되는 것은 아니며, 메모리(120)는 플래시 메모리, PRAM, RRAM, MRAM 등과 같은 비휘발성 메모리를 포함할 수 있다.
어떤 실시예에서, 호스트(110)는 메모리(120)와 직접 연결될 수 있다. 어떤 실시예에서, 메모리(120)는 DDR 인터페이스를 통해 호스트(110)와 직접 통신할 수 있다. 일 실시예에서, 호스트(110)는 메모리(120)를 제어하도록 구성된 메모리 컨트롤러를 포함할 수 있다. 그러나 본 발명은 이에 한정되는 것은 아니며, 메모리(120)는 다양한 인터페이스를 통해 호스트(110)와 통신할 수 있다.
적어도 하나의 CXL 장치(150)는 CXL 컨트롤러(151_1~151_n) 및 메모리(153_1~153_n)를 포함할 수 있다. 일 실시예에서, 메모리(153_1~153_n)는 적어도 하나의 CXL 장치(150) 각각의 캐시 버퍼로서 동작할 수 있다. 즉, 적어도 하나의 CXL 장치(150)는 각각의 메모리(153_1~153_n)를 캐시 버퍼로 사용할 수 있다.
CXL 컨트롤러(151_1~151_n)는 ASIC(Application Specific Integrated Circuit) 및/또는 FPGA(Field-Programmable Gate Array) 구현을 위해 설계된 IP(Intellectual Property) 회로를 포함할 수 있다. 다양한 실시예에서, CXL 컨트롤러(151_1~151_n)는 CXL 프로토콜(예컨대, CXL 2.0 프로토콜, CXL 3.0 프로토콜, 또는 임의의 다른 버전)을 지원하도록 구현될 수 있다. CXL 컨트롤러(151_1~151_n)는 CXL 패킷과 메모리(120)의 메모리 인터페이스의 신호들을 서로 변환할 수 있다.
일 실시예에서, 적어도 하나의 CXL 장치(150) 각각은 개별적인 메모리 장치 또는 메모리 모듈로 구현될 수 있다. 적어도 하나의 CXL 장치(150) 각각은 서로 다른 물리 포트들을 통해 CXL 인터페이스(140)와 연결될 수 있다. 즉, 적어도 하나의 CXL 장치(150)가 CXL 인터페이스(140)와 연결됨으로써, 호스트(110)에 의해 관리되는 메모리 영역이 고용량화될 수 있다.
메모리(153_1~153_n)는 DRAM(Dynamic Random Access Memory), NAND(Not-AND) 플래시 메모리(flash memory), HBM(High Bandwidth Memory), HMC(Hybrid Memory Cube), DIMM(Dual In-line Memory Module), Optane DIMM, NVMDIMM(Non-Volatile Memory DIMM), DDR SDRAM(Double Data Rate Synchronous DRAM), 및 LPDDR SDRAM(Low-Power Double Data Rate Synchronous Dynamic Random Access Memory) 중 하나 또는 이들의 조합을 포함할 수 있다.
일 실시예에서, 호스트(110), 및 적어도 하나의 CXL 장치(150)는 동일한 인터페이스를 서로 공유하도록 구성될 수 있다. 예를 들어, 호스트(110) 및 적어도 하나의 CXL 장치(150)는 CXL 인터페이스(140)를 통해 서로 통신할 수 있다. 일 실시예에서, CXL 인터페이스(140)(Compute Express Link interface)는 일관성(coherency), 메모리 액세스(memory access), 및 입출력 프로토콜(IO protocol)의 동적 프로토콜 다중화(dynamic protocol muxing)를 지원하여 가속기들, 메모리 장치들, 또는 다양한 전자 장치들 사이의 다양한 연결을 가능하게 하는 저지연(low-latency) 및 고대역폭(high-bandwidth) 링크를 가리킬 수 있다.
도 1에서는 호스트(110) 및 적어도 하나의 CXL 장치(150)는 CXL 인터페이스(140)를 통해 서로 통신하는 것으로 설명하였으나, 반드시 이에 한정되는 것은 아니며, 호스트(110) 및 적어도 하나의 CXL 장치(150)는 GEN-Z 프로토콜, NVLink 프로토콜, CCIX 프로토콜, Open CAPI 프로토콜 등과 같은 다양한 컴퓨팅 인터페이스를 기반으로 서로 통신할 수 있다.
도 2는 일 실시예에 따른 호스트 및 CXL 장치의 동작을 설명하기 위한 도면이고, 도 3은 일 실시예에 따른 CXL 장치의 개략적인 블록도이다.
도 2를 참조하면, 일 실시예에 따른 호스트(200)는 적어도 하나의 요청자에 의해 사용되며, 복수의 프로세스를 실행할 수 있다. 복수의 프로세스는 적어도 하나의 요청자에 각각 대응할 수 있다. 각각의 프로세스는 커맨드를 생성하여 CXL 장치(300)에 전송할 수 있다. 즉, CXL 장치(300)는 복수의 프로세스로부터 복수의 커맨드를 수신할 수 있다. CXL 장치(300)는 처리 정책에 따라 복수의 커맨드를 스케줄링하여 처리할 수 있다. 예를 들어, 처리 정책은 요청자의 우선순위, 요청 타입 등을 포함할 수 있다.
호스트(200)는 상이한 프로토콜을 사용하여 CXL 장치(300)에 제1 신호 및 제2 신호를 전송할 수 있다. 예를 들어, 호스트(200)는 CXL.io 프로토콜을 사용하여 제1 신호를 CXL 장치(300)에 전송하고, CXL.mem 프로토콜을 사용하여 제2 신호를 CXL 장치(300)에 전송할 수 있다. 제1 신호는 요청자 식별자를 포함할 수 있다. 제2 신호는 커맨드, 어드레스, 및 메타데이터 필드를 포함할 수 있다. 실시예에 따라, 제1 신호와 제2 신호는 추가적인 데이터를 더 포함하는 것으로 구현될 수도 있다.
CXL 장치(300)는 제1 신호를 수신하는 요청 레지스터(request register; 310)와, 제2 신호를 수신하는 체커 모듈(checker module; 320)을 포함할 수 있다. 요청 레지스터(310)가 제1 신호를 수신하는 시간과, 체커 모듈(320)이 제2 신호를 수신하는 시간은 동일할 수 있다. 요청 레지스터(310)는 제1 신호에 기초하여 요청자의 우선순위를 체커 모듈(320)에 전송할 수 있다. 체커 모듈(320)은 제2 신호 및 요청자의 우선순위에 기초하여 복수의 커맨드의 우선순위를 결정할 수 있다. 다시 말해, CXL 장치(300)는 제1 신호 및 제2 신호에 기초하여 호스트(200)의 복수의 프로세스가 출력하는 복수의 커맨드를 스케줄링할 수 있다. CXL 장치(300)는 스케줄링된 커맨드에 기초하여 메모리의 동작을 제어할 수 있다.
도 3을 참조하면, 일 실시예에 따른 CXL 장치(300)는 요청 레지스터(310), 체커 모듈(320), 커맨드 생성기(command generator; 330), 메모리 컨트롤러(memory controller; 340), 및 메모리(memory; 350)를 포함할 수 있다.
요청 레지스터(310)는 호스트(200)를 사용하는 복수의 요청자(또는 복수의 프로세스)의 요청자 ID 및 요청자 ID에 대응하는 우선순위를 저장할 수 있다. 호스트(200)는 CXL.io 프로토콜을 사용하여 복수의 요청자 ID 및 우선순위를 요청 레지스터(310)에 기록할 수 있다. 복수의 요청자는 우선순위가 상이할 수 있다. 예를 들어, 복수의 요청자는 상이한 서비스 협약 수준(Service-Level Agreement, SLA)으로 호스트(200)를 사용할 수 있다. 호스트(200)는 SLA에 기초하여 복수의 요청자의 우선순위를 결정할 수 있다. 호스트(200)는 상대적으로 짧은 시간의 SLA를 가지는 요청자의 우선순위를 높게 결정하고, 상대적으로 긴 시간의 SLA를 가지는 요청자의 우선순위를 낮게 결정할 수 있다. 실시예에 따라, 호스트(200)는 우선적으로 처리되어야 하는 요청자의 요청자 ID에 대해서만 요청 레지스터(310)에 기록할 수도 있다.
요청 레지스터(310)는 호스트(200)로부터 제1 신호를 수신하면, 제1 신호에 포함된 요청자 식별자에 대응하는 요청자의 우선순위를 체커 모듈(320)에 전송할 수 있다.
체커 모듈(320)은 처리 정책에 따라 호스트(200)의 복수의 커맨드의 우선순위를 결정할 수 있다. 예를 들어, 처리 정책은 요청자의 우선순위, 요청 타입 등을 포함할 수 있다.
체커 모듈(320)은 요청 레지스터(310)로부터 요청자의 우선순위를 수신할 수 있다. 체커 모듈(320)은 호스트(200)로부터 커맨드, 어드레스, 및 메타데이터 필드를 포함하는 제2 신호를 수신할 수 있다. 호스트(200)는 긴급 요청에 대해 메타데이터 필드를 제1 값으로 채울 수 있다. 호스트(200)는 일반 요청에 대해 메타데이터 필드를 제2 값으로 채울 수 있다. 제1 값과 제2 값은 상이할 수 있다. 일 실시예에서, 제1 값은 '1'이고, 제2 값은 '0'일 수 있다. 하지만, 반드시 이에 한정되는 것은 아니고, 제1 값은 '0'이고, 제2 값은 '1'일 수 있다.
일 실시예에서, 메타데이터 필드는 2비트(bit)일 수 있다. 호스트(200)는 긴급 요청에 대해 메타데이터 필드를 제3 값으로 채울 수 있다. 예를 들어, 제3 값은 '11', '10', '01', 또는 '00' 중 어느 하나의 값일 수 있다. 호스트(200)는 일반 요청에 대해 메타데이터 필드를 제3 값과 상이한 제4 값으로 채울 수 있다. 예를 들어, 제3 값은 '10'이고, 제4 값은 '01'일 수 있으나, 본 발명의 실시예가 반드시 이에 한정되는 것은 아니다.
체커 모듈(320)은 요청자의 우선순위 및 요청 타입(또는 메타데이터 필드의 값)에 기초하여 복수의 커맨드의 우선순위를 결정할 수 있다. 예를 들어, 체커 모듈(320)은 표 1과 같이 복수의 커맨드의 우선순위를 결정할 수 있다. 표 1에서는 커맨드의 우선순위의 숫자가 낮을수록 우선적으로 처리되어야 함을 나타낼 수 있다. 즉, 숫자가 작을수록 우선순위가 높을 수 있다.
표 1을 참조하면, 체커 모듈(320)은 요청 타입이 긴급(emergency)인 커맨드의 우선순위를 요청 타입이 일반(normal)인 커맨드의 우선순위보다 높게 결정할 수 있다. 체커 모듈(320)은 요청자 우선순위가 높은(high) 커맨드의 우선순위를 요청자 우선순위가 낮은(low) 커맨드의 우선순위보다 높게 결정할 수 있다.
체커 모듈(320)은 복수의 커맨드의 우선순위를 결정할 때, 1차적으로 요청 타입을 고려하고, 2차적으로 요청자 우선순위를 고려할 수 있다. 즉, 체커 모듈(320)은 우선적으로 요청 타입이 긴급인 커맨드의 우선순위를 요청 타입이 일반인 커맨드의 우선순위보다 높게 결정할 수 있다. 그 후, 체커 모듈(320)은 요청 타입이 같은 커맨드들에 대해서, 요청자 우선순위가 높은 커맨드의 우선순위를 요청자 우선순위가 낮은 커맨드의 우선순위보다 높게 결정할 수 있다.
즉, 체커 모듈(320)은 요청 타입이 긴급이고 요청자 우선순위가 높은 커맨드의 우선순위를 '1'로 결정하고, 요청 타입이 긴급이고 요청자 우선순위가 낮은 커맨드의 우선순위를 '2'로 결정하고, 요청 타입이 일반이고 요청자 우선순위가 높은 커맨드의 우선순위를 '3'으로 결정하고, 요청 타입이 일반이고 요청자 우선순위가 낮은 커맨드의 우선순위를 '4'로 결정할 수 있다.
본 실시예에서는 체커 모듈(320)이 1차적으로 요청 타입을 고려하고, 2차적으로 요청자 우선순위를 고려하는 것으로 설명하였으나, 반드시 이에 한정되는 것은 아니고, 체커 모듈(320)이 1차적으로 요청자 우선순위를 고려하고, 2차적으로 요청 타입을 고려하는 것으로 구현될 수도 있다.
일 실시예에서, 호스트(200)가 우선적으로 처리되어야 하는 요청자의 ID에 대해서만 요청 레지스터(310)에 기록한 경우, 표 1에서 요청자 우선순위는 예(YES) 또는 아니오(NO)로 구분될 수 있다. 이 경우, 예/아니오는 상술한 높음(high)/낮음(low)에 각각 대응될 수 있다.
체커 모듈(320)은 복수의 커맨드, 복수의 어드레스, 및 복수의 커맨드의 우선순위를 커맨드 생성기(330)에 전송할 수 있다.
커맨드 생성기(330)는 복수의 커맨드, 복수의 어드레스, 및 복수의 커맨드의 우선순위에 기초하여 내부 커맨드를 생성할 수 있다. 내부 커맨드는 커맨드 타입, 어드레스, 및 우선순위에 대한 정보를 포함할 수 있다. 커맨드 생성기(330)는 내부 커맨드를 메모리 컨트롤러(340)에 전송할 수 있다. 실시예에 따라, 커맨드 생성기(330)는 메모리 컨트롤러(340) 내부에 배치되는 것으로 구현될 수도 있다.
메모리 컨트롤러(340)는 복수의 내부 커맨드를 스케줄링하여 커맨드 큐를 생성할 수 있다. 메모리 컨트롤러(340)는 커맨드의 우선순위에 따라 스케줄링을 수행할 수 있다. 예를 들어, 메모리 컨트롤러(340)는 우선순위에 따라 커맨드를 처리하는 휴리스틱 스케줄러(Heuristic scheduler)를 포함할 수 있다. 메모리 컨트롤러(340)는 휴리스틱 스케줄러를 사용하여 커맨드 큐를 생성할 수 있다. 일 실시예에서, 메모리 컨트롤러(340)는 우선순위가 높은 내부 커맨드를 커맨드 큐의 우측에 배치할 수 있다. 메모리 컨트롤러(340)는 우선순위가 낮은 내부 커맨드를 커맨드 큐의 좌측에 배치할 수 있다. 이 경우, 메모리 컨트롤러(340)는 커맨드 큐에 기초하여 우측부터 순차적으로 내부 커맨드를 메모리(350)에 전송할 수 있다.
메모리(350)는 내부 커맨드에 기초하여 동작할 수 있다. 긴급한 프로세스에 대한 내부 커맨드는 커맨드 큐의 우측에 배치되어 우선적으로 메모리(350)에 전송되므로, 메모리(350)는 긴급한 프로세스를 먼저 처리할 수 있게 된다. 즉, 종래의 CXL 장치는 긴급한 프로세스라고 하더라도 우선적으로 처리하지 못한 반면에, 일 실시예에 따른 CXL 장치(300)는 긴급한 프로세스를 우선적으로 처리할 수 있는 이점이 있다.
도 4는 일 실시예에 따른 호스트 및 CXL 장치의 동작을 설명하기 위한 도면이고, 도 5는 일 실시예에 따른 CXL 장치의 개략적인 블록도이다.
도 4를 참조하면, 일 실시예에 따른 호스트(400)는 적어도 하나의 요청자에 의해 사용되며, 복수의 프로세스를 실행할 수 있다. 복수의 프로세스는 적어도 하나의 요청자에 각각 대응할 수 있다. 각각의 프로세스는 제1 커맨드를 생성하여 CXL 장치(500)에 전송할 수 있다. 즉, CXL 장치(500)는 복수의 프로세스로부터 복수의 제1 커맨드를 수신할 수 있다. 또한, CXL 장치(500)는 CXL 장치(500) 내의 가속기(accelerator; 530)가 출력하는 복수의 제2 커맨드를 처리할 수도 있다. CXL 장치(500)는 처리 정책에 따라 제1 커맨드 및 제2 커맨드를 포함하는 복수의 커맨드를 스케줄링하여 처리할 수 있다. 예를 들어, 처리 정책은 요청자의 우선순위, 요청 타입 등을 포함할 수 있다.
호스트(400)는 상이한 프로토콜을 사용하여 CXL 장치(500)에 제1 신호 및 제2 신호를 전송할 수 있다. 예를 들어, 호스트(400)는 CXL.io 프로토콜을 사용하여 제1 신호를 CXL 장치(500)에 전송하고, CXL.mem 프로토콜을 사용하여 제2 신호를 CXL 장치(500)에 전송할 수 있다. 제1 신호는 요청자 식별자를 포함할 수 있다. 제2 신호는 제1 커맨드, 어드레스, 및 메타데이터 필드를 포함할 수 있다.
가속기(530)는 CXL.mem 프로토콜을 사용하여 제3 신호를 CXL 장치(500)의 체커 모듈(checker module; 520)에 전송할 수 있다. 제3 신호는 제2 커맨드, 어드레스, 및 메타데이터 필드를 포함할 수 있다. 실시예에 따라, 가속기(530)는 CXL 장치(500)의 외부에 배치되는 것으로 구현될 수도 있다. 또한, 실시예에 따라, 제1 신호, 제2 신호, 및 제3 신호는 추가적인 데이터를 더 포함하는 것으로 구현될 수도 있다.
CXL 장치(500)는 제1 신호를 수신하는 요청 레지스터(510)와, 제2 신호 및 제3 신호를 수신하는 체커 모듈(520)을 포함할 수 있다. 요청 레지스터(510)가 제1 신호를 수신하는 시간과, 체커 모듈(520)이 제2 신호를 수신하는 시간은 동일할 수 있다. 요청 레지스터(510)는 제1 신호에 기초하여 요청자의 우선순위를 체커 모듈(520)에 전송할 수 있다. 체커 모듈(520)은 제2 신호 및 요청자의 우선순위에 기초하여 복수의 제1 커맨드의 우선순위를 결정할 수 있다.
CXL 장치(500)는 제1 신호, 제2 신호, 및 제3 신호에 기초하여 호스트(400)의 복수의 프로세스가 출력하는 복수의 제1 커맨드와 가속기(530)가 출력하는 복수의 제2 커맨드를 스케줄링할 수 있다. CXL 장치(500)는 스케줄링된 커맨드에 기초하여 메모리의 동작을 제어할 수 있다.
도 5를 참조하면, 일 실시예에 따른 CXL 장치(500)는 요청 레지스터(510), 체커 모듈(520), 가속기(530), 커맨드 생성기(command generator; 540), 메모리 컨트롤러(memory controller; 550), 및 메모리(memory; 560)를 포함할 수 있다.
요청 레지스터(510)는 호스트(400)를 사용하는 복수의 요청자(또는 복수의 프로세스)의 요청자 ID 및 요청자 ID에 대응하는 우선순위를 저장할 수 있다. 호스트(400)는 CXL.io 프로토콜을 사용하여 복수의 요청자 ID 및 우선순위를 요청 레지스터(510)에 기록할 수 있다. 복수의 요청자는 우선순위가 상이할 수 있다. 예를 들어, 복수의 요청자는 상이한 서비스 협약 수준(Service-Level Agreement, SLA)으로 호스트(400)를 사용할 수 있다. 호스트(400)는 SLA에 기초하여 복수의 요청자의 우선순위를 결정할 수 있다. 호스트(400)는 상대적으로 짧은 시간의 SLA를 가지는 요청자의 우선순위를 높게 결정하고, 상대적으로 긴 시간의 SLA를 가지는 요청자의 우선순위를 낮게 결정할 수 있다. 실시예에 따라, 호스트(400)는 우선적으로 처리되어야 하는 요청자의 요청자 ID에 대해서만 요청 레지스터(510)에 기록할 수도 있다.
요청 레지스터(510)는 호스트(400)로부터 제1 신호를 수신하면, 제1 신호에 포함된 요청자 식별자에 대응하는 요청자의 우선순위를 체커 모듈(520)에 전송할 수 있다.
체커 모듈(520)은 요청 레지스터(510)로부터 요청자의 우선순위를 수신할 수 있다. 체커 모듈(520)은 호스트(400)로부터 제1 커맨드, 어드레스, 및 메타데이터 필드를 포함하는 제2 신호를 수신할 수 있다. 체커 모듈(520)은 가속기(530)로부터 제2 커맨드, 어드레스, 및 메타데이터 필드를 포함하는 제3 신호를 수신할 수 있다. 메타데이터 필드는 요청 타입(request type)에 대한 정보를 포함할 수 있다. 요청 타입은 긴급(emergency) 요청 및 일반(normal) 요청을 포함할 수 있다. 예를 들어, 호스트(400)와 가속기(530)는 메타데이터 필드에 상이한 값을 채움으로써 체커 모듈(520)에 긴급 여부를 지시할 수 있다. 예를 들어, 2비트의 메타데이터 필드에서, '10'은 긴급 요청을 지시하고, '01'은 일반 요청을 지시할 수 있다. 하지만, 본 발명의 실시예가 반드시 이에 한정되는 것은 아니다.
체커 모듈(520)은 처리 정책에 따라 호스트(400)와 가속기(530)가 출력하는 복수의 커맨드의 우선순위를 결정할 수 있다. 예를 들어, 처리 정책은 요청자의 우선순위, 요청 타입 등을 포함할 수 있다.
체커 모듈(520)은 요청자의 우선순위 및 요청 타입(또는 메타데이터 필드의 값)에 기초하여 복수의 커맨드의 우선순위를 결정할 수 있다. 예를 들어, 체커 모듈(520)은 표 2와 같이 복수의 커맨드의 우선순위를 결정할 수 있다. 표 2에서는 커맨드의 우선순위의 숫자가 낮을수록 우선적으로 처리되어야 함을 나타낼 수 있다. 즉, 숫자가 작을수록 우선순위가 높을 수 있다.
표 2를 참조하면, 체커 모듈(520)은 요청 타입이 긴급(emergency)인 커맨드의 우선순위를 요청 타입이 일반(normal)인 커맨드의 우선순위보다 높게 결정할 수 있다. 체커 모듈(520)은 요청자 우선순위가 높은(high) 커맨드의 우선순위를 요청자 우선순위가 낮은(low) 커맨드의 우선순위보다 높게 결정할 수 있다.
체커 모듈(520)은 복수의 커맨드의 우선순위를 결정할 때, 1차적으로 요청 타입을 고려하고, 2차적으로 요청자 우선순위를 고려하며, 3차적으로 커맨드 소스를 고려할 수 있다. 즉, 체커 모듈(520)은 우선적으로 요청 타입이 긴급인 커맨드의 우선순위를 요청 타입이 일반인 커맨드의 우선순위보다 높게 결정할 수 있다. 그 후, 체커 모듈(520)은 요청 타입이 같은 커맨드들에 대해서, 요청자 우선순위가 높은 커맨드의 우선순위를 요청자 우선순위가 낮은 커맨드의 우선순위보다 높게 결정할 수 있다. 체커 모듈(520)은 요청 타입이 긴급인 커맨드들 중, 호스트(400)의 커맨드의 우선순위를 가속기(530)의 커맨드의 우선순위보다 높게 결정할 수 있다. 또한, 체커 모듈(520)은 요청 타입이 일반인 커맨드들 중, 가속기(530)의 커맨드의 우선순위와 요청자 우선순위가 낮은 호스트(400)의 커맨드의 우선순위를 동일하게 결정할 수 있다.
즉, 체커 모듈(520)은 요청 타입이 긴급이고 요청자 우선순위가 높은, 호스트(400)의 커맨드의 우선순위를 '1'로 결정하고, 요청 타입이 긴급이고 요청자 우선순위가 낮은, 호스트(400)의 커맨드의 우선순위를 '2'로 결정하고, 요청 타입이 긴급인, 가속기(530)의 커맨드의 우선순위를 '3'으로 결정하고, 요청 타입이 일반이고 요청자 우선순위가 높은, 호스트(400)의 커맨드의 우선순위를 '4'로 결정하고, 요청 타입이 일반이고 요청자 우선순위가 낮은, 호스트(400)의 커맨드의 우선순위 및 요청 타입이 일반인, 가속기(530)의 커맨드의 우선순위를 '5'로 결정할 수 있다. 요청 타입이 일반이고 요청자 우선순위가 낮은, 호스트(400)의 커맨드 및 요청 타입이 일반인, 가속기(530)의 커맨드는 우선순위가 동일하므로, CXL 장치(500)는 시간 순서에 따라 커맨드 우선순위가 동일한 커맨드들을 처리할 수 있다.
본 실시예에서는 체커 모듈(520)이 1차적으로 요청 타입을 고려하고, 2차적으로 요청자 우선순위를 고려하는 것으로 설명하였으나, 반드시 이에 한정되는 것은 아니고, 체커 모듈(520)이 1차적으로 요청자 우선순위를 고려하고, 2차적으로 요청 타입을 고려하는 것으로 구현될 수도 있다.
일 실시예에서, 호스트(400)가 우선적으로 처리되어야 하는 요청자의 ID에 대해서만 요청 레지스터(510)에 기록한 경우, 표 2에서 요청자 우선순위는 예(YES) 또는 아니오(NO)로 구분될 수 있다. 이 경우, 예/아니오는 상술한 높음(high)/낮음(low)에 각각 대응될 수 있다.
체커 모듈(520)은 복수의 커맨드, 복수의 어드레스, 및 복수의 커맨드의 우선순위를 커맨드 생성기(540)에 전송할 수 있다.
커맨드 생성기(540)는 복수의 커맨드, 복수의 어드레스, 및 복수의 커맨드의 우선순위에 기초하여 내부 커맨드를 생성할 수 있다. 내부 커맨드는 커맨드 타입, 어드레스, 및 우선순위에 대한 정보를 포함할 수 있다. 커맨드 생성기(540)는 내부 커맨드를 메모리 컨트롤러(550)에 전송할 수 있다. 실시예에 따라, 커맨드 생성기(540)는 메모리 컨트롤러(550) 내부에 배치되는 것으로 구현될 수도 있다.
메모리 컨트롤러(550)는 복수의 내부 커맨드를 스케줄링하여 커맨드 큐를 생성할 수 있다. 메모리 컨트롤러(550)는 커맨드의 우선순위에 따라 스케줄링을 수행할 수 있다. 예를 들어, 메모리 컨트롤러(550)는 우선순위에 따라 커맨드를 처리하는 휴리스틱 스케줄러(Heuristic scheduler)를 포함할 수 있다. 메모리 컨트롤러(550)는 휴리스틱 스케줄러를 사용하여 커맨드 큐를 생성할 수 있다. 일 실시예에서, 메모리 컨트롤러(550)는 우선순위가 높은 내부 커맨드를 커맨드 큐의 우측에 배치할 수 있다. 메모리 컨트롤러(550)는 우선순위가 낮은 내부 커맨드를 커맨드 큐의 좌측에 배치할 수 있다. 이 경우, 메모리 컨트롤러(550)는 커맨드 큐에 기초하여 우측부터 순차적으로 내부 커맨드를 메모리(560)에 전송할 수 있다.
메모리(560)는 내부 커맨드에 기초하여 동작할 수 있다. 긴급한 프로세스에 대한 내부 커맨드는 커맨드 큐의 우측에 배치되어 우선적으로 메모리(560)에 전송되므로, 메모리(560)는 긴급한 프로세스를 먼저 처리할 수 있게 된다. 즉, 종래의 CXL 장치는 긴급한 프로세스라고 하더라도 우선적으로 처리하지 못한 반면에, 일 실시예에 따른 CXL 장치(500)는 긴급한 프로세스를 우선적으로 처리할 수 있는 이점이 있다.
도 6은 일 실시예에 따른 스케줄링 방법의 순서도를 나타낸다.
도 6을 참조하면, 일 실시예에 따른 스케줄링 방법은 CXL 장치에 의해 수행될 수 있다. CXL 장치는 일 실시예에 따른 스케줄링 방법을 사용하여 커맨드를 스케줄링하고, 스케줄링에 따라 메모리를 동작시킬 수 있다. 예를 들어, CXL 장치는 호스트 및 가속기 중 적어도 하나로부터 커맨드를 수신하고, 우선순위에 따라 상기 커맨드를 스케줄링할 수 있다.
CXL 장치는 제1 프로토콜을 사용하여 호스트로부터 요청자 식별자를 수신할 수 있다(S610). 제1 프로토콜은 CXL.io 프로토콜일 수 있다. 호스트는 적어도 하나의 요청자에 의해 사용되며, 적어도 하나의 요청자는 호스트를 사용하여 적어도 하나의 프로세스를 실행할 수 있다. 적어도 하나의 프로세스는 CXL 장치에 커맨드, 어드레스, 요청자 식별자 등의 정보를 포함하는 신호를 전송할 수 있다.
CXL 장치는 미리 결정된 요청자 우선순위에 기초하여 요청자 식별자에 대응하는 제1 우선순위를 결정할 수 있다(S620). CXL 장치는 미리 결정된 요청자 우선순위를 저장하는 요청 레지스터를 포함할 수 있다. 일 실시예에서, 요청 레지스터는 복수의 요청자들 간의 우선순위를 수치로 저장할 수 있다. 일 실시예에서, 요청 레지스터는 복수의 요청자들의 우선순위를 높음 또는 낮음으로 분류하여 저장할 수 있다. 일 실시예에서, 요청 레지스터는 복수의 요청자들 중 우선적으로 처리되어야 하는 요청자에 대해 우선순위가 있음 또는 없음으로 분류하여 저장할 수 있다. 요청 레지스터는 미리 결정된 요청자 우선순위에서 요청자 식별자에 대응하는 제1 우선순위를 출력할 수 있다.
CXL 장치는 제1 프로토콜과 상이한 제2 프로토콜을 사용하여 호스트로부터 커맨드 및 요청 타입을 포함하는 신호를 수신할 수 있다(S630). 제2 프로토콜은 CXL.mem 프로토콜일 수 있다. 커맨드는 활성화 명령, 읽기/쓰기 명령, 프리차지 명령, 리프레시 명령 등을 포함할 수 있다. 요청 타입은 긴급 요청 및 일반 요청을 포함할 수 있다. 제2 프로토콜을 사용하여 수신되는 신호는 메타데이터 필드를 포함하며, 메타데이터 필드에서의 상이한 값을 통해 긴급 요청과 일반 요청이 구분될 수 있다. 제2 프로토콜을 사용하여 수신되는 신호는 커맨드에 대응하는 어드레스를 더 포함할 수 있다.
CXL 장치는 제1 우선순위 및 요청 타입에 기초하여 커맨드의 제2 우선순위를 결정할 수 있다(S640). CXL 장치는 1차적으로 요청 타입에 기초하여 제2 우선순위를 결정할 수 있다. CXL 장치는 요청 타입이 긴급 요청인 커맨드의 제2 우선순위를 요청 타입이 일반 요청인 커맨드의 제2 우선순위보다 높게 결정할 수 있다. CXL 장치는 요청 타입이 동일하면, 제1 우선순위에 기초하여 제2 우선순위를 결정할 수 있다. 예를 들어, CXL 장치는 제1 커맨드 및 제2 커맨드 각각의 제2 우선순위를 결정할 수 있다. 제1 커맨드의 요청 타입이 긴급 요청이고, 제1 우선순위가 높음이고, 제2 커맨드의 요청 타입이 긴급 요청이고, 제2 우선순위가 낮음일 수 있다. CXL 장치는 제1 커맨드의 제2 우선순위를 제2 커맨드의 제2 우선순위보다 높게 결정할 수 있다. 제1 커맨드 및 제2 커맨드의 요청 타입이 일반 요청인 경우에도 상술한 내용이 유사하게 적용될 수 있다.
CXL 장치는 커맨드로부터 내부 커맨드를 생성할 수 있다(S650). CXL 장치는 내부 커맨드들을 배치한 커맨드 큐를 생성할 수 있다. 커맨드 큐는 내부 커맨드의 대기열로 이해될 수 있다. 일 실시예에서, CXL 장치는 제2 우선순위가 높은 내부 커맨드를 우측에 배치하고, 제2 우선순위가 낮은 내부 커맨드를 좌측에 배치할 수 있다. CXL 장치는 제2 우선순위가 동일한 내부 커맨드를 수신된 시간 순서로 우측부터 배치할 수 있다. CXL 장치는 제2 우선순위에 기초하여 내부 커맨드를 스케줄링하여 메모리에 전송할 수 있다.
도 7은 일 실시예에 따른 스케줄링 방법의 순서도를 나타낸다.
도 7을 참조하면, 일 실시예에 따른 CXL 장치는 가속기로부터 커맨드 및 요청 타입을 포함하는 신호를 수신할 수 있다(S635). CXL 장치가 가속기로부터 수신하는 커맨드를 호스트로부터 수신하는 커맨드와 구별하기 위해 가속기 커맨드(COMMAND_ACC)로 표현할 수 있다.
일 실시예에서, CXL 장치는 호스트로부터 제1 커맨드 및 제2 커맨드를 수신하고, 가속기로부터 제3 커맨드를 수신할 수 있다. CXL 장치는 제1 내지 제3 커맨드의 제2 우선순위를 결정할 수 있다. 예를 들어, CXL 장치는 제1 커맨드의 요청 타입, 제1 커맨드의 제1 우선순위, 제2 커맨드의 요청 타입, 제2 커맨드의 제1 우선순위, 및 제3 커맨드의 요청 타입에 기초하여 제1 커맨드의 제2 우선순위, 제2 커맨드의 제2 우선순위, 및 제3 커맨드의 제2 우선순위를 결정할 수 있다.
CXL 장치는 제1 커맨드의 요청 타입과 제2 커맨드의 요청 타입이 동일하면, 제1 커맨드의 제1 우선순위 및 제2 커맨드의 제1 우선순위에 기초하여 제1 커맨드의 제2 우선순위 및 제2 커맨드의 제2 우선순위를 결정할 수 있다.
CXL 장치는 요청 타입이 긴급 요청인 커맨드의 제2 우선순위를, 요청 타입이 일반 요청인 커맨드의 제2 우선순위보다 높게 결정할 수 있다.
CXL 장치는 제1 커맨드의 요청 타입 및 제3 커맨드의 요청 타입이 긴급 요청이면, 제1 커맨드의 제2 우선순위를 제3 커맨드의 제2 우선순위보다 높게 결정할 수 있다.
CXL 장치는 제1 커맨드의 요청 타입 및 제3 커맨드의 요청 타입이 일반 요청이고, 제1 커맨드의 제1 우선순위가 높음이면, 제1 커맨드의 제2 우선순위를 제3 커맨드의 제2 우선순위보다 높게 결정할 수 있다.
CXL 장치는 제1 커맨드의 요청 타입 및 제3 커맨드의 요청 타입이 일반 요청이고, 제1 커맨드의 제1 우선순위가 낮음이면, 제1 커맨드의 제2 우선순위와 제3 커맨드의 제2 우선순위를 동일하게 결정할 수 있다. CXL 장치는 제2 우선순위가 동일한 제1 커맨드 및 제3 커맨드를 수신한 시간 순서대로 처리할 수 있다.
도 8은 다른 실시예에 따른 컴퓨터 시스템을 나타낸 블록도이다.
도 8을 참조하면, 컴퓨터 시스템(1000)은 제1 CPU(1010a), 제2 CPU(1010b), GPU(1030), NPU(1040), CXL 스위치(1015), CXL 메모리(1050), CXL 스토리지(1052), PCIe 장치(1054), 및 가속기(CXL 장치)(1056)를 포함할 수 있다.
제1 CPU(1010a), 제2 CPU(1010b), GPU(1030), NPU(1040), CXL 메모리(1050), CXL 스토리지(1052), PCIe 장치(1054), 및 가속기(1056)는 CXL 스위치(1015)에 공통으로 연결될 수 있으며, 각각은 CXL 스위치(1015)를 통해 서로 통신할 수 있다.
일 실시예에서, 제1 CPU(1010a), 제2 CPU(1010b), GPU(1030), 및 NPU(1040) 각각은 도 1 내지 도 7을 참조하여 설명된 호스트일 수 있으며, 각각은 개별적인 메모리들(1020a, 1020b, 1020c, 1020d, 1020e)과 직접 연결될 수 있다.
일 실시예에서, CXL 메모리(1050) 및 CXL 스토리지(1052)는 도 1 내지 도 7을 참조하여 설명된 CXL 장치일 수 있으며, 제1 CPU(1010a), 제2 CPU(1010b), GPU(1030), 및 NPU(1040) 중 어느 하나 또는 그 이상에 의해, CXL 메모리(1050) 및 CXL 스토리지(1052)의 메모리들(1060a, 1060b)의 적어도 일부 영역은 제1 CPU(1010a), 제2 CPU(1010b), GPU(1030), NPU(1040), CXL 메모리(1050), CXL 스토리지(1052), PCIe 장치(1054), 및 가속기(1056) 중 적어도 하나의 캐시 버퍼로 할당될 수 있다.
일 실시예에서, CXL 스위치(1015)는 다양한 기능을 지원하도록 구성된 PCIe 장치(1054) 또는 가속기(1056)와 연결될 수 있으며, PCIe 장치(1054) 또는 가속기(1056)는 CXL 스위치(1015)를 통해 제1 CPU(1010a), 제2 CPU(1010b), GPU(1030), 및 NPU(1040) 각각과 통신하거나 또는, CXL 메모리(1050) 및 CXL 스토리지(1052)를 액세스할 수 있다.
일 실시예에서, CXL 스위치(1015)는 외부 네트워크(1060) 또는 패브릭(Fabric)과 연결될 수 있으며, 외부 네트워크(1060) 또는 패브릭을 통해 외부 서버와 통신하도록 구성될 수 있다.
도 9는 일 실시예에 따른 서버 시스템을 나타낸 블록도이다.
도 9를 참조하면, 데이터 센터(1100)는 다양한 데이터를 모아두고 서비스를 제공하는 시설로서, 데이터 스토리지 센터라고 지칭될 수도 있다. 데이터 센터(1100)는 검색 엔진 및 데이터 베이스 운용을 위한 시스템일 수 있으며, 은행 등의 기업 또는 정부기관에서 사용되는 컴퓨터 시스템일 수 있다. 데이터 센터(1100)는 애플리케이션 서버들(1110a, …, 1110h) 및 스토리지 서버들(1120a, …, 1120h)을 포함할 수 있다. 애플리케이션 서버들의 개수 및 스토리지 서버들의 개수는 실시예에 따라 다양하게 선택될 수 있고, 애플리케이션 서버들의 개수 및 스토리지 서버들의 개수는 서로 다를 수 있다.
이하에서, 제1 스토리지 서버(1120a)의 구성이 중점으로 설명된다. 애플리케이션 서버들(1110a, …, 1110h) 및 스토리지 서버들(1120a, …, 1120h) 각각은 서로 유사한 구조를 가질 수 있으며, 애플리케이션 서버들(1110a, …, 1110h) 및 스토리지 서버들(1120a, …, 1120h)은 네트워크(NT)를 통해, 서로 통신할 수 있다.
제1 스토리지 서버(1120a)는 프로세서(1121), 메모리(1122), 스위치(1123), 스토리지(1125), CXL 메모리(1124), 및 네트워크 인터페이스 카드(NIC)(2216)를 포함할 수 있다. 프로세서(1121)는 제1 스토리지 서버(1120a)의 전반적인 동작을 제어할 수 있고, 메모리(1122)를 액세스하여, 메모리(1122)에 로딩된 명령어를 실행하거나 또는 데이터를 처리할 수 있다. 프로세서(1121) 및 메모리(1122)는 직접 연결될 수 있으며, 하나의 스토리지 서버(1120a)에 포함된 프로세서(1121)의 개수 및 메모리(1122)의 개수는 다양하게 선택될 수 있다.
일 실시예에서, 프로세서(1121)와 메모리(1122)는 프로세서-메모리 페어를 제공할 수 있다. 일 실시예에서, 프로세서(1121)와 메모리(1122)의 개수는 서로 다를 수도 있다. 프로세서(1121)는 단일 코어 프로세서 또는 다중 코어 프로세서를 포함할 수 있다. 스토리지 서버(1120)에 대한 상술한 설명은, 애플리케이션 서버들(1110a, …, 1110h) 각각에도 유사하게 적용될 수 있다.
스위치(1123)는 제1 스토리지 서버(1120a)에 포함된 다양한 구성 요소들 사이의 통신을 중재 또는 라우팅하도록 구성될 수 있다. 일 실시예에서, 스위치(1123)는 도 8에서 설명된 CXL 스위치일 수 있다. 즉, 스위치(1123)는 CXL 프로토콜을 기반으로 구현된 스위치일 수 있다.
CXL 메모리(1124)와 스토리지 장치(1125)는 도 1 내지 도 8을 참조하여 설명된 CXL 장치일 수 있다.
CXL 메모리(1124)는 스위치(1123)와 연결될 수 있다. 스토리지 장치(1125)는 CXL 인터페이스 회로(CXL_IF), 컨트롤러(CTRL), 및 낸드 플래시(NAND)를 포함할 수 있다. 스토리지 장치(1125)는 프로세서(1121)의 요청에 따라 데이터를 저장하거나 또는 저장된 데이터를 출력할 수 있다.
애플리케이션 서버들(1110a, …, 1110h)은 스토리지(1125)를 포함하지 않을 수도 있다.
네트워크 인터페이스 카드(NIC; network interface card)(1126)는 CXL 스위치(1123)와 연결될 수 있다. NIC(1126)는 네트워크(NT)를 통해, 다른 스토리지 서버들(1120a, …, 1120h) 또는 다른 애플리케이션 서버들(1110a, …, 1110h)과 통신할 수 있다.
일 실시예에서 NIC(1126)는 네트워크 인터페이스 카드, 네트워크 어댑터 등을 포함할 수 있다. NIC(1126)는 유선 인터페이스, 무선 인터페이스, 블루투스 인터페이스, 광학 인터페이스 등에 의해 네트워크(NT)에 연결될 수 있다. NIC(1126)는 내부 메모리, DSP(Digital Signal Processor), 호스트 버스 인터페이스 등을 포함할 수 있으며, 호스트 버스 인터페이스를 통해 프로세서(1121) 및/또는 스위치(1123) 등과 연결될 수 있다. 일 실시예에서, NIC(1126)는 프로세서(1121), 스위치(1123), 스토리지 장치(1125) 중 적어도 하나와 통합될 수도 있다.
일 실시예에서, 네트워크(NT)는 FC(Fibre Channel) 또는 이더넷(Ethernet) 등을 이용하여 구현될 수 있다. 이 때, FC는 상대적으로 고속의 데이터 전송에 사용되는 매체이며, 고성능/고가용성을 제공하는 광 스위치를 사용할 수 있다. 네트워크(NT)의 액세스 방식에 따라 스토리지 서버들은 파일 스토리지, 블록 스토리지, 또는 오브젝트 스토리지로서 제공될 수 있다.
일 실시예에서, 네트워크(NT)는 SAN(Storage Area Network)와 같은 스토리지 전용 네트워크일 수 있다. 예를 들어, SAN은 FC 네트워크를 이용하고 FCP(FC Protocol)에 따라 구현된 FC-SAN일 수 있다. 다른 예를 들어, SAN은 TCP/IP 네트워크를 이용하고 iSCSI(SCSI over TCP/IP 또는 Internet SCSI) 프로토콜에 따라 구현된 IP-SAN일 수 있다. 일 실시예에서, 네트워크(NT)는 TCP/IP 네트워크와 같은 일반 네트워크일 수 있다. 예를 들어, 네트워크(NT)는 FCoE(FC over Ethernet), NAS(Network Attached Storage), NVMe-oF(NVMe over Fabrics) 등의 프로토콜에 따라 구현될 수 있다.
일 실시예에서, 애플리케이션 서버들(1110a, …, 1110h) 중 적어도 하나는 사용자 또는 클라이언트가 저장 요청한 데이터를 네트워크(NT)를 통해 스토리지 서버들(1120a, …, 1120h) 중 하나에 저장할 수 있다. 애플리케이션 서버들(1110a, …, 1110h) 중 적어도 하나는 사용자 또는 클라이언트가 독출 요청한 데이터를 스토리지 서버들(1120a, …, 1120h) 중 하나로부터 네트워크(NT)를 통해 획득할 수 있다. 예를 들어, 애플리케이션 서버들(1110a, …, 1110h) 중 적어도 하나는 웹 서버 또는 DBMS(Database Management System) 등으로 구현될 수 있다.
일 실시예에서, 애플리케이션 서버들(1110a, …, 1110h) 중 적어도 하나는 네트워크(NT)를 통해 다른 애플리케이션 서버에 포함된 메모리, CXL 메모리, 또는 스토리지 장치에 액세스할 수 있고, 또는 네트워크(NT)를 통해 스토리지 서버들(1120a, …, 1120h)에 포함된 메모리들, CXL 메모리들, 또는 스토리지 장치들에 액세스할 수 있다. 이로써, 애플리케이션 서버들(1110a, …, 1110h) 중 적어도 하나는 다른 애플리케이션 서버들 및/또는 스토리지 서버들에 저장된 데이터에 대해 다양한 동작들을 수행할 수 있다. 예를 들어, 애플리케이션 서버들(1110a, …, 1110h) 중 적어도 하나는 다른 애플리케이션 서버들 및/또는 스토리지 서버들 사이에서 데이터를 이동 또는 카피(copy)하기 위한 명령어를 실행할 수 있다. 이 때 데이터는 스토리지 서버들의 스토리지 장치로부터 스토리지 서버들의 메모리들 또는 CXL 메모리들을 거쳐서, 또는 바로 애플리케이션 서버들의 메모리 또는 CXL 메모리로 이동될 수 있다. 네트워크를 통해 이동하는 데이터는 보안 또는 프라이버시를 위해 암호화된 데이터일 수 있다.
어떤 실시예에서, 도 1 내지 도 9를 참고로 하여 설명한 각 구성요소 또는 둘 이상의 구성요소의 조합은 디지털 회로, 프로그램 가능한 또는 프로그램할 수 없는 로직 장치 또는 어레이, 응용 주문형 집적 회로(application specific integrated circuit, ASIC) 등으로 구현될 수 있다.
이상에서 본 발명의 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.
Claims (10)
- 제1 프로토콜을 사용하여 호스트로부터 요청자 식별자를 포함하는 제1 신호를 수신하고, 상기 요청자 식별자에 대응하는 제1 우선순위를 출력하는 요청 레지스터(request register);
상기 제1 프로토콜과 상이한 제2 프로토콜을 사용하여 상기 호스트로부터 커맨드 및 요청 타입을 포함하는 제2 신호를 수신하고, 상기 요청 레지스터로부터 상기 제1 우선순위를 수신하고, 상기 제1 우선순위 및 상기 요청 타입에 기초하여 상기 커맨드의 제2 우선순위를 결정하는 체커 모듈(checker module);
상기 커맨드로부터 메모리 동작을 위한 내부 커맨드를 생성하는 커맨드 생성기(command generator); 및
상기 제2 우선순위에 기초하여 상기 내부 커맨드를 스케줄링하는 메모리 컨트롤러(memory controller)
를 포함하는 메모리 장치.
- 제1항에 있어서,
상기 요청 레지스터는,
상기 제1 프로토콜을 사용하여 상기 호스트로부터 요청자 식별자를 포함하는 제3 신호를 수신하고, 상기 제3 신호의 요청자 식별자에 대응하는 제1 우선순위를 출력하고,
상기 체커 모듈은,
상기 제2 프로토콜을 사용하여 커맨드 및 요청 타입을 포함하는 제4 신호를 수신하고, 상기 요청 레지스터로부터 상기 제3 신호의 요청자 식별자에 대응하는 제1 우선순위를 수신하고,
상기 제1 신호의 요청자 식별자에 대응하는 제1 우선순위, 상기 제2 신호의 요청 타입, 상기 제3 신호의 요청자 식별자에 대응하는 제1 우선순위, 및 상기 제4 신호의 요청 타입에 기초하여 상기 제2 신호의 커맨드의 제2 우선순위 및 상기 제4 신호의 커맨드의 제2 우선순위를 결정하는,
메모리 장치. - 제2항에 있어서,
상기 체커 모듈은,
가속기로부터 커맨드 및 요청 타입을 포함하는 제5 신호를 수신하고,
제1 신호의 요청자 식별자에 대응하는 제1 우선순위, 상기 제2 신호의 요청 타입, 상기 제3 신호의 요청자 식별자에 대응하는 제1 우선순위, 상기 제4 신호의 요청 타입, 및 상기 제5 신호의 요청 타입에 기초하여 상기 제2 신호의 커맨드의 제2 우선순위, 상기 제4 신호의 커맨드의 제2 우선순위, 및 상기 제5 신호의 커맨드의 제2 우선순위를 결정하는,
메모리 장치. - 제3항에 있어서,
상기 체커 모듈은,
상기 제2 신호의 요청 타입과 상기 제4 신호의 요청 타입이 동일하면, 상기 제1 신호의 요청자 식별자에 대응하는 제1 우선순위 및 상기 제3 신호의 요청자 식별자에 대응하는 제1 우선순위에 기초하여 상기 제2 신호의 커맨드의 제2 우선순위 및 상기 제4 신호의 커맨드의 제2 우선순위를 결정하는,
메모리 장치. - 제3항에 있어서,
상기 체커 모듈은,
요청 타입이 긴급 요청인 신호의 커맨드의 제2 우선순위를, 요청 타입이 일반 요청인 신호의 커맨드의 제2 우선순위보다 높게 결정하는,
메모리 장치. - 제5항에 있어서,
상기 체커 모듈은,
상기 제2 신호의 요청 타입이 긴급 요청이고, 상기 제5 신호의 요청 타입이 긴급 요청이면, 상기 제2 신호의 커맨드의 제2 우선순위를 상기 제5 신호의 커맨드의 제2 우선순위보다 높게 결정하는,
메모리 장치. - 제5항에 있어서,
상기 체커 모듈은,
상기 제1 신호의 요청자 식별자에 대응하는 제1 우선순위가 높음이고, 상기 제2 신호의 요청 타입이 일반 요청이고, 상기 제5 신호의 요청 타입이 일반 요청이면, 상기 제2 신호의 커맨드의 제2 우선순위를 상기 제5 신호의 커맨드의 제2 우선순위보다 높게 결정하는,
메모리 장치. - 제5항에 있어서,
상기 체커 모듈은,
상기 제1 신호의 요청자 식별자에 대응하는 제1 우선순위가 낮음이고, 상기 제2 신호의 요청 타입이 일반 요청이고, 상기 제5 신호의 요청 타입이 일반 요청이면, 상기 제2 신호의 커맨드의 제2 우선순위와 상기 제5 신호의 커맨드의 제2 우선순위를 동일하게 결정하는,
메모리 장치. - CXL 프로토콜을 통해 호스트의 복수의 프로세스 각각으로부터 복수의 제1 커맨드를 수신하고, 가속기로부터 제2 커맨드를 수신하며, 요청자 우선순위 및 요청 타입에 기초하여 상기 복수의 제1 커맨드 및 상기 제2 커맨드를 스케줄링하여 커맨드 큐를 생성하는 컨트롤러; 및
상기 커맨드 큐에 기초하여 동작하는 메모리
를 포함하는 CXL 장치. - 제1 프로토콜을 사용하여 호스트로부터 요청자 식별자를 수신하는 단계;
미리 결정된 요청자 우선순위에 기초하여 상기 요청자 식별자에 대응하는 제1 우선순위를 결정하는 단계;
상기 제1 프로토콜과 상이한 제2 프로토콜을 사용하여 상기 호스트로부터 커맨드 및 요청 타입을 포함하는 신호를 수신하는 단계;
상기 제1 우선순위 및 상기 요청 타입에 기초하여 상기 커맨드의 제2 우선순위를 결정하는 단계; 및
상기 커맨드로부터 메모리 동작을 위한 내부 커맨드를 생성하고, 상기 제2 우선순위에 기초하여 상기 내부 커맨드를 스케줄링하는 단계
를 포함하는 스케줄링 방법.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020220179463A KR20240097424A (ko) | 2022-12-20 | 2022-12-20 | 메모리 장치 및 이의 스케줄링 방법 |
US18/322,798 US20240201858A1 (en) | 2022-12-20 | 2023-05-24 | Memory device and scheduling method thereof |
CN202310860290.6A CN118227037A (zh) | 2022-12-20 | 2023-07-13 | 存储器件、其调度方法和计算快速链路装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020220179463A KR20240097424A (ko) | 2022-12-20 | 2022-12-20 | 메모리 장치 및 이의 스케줄링 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20240097424A true KR20240097424A (ko) | 2024-06-27 |
Family
ID=91473735
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020220179463A KR20240097424A (ko) | 2022-12-20 | 2022-12-20 | 메모리 장치 및 이의 스케줄링 방법 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20240201858A1 (ko) |
KR (1) | KR20240097424A (ko) |
CN (1) | CN118227037A (ko) |
-
2022
- 2022-12-20 KR KR1020220179463A patent/KR20240097424A/ko unknown
-
2023
- 2023-05-24 US US18/322,798 patent/US20240201858A1/en active Pending
- 2023-07-13 CN CN202310860290.6A patent/CN118227037A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
CN118227037A (zh) | 2024-06-21 |
US20240201858A1 (en) | 2024-06-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3017372B1 (en) | Memory controlled data movement and timing | |
US11741034B2 (en) | Memory device including direct memory access engine, system including the memory device, and method of operating the memory device | |
US10725957B1 (en) | Uniform memory access architecture | |
US9405711B2 (en) | On-chip traffic prioritization in memory | |
KR102365312B1 (ko) | 스토리지 컨트롤러, 연산 스토리지 장치, 및 연산 스토리지 장치의 동작 방법 | |
US12056066B2 (en) | System, device, and method for accessing memory based on multi-protocol | |
KR20230016110A (ko) | 메모리 모듈, 이를 포함하는 시스템, 및 메모리 모듈의 동작 방법 | |
TWI797022B (zh) | 儲存控制器、計算儲存裝置以及計算儲存裝置的操作方法 | |
US11829641B2 (en) | Storage device and operating method for managing a command queue | |
US11157191B2 (en) | Intra-device notational data movement system | |
EP4002139B1 (en) | Memory expander, host device using memory expander, and operation method of server system including memory expander | |
KR20230173059A (ko) | 스마트 메모리 모듈 및 그것의 동작 방법 | |
US12111763B2 (en) | Apparatus and method for distributing work to a plurality of compute express link devices | |
US9910789B2 (en) | Electrical and optical memory access | |
KR20240097424A (ko) | 메모리 장치 및 이의 스케줄링 방법 | |
US20230222067A1 (en) | Apparatus and method for cache-coherence | |
US20230214258A1 (en) | Storage controller and storage device | |
KR20230107085A (ko) | 캐시-일관성을 위한 장치 및 방법 | |
KR20230107086A (ko) | 캐시-일관성을 위한 장치 및 방법 | |
US20220147458A1 (en) | Semiconductor device | |
US20240086110A1 (en) | Data storage method, storage apparatus and host | |
US20240160362A1 (en) | Memory devices and methods for managing use history | |
KR102572143B1 (ko) | 메모리 클라우드를 위한 메모리 자원 공유 방법 및 이를 이용한 메모리 자원 공유 시스템 | |
US20240281402A1 (en) | Computing systems having congestion monitors therein and methods of controlling operation of same | |
KR20160119050A (ko) | 분리된 메모리 기기 |