KR20210103836A - 데이터 처리 장치 및 그 동작 방법 - Google Patents
데이터 처리 장치 및 그 동작 방법 Download PDFInfo
- Publication number
- KR20210103836A KR20210103836A KR1020200018504A KR20200018504A KR20210103836A KR 20210103836 A KR20210103836 A KR 20210103836A KR 1020200018504 A KR1020200018504 A KR 1020200018504A KR 20200018504 A KR20200018504 A KR 20200018504A KR 20210103836 A KR20210103836 A KR 20210103836A
- Authority
- KR
- South Korea
- Prior art keywords
- command
- commands
- pair
- time stamp
- controller
- Prior art date
Links
- 238000012545 processing Methods 0.000 title claims abstract description 61
- 238000000034 method Methods 0.000 title claims description 27
- 238000004891 communication Methods 0.000 claims abstract description 16
- 230000004044 response Effects 0.000 claims description 9
- 238000005516 engineering process Methods 0.000 abstract description 11
- 230000015654 memory Effects 0.000 description 46
- 238000010586 diagram Methods 0.000 description 18
- 238000007726 management method Methods 0.000 description 6
- 230000001427 coherent effect Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000011017 operating method Methods 0.000 description 3
- 102100030483 Histatin-1 Human genes 0.000 description 2
- 101001082500 Homo sapiens Histatin-1 Proteins 0.000 description 2
- 101001021281 Homo sapiens Protein HEXIM1 Proteins 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000001816 cooling Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Classifications
-
- 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/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/04—Generating or distributing clock signals or signals derived directly therefrom
- G06F1/14—Time supervision arrangements, e.g. real time clock
-
- 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
-
- 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/1642—Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
-
- 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/1652—Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
- G06F13/1663—Access to shared memory
-
- 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/36—Handling requests for interconnection or transfer for access to common bus or bus system
- G06F13/368—Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control
- G06F13/372—Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control using a time-dependent priority, e.g. individually loaded time counters or time slot
-
- 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/36—Handling requests for interconnection or transfer for access to common bus or bus system
- G06F13/368—Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control
- G06F13/374—Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control using a self-select method with individual priority code comparator
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
- G06F9/38585—Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Bus Control (AREA)
- Debugging And Monitoring (AREA)
Abstract
본 기술의 일 실시예에 의한 데이터 처리 장치는 목적지별 커맨드를 전송하는 마스터 장치, 복수의 커맨드 처리 영역을 각각 목적지로 포함하는 슬레이브 장치 및 마스터 장치와 슬레이브 장치 간의 통신을 중계하는 컨트롤러를 포함하며, 컨트롤러는, 커맨드에 타임 스탬프를 부여하고, 매 중재 사이클마다 목적지가 상이한 커맨드를 한 쌍씩 서로 비교하여 타임 스탬프 값이 최대인 커맨드를 토너먼트 방식으로 선택하고 각 비교 스테이지마다의 커맨드 선택 이력을 저장하며, 비교 대상 커맨드의 타임 스탬프가 동일한 경우 커맨드 선택 이력에 기초하여 커맨드를 선택하도록 구성되는 컨트롤러를 포함하도록 구성될 수 있다.
Description
본 발명은 반도체 집적 장치에 관한 것으로, 보다 구체적으로는 데이터 처리 장치 및 그 동작 방법에 관한 것이다.
복수의 디바이스가 집적된 반도체 집적 장치에서, 공유 메모리와 같은 공유 리소스에 대한 액세스 효율을 향상시키기 위해 다양한 중재 기법이 연구되고 있다.
적어도 하나의 마스터 장치가 슬레이브 장치로 전송하는 커맨드를 중재하기 위해서는 커맨드별 우선순위 및 레이턴시를 고려할 수 있으며, 이를 통해 공유 리소스를 최대한 활용하면서 최대 전력 효율 및 최저 레이턴시를 달성할 수 있도록 중재할 것이 요구된다.
본 기술의 실시예는 입력되는 커맨드의 처리 순서를 최적화할 수 있는 데이터 처리 장치 및 그 동작 방법을 제공할 수 있다.
본 기술의 일 실시예에 의한 데이터 처리 장치는 목적지별 커맨드를 전송하는 마스터 장치; 복수의 커맨드 처리 영역을 각각 상기 목적지로 포함하는 슬레이브 장치; 및 상기 마스터 장치와 슬레이브 장치 간의 통신을 중계하는 컨트롤러;를 포함하며, 상기 컨트롤러는, 상기 커맨드에 타임 스탬프를 부여하고, 매 중재 사이클마다 상기 목적지가 상이한 커맨드를 한 쌍씩 서로 비교하여 타임 스탬프 값이 최대인 커맨드를 토너먼트 방식으로 선택하고 각 비교 스테이지마다의 커맨드 선택 이력을 저장하며, 상기 비교 대상 커맨드의 타임 스탬프가 동일한 경우 상기 커맨드 선택 이력에 기초하여 커맨드를 선택하도록 구성되는 컨트롤러;를 포함하도록 구성될 수 있다.
본 기술의 일 실시예에 의한 데이터 처리 장치는 목적지별 커맨드를 전송하는 마스터 장치; 복수의 커맨드 처리 영역을 각각 상기 목적지로 포함하는 슬레이브 장치; 및 상기 마스터 장치와 슬레이브 장치 간의 통신을 중계하는 컨트롤러;를 포함하며, 상기 컨트롤러는, 상기 커맨드에 상기 타임 스탬프를 부여하는 타임 스탬프 설정부; 상기 타임 스탬프가 부여된 상기 커맨드를 도착 순서에 따라 저장하는 커맨드 레지스터; 및 상기 커맨드를 도착 순서에 따라 목적지 별로 분류하며, 상기 타임 스탬프에 기초하여 상기 목적지별 선두 커맨드 중 하나를 선택하되, 상기 타임 스탬프가 동일한 경우 이전 중재 사이클의 커맨드 선택 이력을 참조하여 커맨드를 선택하는 스케쥴러;를 포함하도록 구성될 수 있다.
본 기술의 일 실시예에 의한 데이터 처리 장치의 동작 방법은 목적지별 커맨드를 전송하는 마스터 장치와, 복수의 커맨드 처리 영역을 각각 상기 목적지로 포함하는 슬레이브 장치 간의 통신을 중계하는 컨트롤러를 포함하는 데이터 처리 장치의 동작 방법으로서, 상기 컨트롤러가 상기 커맨드에 상기 타임 스탬프를 부여하여 저장하는 단계; 상기 컨트롤러가 상기 커맨드를 도착 순서에 따라 목적지 별로 분류하는 단계; 상기 컨트롤러가 상기 타임 스탬프에 기초하여 상기 목적지별 선두 커맨드 중 하나를 선택하는 단계; 및 상기 타임 스탬프가 동일한 경우, 상기 컨트롤러가 이전 중재 사이클의 커맨드 선택 이력을 참조하여 커맨드를 선택하는 단계;를 포함하도록 구성될 수 있다.
본 기술에 의하면, 커맨드를 처리할 목적지 별로 커맨드가 도착한 순서에 기초하여 커맨드 처리 순서를 중재하되, 도착 순서를 판별할 수 없는 경우에는 이전 중재 사이클의 중재 이력에 기초하여 처리 순서를 중재할 수 있다.
따라서 커맨드를 처리할 목적지 별로 고르게 커맨드를 전송하여 공유 리소스를 효율적으로 사용할 수 있다.
도 1은 일 실시예에 의한 데이터 처리 장치의 구성도이다.
도 2는 일 실시예에 의한 중재부의 구성도이다.
도 3은 일 실시예에 의한 스케쥴러의 구성도이다.
도 4는 일 실시예에 의한 비교 회로의 구성도이다.
도 5 및 도 6은 일 실시예에 의한 데이터 처리 장치의 동작 방법을 설명하기 위한 흐름도이다.
도 7은 일 실시예에 의한 데이터 처리 시스템의 구성도이다.
도 8은 일 실시 예에 의한 컴퓨팅 랙의 개념도이다.
도 9는 일 실시 예에 의한 컴퓨팅 랙의 구성도이다.
도 10은 일 실시 예에 의한 연산 보드의 구성도이다.
도 11은 일 실시 예에 의한 메모리 보드의 구성도이다.
도 2는 일 실시예에 의한 중재부의 구성도이다.
도 3은 일 실시예에 의한 스케쥴러의 구성도이다.
도 4는 일 실시예에 의한 비교 회로의 구성도이다.
도 5 및 도 6은 일 실시예에 의한 데이터 처리 장치의 동작 방법을 설명하기 위한 흐름도이다.
도 7은 일 실시예에 의한 데이터 처리 시스템의 구성도이다.
도 8은 일 실시 예에 의한 컴퓨팅 랙의 개념도이다.
도 9는 일 실시 예에 의한 컴퓨팅 랙의 구성도이다.
도 10은 일 실시 예에 의한 연산 보드의 구성도이다.
도 11은 일 실시 예에 의한 메모리 보드의 구성도이다.
이하, 첨부된 도면을 참조하여 본 기술의 실시예를 보다 구체적으로 설명한다.
도 1은 일 실시예에 의한 데이터 처리 장치의 구성도이다.
도 1을 참조하면, 일 실시예에 의한 데이터 처리 장치(10)는 마스터 장치(100), 슬레이브 장치(300) 및 컨트롤러(200)를 포함할 수 있다.
마스터 장치(100)는 적어도 하나의 마스터 IP(Intellectual Property, M0~Mm)를 포함할 수 있고, 슬레이브 장치(300)는 적어도 하나의 슬레이브 IP(S0~Sn)를 포함할 수 있다.
마스터 장치(100)는 호스트 장치라 지칭할 수도 있다. 마스터 장치(100)는 중앙 처리 장치(Central Processing Unit; CPU), 그래픽 처리 장치(Graphic Processing Unit; GPU), 어플리케이션 프로세서와 같은 다양한 프로세서이거나, 직접 메모리 접근 장치(Direct Memory Access; DMA), 또는 입출력 서브 시스템 등이 될 수 있다.
일 실시예에서, 마스터 장치(100)는 커맨드를 처리할 목적지 정보인 슬레이브 어드레스 및 데이터(라이트 커맨드의 경우)를 포함하는 커맨드를 포워드 채널(FCH)을 통해 전송할 수 있고, 커맨드 처리 결과에 따른 데이터(리드 커맨드의 경우)나 응답 신호를 백워드 채널(BCH)을 통해 수신할 수 있다.
슬레이브 장치(300)는 마스터 장치(100)에 의해 공유되는 리소스일 수 있으며, 일 실시예에서 공유 메모리 장치일 수 있다. 일 실시예에서, 슬레이브 장치(300)는 포워드 채널(FCH)을 통해 마스터 장치(100)로부터 커맨드를 전송받고, 커맨드 처리 결과에 따른 데이터 및 응답 신호를 백워드 채널(BCH)을 통해 전송할 수 있다.
마스터 장치(110)와 슬레이브 장치(300) 간에서 어드레스, 데이터 및 응답 신호는 각각 독립적인 채널을 통해 전송될 수 있으나, 이에 한정되는 것은 아니다.
컨트롤러(200)는 마스터 장치(100)와 슬레이브 장치(200) 간의 통신을 중계하도록 구성되며, 마스터 장치(100)와 슬레이브 장치(200) 간에 커맨드, 데이터 및 응답 신호를 교환할 수 있는 논리적/물리적 환경을 제공하는 인터커넥터일 수 있다. 컨트롤러(200)는 마스터 인터페이스(210), 중재부(220) 및 슬레이브 인터페이스(230)를 포함할 수 있다.
마스터 인터페이스(210)는 마스터 장치(100)의 커맨드를 포워드 채널(FCH)을 통해 전달아 중재부(220)로 전송하고, 슬레이브 장치(300)로부터 제공되는 데이터 및/또는 응답 신호를 백워드 채널(BCH)을 통해 마스터 장치(100)로 전달할 수 있다.
중재부(220)는 포워드 채널(FCH)을 통해 전송되는 마스터 장치(100)의 커맨드들을 우선 순위 및 레이턴시에 따라 스케쥴링하도록 구성될 수 있다.
슬레이브 인터페이스(230)는 스케쥴링된 커맨드를 포워드 채널(FCH)을 통해 슬레이브 장치(300)로 전달하고, 슬레이브 장치(300)로부터 출력되는 데이터 및/또는 응답 신호를 백워드 채널(BCH)을 통해 전달받아 마스터 장치(100)로 전달할 수 있다.
마스터 장치(100)로부터 전송되는 커맨드는 커맨드를 처리할 목적지 어드레스를 포함할 수 있다. 슬레이브 장치(300)는 복수의 저장 영역, 예를 들어 복수의 메모리 뱅크를 각각 목적지로 포함하는 메모리 장치일 수 있으며, 이 경우 목적지 어드레스는 뱅크 어드레스를 포함할 수 있다.
일 실시예에서, 중재부(220)는 마스터 장치(100)로부터 전송되는 커맨드에 타임 스탬프를 부여하여 도착 순서에 따라 저장할 수 있다. 중재부(220)는 각 커맨드에 부여된 타임 스탬프를 매 커맨드 중재 사이클마다 카운팅, 예를 들어 업-카운팅할 수 있다.
일 실시예에서, 중재부(220)는 매 커맨드 중재 사이클에서, 목적지가 상이한 커맨드를 한 쌍씩 서로 비교하여 타임 스탬프 값이 최대인 커맨드를 토너먼트 방식으로 선택하고 각 비교 스테이지마다의 커맨드 선택 이력을 저장할 수 있다. 중재부(220)는 비교 대상 커맨드의 타임 스탬프가 동일한 경우 이전 중재 사이클의 커맨드 선택 이력에 기초하여 커맨드를 선택할 수 있다.
다른 관점에서, 중재부(220)는 커맨드를 도착 순서에 따라 순차적으로 수신하고 목적지 별로 분류할 수 있으며, 목적지 별로 분류된 선두 커맨드 중 하나를 타임 스탬프에 기초하여 선택할 수 있다. 타임 스탬프가 동일하거나 비교할 수 없는 경우, 중재부(220)는 이전 중재 사이클의 커맨드 선택 이력을 참조하여, 이전 중재 사이클에서 선택하지 않은 목적지의 커맨드를 선택할 수 있다.
이와 같이, 본 기술에 의하면, 슬레이브 장치(300)의 목적지 별로 수신된 커맨드 중 타임 스탬프가 가장 큰 커맨드를 해당 목적지로 제공하여 처리하도록 할 수 있다.
타임 스탬프는 매 중재 사이클마다 업-카운팅되고 미처리된 상태로 대기하는 동안 최대값으로 수렴할 수 있다. 중재부(220)는 컨트롤러(200)로의 입력 시점이 동일한 커맨드의 타임 스탬프를 비교하는 경우, 또는 타임 스탬프 값이 최대값으로 수렴한 커맨드의 타임 스탬프를 비교하는 경우에는 이전 중재 사이클에서 미선택된 목적지의 커맨드를 선택할 수 있다.
따라서, 컨트롤러(200)로의 입력 시점이 우선한 목적지의 커맨드가 우선적으로 처리되도록 하되, 특정 목적지에서 커맨드를 집중 처리하거나 특정 목적지에서 컨맨드 처리가 결핍되지 않도록 할 수 있어, 각 목적지 별로 균등하게 커맨드를 처리할 수 있다.
도 2는 일 실시예에 의한 중재부의 구성도이다.
도 2를 참조하면, 일 실시예에 의한 중재부(220)는 타임 스탬프 설정부(410), 커맨드 레지스터(420), 카운터(430) 및 스케쥴러(440)를 포함할 수 있다.
마스터 장치(100)가 목적지 어드레스 및 데이터를 포함하는 커맨드(CMD)를 전송함에 따라, TS 설정부(410)는 커맨드(CMD)가 컨트롤러(200)로 입력된 시점에 대응하는 타임 스탬프(TS)를 부여하여 커맨드 레지스터(420)에 저장할 수 있다.
커맨드 레지스터(420)는 타임 스탬프(TS)가 부여된 커맨드를 컨트롤러(200)에 입력된 순서에 따라 각각의 엔트리(ETR)에 저장될 수 있다. 일 실시예에서, 커맨드 레지스터(420)는 선입선출(FIFO) 버퍼일 수 있으나 이에 한정되는 것은 아니다. 일 실시예에서, 커맨드 레지스터(420)는 복수의 슬레이브 장치마다 또는 복수의 슬레이브 장치의 목적지(뱅크) 마다 구비되거나, 복수의 슬레이브 장치나 복수의 슬레이브 장치를 구성하는 목적지(뱅크)에 공통으로 구비될 수 있다.
커맨드 레지스터(420)의 각 엔트리(ETR)에는 커맨드 ID(CMD ID), 목적지 어드레스(ADD), 데이터(DATA)(라이트 커맨드의 경우), 타임 스탬프 값(TS), 커맨드 유효성 플래그(VAL)가 저장될 수 있다. 커맨드 ID(CMD ID)는 커맨드의 종류, 예를 들어 라이트 커맨드인지, 리드 커맨드인지를 나타낼 수 있다. 목적지 어드레스(ADD)는 해당 커맨드를 처리할 슬레이브 장치(300)의 위치를 나타낼 수 있다. 슬레이브 장치(300)가 복수의 메모리 뱅크를 포함하는 공유 메모리 장치인 경우 목적지 어드레스(ADD)는 뱅크 어드레스를 포함할 수 있으나, 이에 한정되는 것은 아니다. 타임 스탬프 값(TS)은 TS 설정부(420)에 의해 부여된 커맨드 도착 시간 정보를 나타낼 수 있다. 유효성 플래그(VAL)는 해당 커맨드의 처리 상태, 즉, 처리 완료 여부를 나타낼 수 있다.
카운터(430)는 커맨드가 커맨드 레지스터(420)에 저장된 후 매 커맨드 중재 사이클마다 타임 스탬프 값을 카운팅, 예를 들어 업-카운팅할 수 있다.
스케쥴러(440)는 매 중재 사이클마다 목적지 어드레스(ADD)가 상이한 커맨드를 한 쌍씩 서로 비교하여 타임 스탬프 값(TS)이 최대인 커맨드를 토너먼트 방식으로 선택하고 각 비교 스테이지마다의 커맨드 선택 이력을 저장할 수 있다. 비교 대상 커맨드의 타임 스탬프 값(TS)이 동일한 경우 스케쥴러(440)는 이전 중재 사이클의 커맨드 선택 이력에 기초하여 커맨드를 선택할 수 있다.
다른 관점에서, 스케쥴러(440)는 커맨드 레지스터(420)에 저장된 커맨드를 도착 순서에 따라 목적지 별로 분류할 수 있으며, 목적지 별로 분류된 선두 커맨드 중 하나를 타임 스탬프에 기초하여 선택할 수 있다. 타임 스탬프가 동일한 경우, 중재부(220)는 이전 중재 사이클의 커맨드 선택 이력을 참조하여, 이전 중재 사이클에서 선택하지 않은 목적지의 커맨드를 선택할 수 있다.
도 3은 일 실시예에 의한 스케쥴러의 구성도이다.
도 3을 참조하면, 일 실시예에 의한 스케쥴러(440)는 복수의 비교 스테이지(4411~441N)를 구비할 수 있고, 각 비교 스테이지(4411~441N)는 복수의 비교회로를 포함할 수 있다.
목적지의 수가 2N개인 경우를 가정하면, 비교 스테이지(4411~441N)는 N개의 스테이지로 구비될 수 있다. 그리고, 각 비교 스테이지(4411~441N)는 2(N-m)(m은 스테이지 순번)개의 비교 회로(COMP m_(2(N-m))를 포함할 수 있다.
각 비교 스테이지(4411~441N)로는 각기 다른 목적지를 갖는 커맨드(CMD_B_x)가 입력되고, 비교 스테이지(4411~441N)내의 각 비교회로(COMP m_(2(N-m))는 목적지가 상이한 한 쌍의 커맨드에 대한 타임 스탬프를 비교하여 타임 스탬프가 큰 커맨드를 선택할 수 있다. 비교회로(COMP m_(2(N-m))가 커맨드를 선택하기 위해 스위칭한 정보는 커맨드 선택 이력(HIS m(2(N-m)))으로서 입력단으로 피드백될 수 있다. 다른 관점에서, 각 비교회로(COMP m_(2(N-m))가 타임 스탬프에 기반하여 입력 커맨드 중 어느 하나를 출력단으로 스위칭할 때, 그 스위칭 정보를 입력단으로 피드백할 수 있다.
일 실시예에서, 제 1 비교 스테이지(4411)로는 목적지가 상이한 2N개의 커맨드(CMD_B_0 ~ CMD_B_(2N-1))가 입력되고, 2N-1개의 비교회로(COMP1_1 ~ COMP1~2N-1)는 각각 커맨드를 한 쌍씩 비교하여 어느 하나의 커맨드를 선택할 수 있다. 비교회로(COMP1_1 ~ COMP1~2N-1)의 스위칭 정보인 커맨드 선택 이력(HIS1(1) ~ HIS1(2N-1)은 입력단으로 피드백될 수 있다. 결국 제 1 비교 스테이지(4411)에서 2N개의 커맨드 중 절반(2N-1개)의 커맨드가 선택될 수 있다.
제 2 스테이지(4412)부터 제 N 스테이지(441N)까지 진행되면서, 매 비교 스테이지(4412~441N)에서 출력되는 커맨드의 수는 입력 커맨드의 절반이 되고, 최종 비교 스테이지(4411N)로부터 하나의 커맨드(CMD_B_y)가 선택되어 출력될 수 있다.
도 4는 일 실시예에 의한 비교 회로의 구성도이다.
도 4를 참조하면, 비교 회로(COMP)는 제어신호 생성부(510), 제 1 선택부(520) 및 제 2 선택부(530)룰 포함할 수 있다.
비교 회로(COMP)는 한 쌍의 커맨드(CMD_B_n, CMD_B_n+1)를 입력받을 수 있고, 한 쌍의 커맨드(CMD_B_n, CMD_B_n+1)는 각각 타임 스탬프(TSn, TSn+1), 목적지 어드레스(BAn, BAn+1), 커맨드 종류(CMDn, CMDn+1), 및 유효성 필드(VALn, VALn+1)를 포함할 수 있다.
제어신호 생성부(510)는 입력되는 한 쌍의 커맨드(CMD_B_n, CMD_B_n+1)의 유효성 필드(VALn, VALn+1)에 기초하여 제어 신호(CON)를 출력하도록 구성될 수 있다.
일 실시예에서, 제어신호 생성부(510)는 한 쌍의 커맨드(CMD_B_n, CMD_B_n+1)의 유효성 필드(VALn, VALn+1)에 기초하여, 어느 하나라도 유효한 경우 인에이블되는 제어신호(CON)를 생성할 수 있다. 제어신호 생성부(510)는 한 쌍의 커맨드(CMD_B_n, CMD_B_n+1)가 모두 무효인 경우 제어신호(CON)를 디스에이블시킬 수 있다.
제 1 선택부(520)는 제어 신호(CON)에 응답하여 인에이블되고, 한 쌍의 커맨드(CMD_B_n, CMD_B_n+1)를 제공받으며 이전 중재 사이클에서 생성된 커맨드 선택 이력(HIS)을 제공받아 어느 하나의 커맨드를 예비 선택 신호(SEL_PRE)로 출력할 수 있다.
일 실시예에서, 제 1 선택부(520)는 입력되는 한 쌍의 커맨드(CMD_B_n, CMD_B_n+1)가 모두 미처리 상태인 경우, 타임 스탬프(TSn, TSn+1)에 기초하여 어느 하나의 커맨드를 예비 선택 신호(SEL_PRE)로 출력할 수 있다. 만약, 입력된 커맨드의 타임 스탬프(TSn, TSn+1)가 동일하다면, 제 1 선택부(520)는 커맨드 선택 이력(HIS)을 참조하여, 이전 중재 사이클에서 선택한 목적지(BAn 또는 Ban+1)와 상이한 목적지(BAn+1 또는 BAn)의 커맨드를 선택할 수 있다. 제 1 선택부(520)는 한 쌍의 커맨드(CMD_B_n, CMD_B_n+1) 중 어느 하나만 미처리 상태인 경우, 미처리된 커맨드를 예비 선택 신호(SEL_PRE)로 출력할 수 있다. 제 1 선택부(520)는 제어신호(CON)가 디스에이블된 경우 폐기 신호(DISCARD)를 출력할 수 있다.
제 2 선택부(530)는 한 쌍의 커맨드(CMD_B_n, CMD_B_n+1), 제 1 선택부(520)에서 출력되는 예비 선택 신호(SEL_PRE) 및 폐기 신호(DISCARD)를 입력받으며, 한 쌍의 커맨드(CMD_B_n, CMD_B_n+1)의 유효성 필드(VALn, VALn+1)에 기초하여 입력 신호 중 어느 하나를 커맨드 선택 신호(CMD_B_n,n+1)로 출력할 수 있다.
일 실시예에서, 제 2 선택부(530)는 입력되는 한 쌍의 커맨드(CMD_B_n, CMD_B_n+1)의 유효성 필드(VALn, VALn+1)에 기초하여 한 쌍의 커맨드(CMD_B_n, CMD_B_n+1) 가 모두 유효한 경우, 즉 모두 미처리 상태인 경우, 제1 선택부(520)의 출력 신호인 예비 선택 신호(SEL_PRE)를 커맨드 선택 신호(CMD_B_n,n+1)로 출력할 수 있다.
제 2 선택부(530)는 입력되는 한 쌍의 커맨드(CMD_B_n, CMD_B_n+1)의 유효성 필드(VALn, VALn+1)에 기초하여 어느 하나의 커맨드만 유효한 경우, 즉 어느 하나만 미처리 상태인 경우에는 미처리 상태의 커맨드를 커맨드 선택 신호(CMD_B_n,n+1)로 출력할 수 있다.
한 쌍의 커맨드(CMD_B_n, CMD_B_n+1)의 유효성 필드(VALn, VALn+1)가 모두 무효화된 경우, 즉 모두 처리 완료된 경우 제 2 선택부(530)는 폐기 신호(DISCARD)를 커맨드 선택 신호(CMD_B_n,n+1)로 출력하여 어떠한 커맨드로 선택되지않고 무시될 수 있다.
입력 커맨드 중 어느 하나를 커맨드 선택 신호(CMD_B_n,n+1)로 출력하는 경우, 커맨드 선택 이력(HIS)은 선택된 커맨드를 출력하기 위한 스위칭 정보이며 제 1 선택부(520)의 입력단으로 피드백되어, 다음 중재 사이클에서 참조될 수 있다.
도 5 및 도 6은 일 실시예에 의한 데이터 처리 장치의 동작 방법을 설명하기 위한 흐름도이다.
마스터 장치(100)가 슬레이브 어드레스(예를 들어, 메모리 뱅크 어드레스) 및 데이터(라이트 커맨드의 경우)를 포함하는 커맨드(CMD)를 전송함에 따라(S101), 컨트롤러(200)의 중재부(220)는 전송되는 커맨드(CMD)에 타임 스탬프(TS)를 부여하여 저장할 수 있다(S103).
중재부(220)는 매 중재 사이클의 각 비교 스테이지를 통해 목적지가 상이한 커맨드를 한 쌍씩 서로 비교하여 타임 스탬프 값이 최대인 커맨드를 토너먼트 방식으로 선택할 수 있으며, 구체적으로 설명하면 다음과 같다.
중재부(220)는 커맨드를 도착 순서에 따라 목적지 별로 분류할 수 있으며(S201), 목적지 별로 분류된 선두 커맨드를 한 쌍씩 제공받아 커맨드 쌍별 유효성을 확인할 수 있다(S203).
단계 S203의 확인 결과, 두 커맨드가 모두 유효한 경우, 중재부(220)는 입력 커맨드의 타임 스탬프(TS) 및 이전 중재 사이클에서의 선택 이력에 기초하여 어느 하나의 커맨드를 선택할 수 있다(S205). 일 실시예에서, 중재부(220)는 도 6에 도시한 것과 같이, 입력 커맨드의 타임 스탬프(TS)가 동일한지 확인할 수 있다(S301). 입력 시점이 동일하거나 타임 스탬프가 최대값에 수렴하여 입력된 두 커맨드의 타임 스탬프 값이 동일한 경우(S301:Y), 중재부(220)는 이전 중재 사이클의 커맨드 선택 이력에 기초하여, 이전 사이클에서 선택되지 않은 목적지의 커맨드를 선택할 수 있다(S303). 타임 스탬프 값이 동일하지 않은 경우(S301:N)에는 타임 스탬프 값이 큰 목적지의 커맨드를 선택할 수 있다.(S305).
단계 S203의 확인 결과, 어느 하나의 커맨드만 유효한 경우, 중재부(220)는 유효한 커맨드를 선택할 수 있다(S207).
단계 S203의 확인 결과, 입력된 두 커맨드가 모두 유효하지 않은 경우에는 해당 비교 스테이지의 비교 결과를 폐기하여 다음 스테이지에서 무시하도록 한다(S209).
단계 S201~S209의 과정은 각 비교 스테이지마다 반복되어 최종 비교 스테이지에서 어느 하나의 커맨드가 선택되게 된다.
본 기술에서, 마스터 장치의 커맨드들은 도착 순서에 따라 목적지 별로 분류되고, 각 목적지별 선두 커맨드 중 타임 스탬프가 가장 큰 커맨드가 우선 처리될 수 있다. 다만, 타임 스탬프가 동일한 경우에는 이전 중재 사이클의 선택 이력을 참조하여, 이전 중재 사이클에서 커맨드를 처리하지 않은 목적지의 커맨드를 선택함으로써, 목적지별로 균등하게 커맨드를 처리할 수 있다.
도 7은 일 실시예에 의한 데이터 처리 시스템의 구성도이다.
도 7을 참조하면, 데이터 처리 시스템(1000)은 복수의 컴퓨팅 랙들(computing racks, 20)과 관리 인터페이스(management interface, 30), 그리고 이들 사이의 통신이 가능하도록 하는 네트워크(network, 40)을 포함할 수 있다. 이러한 랙스케일 구조(rack-scale architecture)의 데이터 처리 시스템(1000)은 예를 들어 대용량 데이터 처리를 위한 데이터 센터 등에 사용될 수 있다.
복수의 컴퓨팅 랙(20)들 각각은 다른 컴퓨팅 랙(20)들과의 조합으로 하나의 컴퓨팅 시스템을 구현할 수 있다. 이러한 컴퓨팅 랙(20)들의 구체적인 구성 및 동작에 대한 설명은 후술될 것이다. 일 실시예에서, 컴퓨팅 랙(20)들은 도 1 내지 도 4에 도시한 데이터 처리 장치(10)일 수 있다.
관리 인터페이스(30)는 사용자가 데이터 처리 시스템(1000)을 조정, 운영 또는 관리할 수 있도록 하는 인터액티브 인터페이스(interactive interface)를 제공할 수 있다. 관리 인터페이스(30)는 컴퓨터, 멀티프로세서 시스템, 서버, 랙마운트(rack-mount) 서버, 보드(board) 서버, 랩탑(lap-top) 컴퓨터, 노트북 컴퓨터, 태블릿 컴퓨터, 웨어러블 컴퓨팅 시스템, 네트워크 기기, 웹 기기, 분산 컴퓨팅 시스템, 프로세서 기반 시스템, 및/또는 소비자 전자 기기를 포함하는, 임의 유형의 연산 디바이스로서 구현될 수 있다.
일부 실시 예들에서, 데이터 처리 시스템(1000)은 컴퓨팅 랙(20)들에 의해 수행될 수 있는 연산 기능들이나, 관리 인터페이스(30)에 의해 수행될 수 있는 사용자 인터페이스 기능들을 가지는 분산 시스템으로 구현될 수 있다. 다른 일부 실시 예들에서, 데이터 처리 시스템(1000)은 네트워크(40)를 통하여 분산된 다중 컴퓨팅 시스템들에 의해 구성되고 클라우드(cloud)로서 동작하는 가상 서버(virtual server)로 구현될 수 있다. 관리 인터페이스(30)는 프로세서, 입력/출력 서브시스템, 메모리, 데이터 스토리지 디바이스 및 통신 회로를 포함할 수 있다.
네트워크(40)는 컴퓨팅 랙들과 관리 인터페이스(30) 사이 및/또는 컴퓨팅 랙들 사이에서의 데이터를 송수신하는 채널일 수 있다. 네트워크(40)는 유선 및/또는 무선 네트워크들에 의해 구현될 수 있다. 예를 들어, 네트워크(40)는 유선 또는 무선 LAN(local area network), WAN(wide area network) 셀룰러 네트워크, 및/또는 인터넷과 같이 공개적으로 액세스 가능한 글로벌 네트워크(publicly-accessible, global network)에 의해 구현되거나 이를 포함할 수 있다. 추가적으로, 네트워크(40)은 보조적인 컴퓨터들, 라우터(router)들 및 스위치들과 같은 적어도 하나의 보조적인 네트워크 디바이스들을 포함할 수 있다. 또한, 네트워크(40)는 CCIX(Cache Coherent Interconnect for accelerators) 및 GEN-Z와 같은 인터페이스 규격에 기초한 인터페이스 네트워크를 포함할 수 있다.
도 8은 일 실시 예에 의한 컴퓨팅 랙의 개념도이다.
도 8을 참조하면, 컴퓨팅 랙(20)은 구성요소들의 구조, 형태 및 호칭 등에 제한되는 것은 아니지만, 다양한 형태의 구성요소들을 포함할 수 있다. 예를 들어, 컴퓨팅 랙(20) 은 복수의 드로워(drawer)들(21 내지 29)를 포함할 수 있다. 복수의 드로워들 (21 내지 29) 각각은 복수의 보드(board)들을 포함할 수 있다.
다양한 실시 예들에 있어서, 컴퓨팅 랙(20)은 적절한 수의 연산 보드(COMPUTE), 메모리 보드(MEMORY) 및/또는 상호접속 보드(INTERCONNECT)의 조합에 의해 구현될 수 있다. 여기서는 컴퓨팅 랙(20)이 복수의 보드들의 조합에 의해 구현되는 것으로 정의되고 있지만, 이를 대신하여, 드로워들, 모듈들, 트레이들, 보드들, 샷시들 또는 유닛들 등의 다양한 이름으로 구현되는 것으로 정의될 수 있음에 유의하여야 한다. 이러한 컴퓨팅 랙(20)의 구성요소들은 구현의 편의상 기능별로 분류 및 구별되는 구조를 가질 수 있다. 제한되는 것은 아니지만, 컴퓨팅 랙(20)은 상단부터 상호접속 보드, 연산 보드, 메모리 보드의 순서로 분류된 구조를 가질 수 있다. 이러한 컴퓨팅 랙(20) 및 이에 의해 구현되는 컴퓨팅 시스템은 "랙스케일 시스템(rack-scale system)" 또는"분류(또는 분리된) 시스템(disaggregated system)"으로 명명될 수 있다. 메모리 보드는 메모리 시스템으로 지칭될 수 있다.
다양한 실시 예들에 있어서, 컴퓨팅 시스템은 하나의 컴퓨팅 랙(20)에 의해 구현될 수 있다. 이를 대신하여, 컴퓨팅 시스템은 2개 이상의 컴퓨팅 랙들에 포함되는 모든 구성요소들에 의해 구현되거나, 2개 이상의 컴퓨팅 랙들에 포함되는 일부 구성요소들의 조합에 의해 구현되거나, 하나의 컴퓨팅 랙(20)에 포함되는 일부 구성요소들에 의해 구현될 수 있다.
다양한 실시 예들에 있어서, 컴퓨팅 시스템은 컴퓨팅 랙(20)에 포함되는 적절한 수의 연산 보드, 메모리 보드 및 상호접속 보드(interconnect board)의 조합에 의해 구현될 수 있다. 예를 들어, 컴퓨팅 시스템(20A)는 2개의 연산 보드(COMPUTE)들, 3개의 메모리 보드(MEMORY)들 및 1개의 상호접속 보드(INTERCONNECT)에 의해 구현될 수 있다. 다른 예로, 컴퓨팅 시스템(20B)는 3개의 연산 보드(COMPUTE)들, 2개의 메모리 보드(MEMORY)들 및 1개의 상호접속 보드(INTERCONNECT)에 의해 구현될 수 있다. 또 다른 예로, 컴퓨팅 시스템(20C)는 1개의 연산 보드(COMPUTE)들, 4개의 메모리 보드(MEMORY)들 및 1개의 상호접속 보드(INTERCONNECT)에 의해 구현될 수 있다.
비록 도 8에서는 컴퓨팅 랙(20)이 적절한 수의 연산 보드, 메모리 보드 및/또는 상호접속 보드의 조합에 의해 구현되는 경우를 도시하고 있지만, 컴퓨팅 랙(20)은 통상의 서버 등에서 확인될 수 있는, 파워 시스템, 냉각 시스템, 입력/출력 디바이스들과 같은 추가적인 구성요소들을 포함할 수 있다.
도 9는 일 실시 예에 의한 컴퓨팅 랙의 구성도이다.
도 9를 참조하면, 컴퓨팅 랙(20)은 복수의 연산 보드들(compute boards, 2000), 복수의 메모리 보드들(memory boards, 4000) 및 상호접속 보드(interconnect board, 3000)를 포함할 수 있다. 복수의 연산 보드들(2000)은 풀드 연산 보드(pooled compute boards), 풀드 연산 시스템 등으로 불리울 수 있다. 유사하게, 복수의 메모리 보드들(4000)은 풀드 메모리 보드(pooled memory board), 풀드 메모리 시스템 등으로 불리울 수 있다. 여기서는 컴퓨팅 시스템이 복수의 보드들의 조합에 의해 구현되는 것으로 정의되고 있지만, 이를 대신하여 드로워들, 모듈들, 트레이들, 보드들, 샷시들 또는 유닛들 등의 다양한 이름으로 구현되는 것으로 정의될 수 있음에 유의하여야 한다.
복수의 연산 보드들(2000) 각각은 하나 또는 그 이상의 프로세서, 프로세싱/컨트롤 회로, 또는 중앙처리장치(central processing unit, CPU)와 같은 하드웨어 및 하드웨어에서 실행 가능한 소프트웨어가 결합된 프로세싱 요소를 포함할 수 있다.
복수의 메모리 보드들(4000) 각각은 복수의 휘발성 메모리(volatile memory)들 및/또는 불휘발성 메모리(nonvolatile memory)들과 같은 다양한 형태의 메모리들을 포함할 수 있다. 예를 들어, 복수의 메모리 보드들(4000)은 복수의 DRAM(Dynamic Random Access Memory)들, 플래시 메모리(flash memory)들, 메모리 카드들, 하드 디스크 드라이브(hard disk drive, HDD)들, 솔리드 스테이트 드라이브(solid state drive, SSD)들, 및/또는 이들의 조합들을 포함할 수 있다.
복수의 메모리 보드들(4000) 각각은 연산 보드들(2000) 각각에 포함되는 하나 이상의 프로세싱 요소에 의해 분할되거나, 할당되거나, 또는 지정되어 사용될 수 있다. 또한 복수의 메모리 보드들(4000) 각각은 연산 보드들(2000)에 의해 초기화 및/또는 수행될 수 있는 하나 이상의 오퍼레이팅 시스템(operating system, OS)들을 저장할 수 있다.
상호접속 보드(3000)는 연산 보드들(2000) 각각에 포함되는 하나 이상의 프로세싱 요소에 의해 분할, 할당 또는 지정되어 사용될 수 있는, 임의의 통신 회로, 디바이스, 또는 이들의 결합에 의해 구현될 수 있다. 예를 들어, 상호접속 보드(3000)은 임의 개수의 네트워크 인터페이스 포트들, 카드들, 또는 스위치들로서 구현될 수 있다. 상호접속 보드(3000)은 통신을 실행시키기 위한, 하나 이상의 유선 또는 유선 통신 기술들과 관련된 프로토콜들을 사용할 수 있다. 예를 들어, 상호접속 보드(3000)는 PCIe(Peripheral Component Interconnect Express), QPI(QuickPath Interconnect), 이더넷(Ethernet) 등과 같은 프로토콜들에 따라 연산 보드들(2000)과 메모리 보드들(4000) 사이의 통신을 지원할 수 있다. 뿐만 아니라, 상호접속 보드(3000)는 CCIX(Cache Coherent Interconnect for accelerators) 및 GEN-Z와 같은 인터페이스 규격에 의해서 연산 보드들(2000)과 연결될 수 있다.
도 10은 일 실시 예에 의한 연산 보드의 구성도이다.
도 10을 참조하면, 연산 보드(2000)는 하나 이상의 중앙처리장치(central processing unit, CPU, 2100), 하나 이상의 로컬 메모리(local memory, 2200) 및 입출력(input/output, I/O) 인터페이스(interface, 2300)를 포함할 수 있다.
CPU(2100)는 도 9에 도시된 복수의 메모리 보드들(4000) 중에서 사용하기 위한 적어도 하나의 메모리 보드를 분할, 할당 또는 지정할 수 있다. 또한 CPU(2100)은 분할, 할당 또는 지정된 적어도 하나의 메모리 보드를 초기화하고, 이들을 통해 데이터의 리드 동작, 라이트(또는 프로그램) 동작 등을 수행할 수 있다.
로컬 메모리(2200)는 CPU(2100)의 동작 수행 중에 필요한 데이터를 저장할 수 있다. 다양한 실시 예들에 있어서, 하나의 로컬 메모리(2200)는 하나의 CPU(2100)에 일대일 대응하는 구조를 가질 수 있다.
I/O 인터페이스(2300)는 도 9의 상호접속 보드(3000)을 통한 CPU(2100)와 메모리 보드들(4000) 사이에서의 인터페이싱을 지원할 수 있다. I/O 인터페이스 (2300)는 하나 이상의 유선 또는 무선 통신 기술들과 관련된 프로토콜들을 사용하여, CPU(2100)로부터 상호접속 보드(3000)으로의 송신 데이터를 출력하고, 상호접속 보드(3000)으로부터 CPU(2100)으로의 수신 데이터를 입력할 수 있다. 예를 들어, I/O 인터페이스(2300)는 PCIe(Peripheral Component Interconnect Express), QPI(QuickPath Interconnect), 이더넷(Ethernet) 등과 같은 프로토콜들에 따라 CPU (2100)과 상호접속 보드(3000) 사이의 통신을 지원할 수 있다. 뿐만 아니라, I/O 인터페이스(2300)는 CCIX(Cache Coherent Interconnect for accelerators) 및 GEN-Z와 같은 인터페이스 규격에 따라 CPU(2100)와 상호접속 보드(3000) 사이의 통신을 지원할 수 있다.
도 11은 일 실시 예에 의한 메모리 보드의 구성도이다.
도 11을 참조하면, 메모리 보드(4000)는 컨트롤러(4100)와 복수의 메모리 그룹(4200)을 포함할 수 있다. 메모리 그룹(4200)은 적어도 한 종류 이상의 메모리 장치(4200A, 4200B, 4200C)를 포함할 수 있다. 메모리 장치(4200A, 4200B, 4200C)는 컨트롤러(4100)의 제어에 따라 데이터를 저장(또는 라이트)하고, 저장된 데이터를 출력(또는 리드)할 수 있다. 복수의 메모리 그룹(4200)은 제 1 메모리 장치(4200A), 제 2 메모리 장치(4200B) 및 제 3 메모리 장치(4200C)를 포함할 수 있다. 제 1 메모리 장치(4200A), 제 2 메모리 장치(4200B) 및 제 3 메모리 장치(4200C)는 서로 동일한 특성을 가질 수도 있고, 서로 다른 특성을 가질 수도 있다. 다양한 실시 예들에 있어서, 제 1 메모리 장치(4200A), 제 2 메모리 장치 (4200B) 및 제 3 메모리 장치(4200C)는 저장 용량(capacity) 또는 레이턴시(latency) 측면에서 서로 갖거나 다른 특성을 가지는 메모리 장치들일 수 있다.
이와 같이, 본 발명이 속하는 기술분야의 당업자는 본 발명이 그 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로서 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
10 : 데이터 처리 장치
100 : 마스터 장치
200 : 인터커넥터
300 : 슬레이브 장치
100 : 마스터 장치
200 : 인터커넥터
300 : 슬레이브 장치
Claims (16)
- 목적지별 커맨드를 전송하는 마스터 장치;
복수의 커맨드 처리 영역을 각각 상기 목적지로 포함하는 슬레이브 장치; 및
상기 마스터 장치와 슬레이브 장치 간의 통신을 중계하는 컨트롤러;를 포함하며,
상기 컨트롤러는, 상기 커맨드에 타임 스탬프를 부여하고, 매 중재 사이클마다 상기 목적지가 상이한 커맨드를 한 쌍씩 서로 비교하여 타임 스탬프 값이 최대인 커맨드를 토너먼트 방식으로 선택하고 각 비교 스테이지마다의 커맨드 선택 이력을 저장하며, 상기 비교 대상 커맨드의 타임 스탬프가 동일한 경우 상기 커맨드 선택 이력에 기초하여 커맨드를 선택하도록 구성되는 컨트롤러;
를 포함하도록 구성되는 데이터 처리 장치. - 제 1 항에 있어서,
상기 컨트롤러는, 비교할 한 쌍의 커맨드가 모두 유효한 경우 상기 타임 스탬프 및 상기 커맨드 선택 이력에 기초하여 커맨드를 선택하도록 구성되는 데이터 처리 장치. - 제 1 항에 있어서,
상기 컨트롤러는, 비교할 한 쌍의 커맨드 중 어느 하나가 유효한 경우 상기 유효한 커맨드를 선택하도록 구성되는 데이터 처리 장치. - 제 1 항에 있어서,
상기 컨트롤러는, 비교할 한 쌍의 커맨드가 모두 무효인 경우 현재 비교 스테이지의 비교 결과를 다음 비교 스테이지에 전달하지 않고 폐기하는 데이터 처리 장치. - 목적지별 커맨드를 전송하는 마스터 장치;
복수의 커맨드 처리 영역을 각각 상기 목적지로 포함하는 슬레이브 장치; 및
상기 마스터 장치와 슬레이브 장치 간의 통신을 중계하는 컨트롤러;를 포함하며,
상기 컨트롤러는, 상기 커맨드에 상기 타임 스탬프를 부여하는 타임 스탬프 설정부;
상기 타임 스탬프가 부여된 상기 커맨드를 도착 순서에 따라 저장하는 커맨드 레지스터; 및
상기 커맨드를 도착 순서에 따라 목적지 별로 분류하며, 상기 타임 스탬프에 기초하여 상기 목적지별 선두 커맨드 중 하나를 선택하되, 상기 타임 스탬프가 동일한 경우 이전 중재 사이클의 커맨드 선택 이력을 참조하여 커맨드를 선택하는 스케쥴러;
를 포함하도록 구성되는 데이터 처리 장치. - 제 5 항에 있어서,
상기 스케쥴러는, 상기 커맨드 선택 이력에 기초하여 이전 중재 사이클에서 미선택한 목적지의 커맨드를 선택하도록 구성되는 데이터 처리 장치. - 제 5 항에 있어서,
상기 스케쥴러는, 복수의 비교 스테이지를 포함하고,
상기 비교 스테이지 각각은, 목적지가 상이한 한 쌍의 커맨드 및 상기 커맨드 선택 이력에 응답하여 어느 하나의 커맨드를 선택하고, 매 중재 사이클의 상기 선택 결과를 상기 커맨드 선택 이력으로 피드백하도록 구성되는 적어도 하나의 비교 회로를 포함하는 데이터 처리 장치. - 제 7 항에 있어서,
상기 비교 회로는 상기 비교할 한 쌍의 커맨드가 모두 유효한 경우 상기 타임 스탬프 및 상기 커맨드 선택 이력에 기초하여 커맨드를 선택하도록 구성되는 데이터 처리 장치. - 제 7 항에 있어서,
상기 비교 회로는, 상기 비교할 한 쌍의 커맨드 중 어느 하나가 유효한 경우 상기 유효한 커맨드를 선택하도록 구성되는 데이터 처리 장치. - 제 7 항에 있어서,
상기 비교 회로는, 비교할 한 쌍의 커맨드가 모두 무효인 경우 현재 비교 스테이지의 비교 결과를 다음 비교 스테이지에 전달하지 않고 폐기하는 데이터 처리 장치. - 목적지별 커맨드를 전송하는 마스터 장치와, 복수의 커맨드 처리 영역을 각각 상기 목적지로 포함하는 슬레이브 장치 간의 통신을 중계하는 컨트롤러를 포함하는 데이터 처리 장치의 동작 방법으로서,
상기 컨트롤러가 상기 커맨드에 상기 타임 스탬프를 부여하여 저장하는 단계;
상기 컨트롤러가 상기 커맨드를 도착 순서에 따라 목적지 별로 분류하는 단계;
상기 컨트롤러가 상기 타임 스탬프에 기초하여 상기 목적지별 선두 커맨드 중 하나를 선택하는 단계; 및
상기 타임 스탬프가 동일한 경우, 상기 컨트롤러가 이전 중재 사이클의 커맨드 선택 이력을 참조하여 커맨드를 선택하는 단계;
를 포함하도록 구성되는 데이터 처리 장치의 동작 방법. - 제 11 항에 있어서,
상기 커맨드를 선택하는 단계는, 상기 커맨드 선택 이력에 기초하여 이전 중재 사이클에서 미선택한 목적지의 커맨드를 선택하는 단계를 포함하도록 구성되는 데이터 처리 장치의 동작 방법. - 제 11 항에 있어서,
상기 목적지별 선두 커맨드 중 하나를 선택하는 단계는, 목적지가 상이한 한 쌍의 커맨드의 타임 스탬프를 비교하는 단계;
상기타임 스탬프 비교 결과 및 상기 커맨드 선택 이력에 응답하여 어느 하나의 커맨드를 선택하는 단계;
매 중재 사이클의 상기 선택 결과를 상기 커맨드 선택 이력으로 피드백하는 단계;
를 포함하도록 구성되는 데이터 처리 장치의 동작 방법. - 제 13 항에 있어서,
상기 비교할 한 쌍의 커맨드의 유효성을 확인하는 단계;
상기 비교할 한 쌍의 커맨드가 모두 유효한 경우 상기 타임 스탬프 비교 결과 및 상기 커맨드 선택 이력에 기초하여 커맨드를 선택하는 단계;
를 포함하도록 구성되는 데이터 처리 장치의 동작 방법. - 제 13 항에 있어서,
상기 비교할 한 쌍의 커맨드의 유효성을 확인하는 단계;
상기 비교할 한 쌍의 커맨드 중 어느 하나가 유효한 경우 상기 유효한 커맨드를 선택하는 단계;
를 포함하도록 구성되는 데이터 처리 장치의 동작 방법. - 제 13 항에 있어서,
상기 비교할 한 쌍의 커맨드의 유효성을 확인하는 단계;
상기 비교할 한 쌍의 커맨드가 모두 무효인 경우 현재 비교 스테이지의 비교 결과를 다음 비교 스테이지에 전달하지 않고 폐기하는 단계;
를 더 포함하도록 구성되는 데이터 처리 장치의 동작 방법.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200018504A KR20210103836A (ko) | 2020-02-14 | 2020-02-14 | 데이터 처리 장치 및 그 동작 방법 |
US16/997,256 US11449449B2 (en) | 2020-02-14 | 2020-08-19 | Data processing apparatus and operating method thereof |
CN202110023075.1A CN113268442A (zh) | 2020-02-14 | 2021-01-08 | 数据处理设备及其操作方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200018504A KR20210103836A (ko) | 2020-02-14 | 2020-02-14 | 데이터 처리 장치 및 그 동작 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20210103836A true KR20210103836A (ko) | 2021-08-24 |
Family
ID=77227984
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200018504A KR20210103836A (ko) | 2020-02-14 | 2020-02-14 | 데이터 처리 장치 및 그 동작 방법 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11449449B2 (ko) |
KR (1) | KR20210103836A (ko) |
CN (1) | CN113268442A (ko) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6973427B2 (ja) * | 2019-02-15 | 2021-11-24 | 株式会社安川電機 | 通信システム、通信方法、及びプログラム |
TWI813316B (zh) * | 2022-05-31 | 2023-08-21 | 瑞昱半導體股份有限公司 | 多端資料存取控制方法與資料存取系統 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2387932B (en) | 2002-04-26 | 2005-06-22 | Motorola Inc | Apparatus and method for scheduling tasks in a communications network |
US7120714B2 (en) * | 2003-05-27 | 2006-10-10 | Intel Corporation | High-speed starvation-free arbiter system, rotating-priority arbiter, and two stage arbitration method |
US7975086B1 (en) * | 2004-03-08 | 2011-07-05 | Pmc-Sierra Us, Inc. | Apparatus for real-time arbitration between masters and requestors and method for operating the same |
US7263566B2 (en) * | 2004-12-30 | 2007-08-28 | Qualcomm Incorporated | Method and apparatus of reducing transfer latency in an SOC interconnect |
US20070174529A1 (en) * | 2005-12-29 | 2007-07-26 | Intel Corporation | Queue manager having a multi-level arbitrator |
US7447817B1 (en) * | 2006-05-09 | 2008-11-04 | Qlogic Corporation | Method and system for processing arbitration requests |
DE602006019005D1 (de) * | 2006-06-27 | 2011-01-27 | Thomson Licensing | Verfahren und vorrichtung zur durchführung der arbitrierung |
US7930456B1 (en) * | 2006-12-23 | 2011-04-19 | Emc Corporation | Data packet arbitration system |
US7734856B2 (en) * | 2007-08-22 | 2010-06-08 | Lantiq Deutschland Gmbh | Method for operating a plurality of arbiters and arbiter system |
US8046559B2 (en) | 2008-03-27 | 2011-10-25 | Intel Corporation | Memory rank burst scheduling |
EP2192496B1 (en) * | 2008-11-28 | 2013-01-23 | Telefonaktiebolaget LM Ericsson (publ) | Arbitration in multiprocessor device |
US9514074B2 (en) * | 2009-02-13 | 2016-12-06 | The Regents Of The University Of Michigan | Single cycle arbitration within an interconnect |
US8793421B2 (en) * | 2011-10-31 | 2014-07-29 | Apple Inc. | Queue arbitration using non-stalling request indication |
TWI553483B (zh) * | 2014-10-13 | 2016-10-11 | 瑞昱半導體股份有限公司 | 處理器及存取記憶體的方法 |
US10866910B2 (en) * | 2015-09-28 | 2020-12-15 | Sandisk Technologies Llc | Systems, methods, and computer-readable media for managing instruction fetch in virtual computing environments |
KR20180126793A (ko) * | 2017-05-18 | 2018-11-28 | 삼성전자주식회사 | 커맨드 컨트롤러를 포함하는 애플리케이션 프로세서 및 집적 회로 |
KR20210031185A (ko) * | 2019-09-11 | 2021-03-19 | 에스케이하이닉스 주식회사 | 데이터 처리 장치 및 그 동작 방법 |
-
2020
- 2020-02-14 KR KR1020200018504A patent/KR20210103836A/ko active Search and Examination
- 2020-08-19 US US16/997,256 patent/US11449449B2/en active Active
-
2021
- 2021-01-08 CN CN202110023075.1A patent/CN113268442A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US11449449B2 (en) | 2022-09-20 |
US20210255978A1 (en) | 2021-08-19 |
CN113268442A (zh) | 2021-08-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110008149B (zh) | 融合式存储器件及其操作方法 | |
US11243716B2 (en) | Memory system and operation method thereof | |
US11372794B2 (en) | Data processing apparatus for arbitration of requests and operation method thereof | |
JP2002502070A (ja) | 共有メモリリソースを有するマルチプロセッサコンピュータシステムにおける動的優先度競合解消のためのシステムおよび方法 | |
KR20210103836A (ko) | 데이터 처리 장치 및 그 동작 방법 | |
US20200348871A1 (en) | Memory system, operating method thereof and computing system for classifying data according to read and write counts and storing the classified data in a plurality of types of memory devices | |
EP3588307B1 (en) | Non volatile memory module for rack implementations | |
US10078602B2 (en) | Information processing apparatus, memory controller, and memory control method | |
US20210181959A1 (en) | Computing system and operating method thereof | |
KR102455880B1 (ko) | 메모리 시스템 및 메모리 시스템의 동작 방법 | |
US11016666B2 (en) | Memory system and operating method thereof | |
JP2020087409A (ja) | データ処理システム | |
KR20190056626A (ko) | 통합 메모리 디바이스 및 그의 동작 방법 | |
US11223575B2 (en) | Re-purposing byte enables as clock enables for power savings | |
US20240220104A1 (en) | Memory control system and memory control method | |
JP2017102560A (ja) | データバッファ装置、及びfifo制御方法 | |
CN118034932A (zh) | 一种内存管理方法、装置、设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination |