KR20210103836A - 데이터 처리 장치 및 그 동작 방법 - Google Patents

데이터 처리 장치 및 그 동작 방법 Download PDF

Info

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
Application number
KR1020200018504A
Other languages
English (en)
Inventor
김기영
Original Assignee
에스케이하이닉스 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에스케이하이닉스 주식회사 filed Critical 에스케이하이닉스 주식회사
Priority to KR1020200018504A priority Critical patent/KR20210103836A/ko
Priority to US16/997,256 priority patent/US11449449B2/en
Priority to CN202110023075.1A priority patent/CN113268442A/zh
Publication of KR20210103836A publication Critical patent/KR20210103836A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1626Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
    • G06F13/1631Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests through address comparison
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/14Time supervision arrangements, e.g. real time clock
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1663Access to shared memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/368Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control
    • G06F13/372Handling 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/368Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control
    • G06F13/374Handling 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • G06F9/38585Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling 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

데이터 처리 장치 및 그 동작 방법{Data Processing Apparatus and Operation Method Thereof}
본 발명은 반도체 집적 장치에 관한 것으로, 보다 구체적으로는 데이터 처리 장치 및 그 동작 방법에 관한 것이다.
복수의 디바이스가 집적된 반도체 집적 장치에서, 공유 메모리와 같은 공유 리소스에 대한 액세스 효율을 향상시키기 위해 다양한 중재 기법이 연구되고 있다.
적어도 하나의 마스터 장치가 슬레이브 장치로 전송하는 커맨드를 중재하기 위해서는 커맨드별 우선순위 및 레이턴시를 고려할 수 있으며, 이를 통해 공유 리소스를 최대한 활용하면서 최대 전력 효율 및 최저 레이턴시를 달성할 수 있도록 중재할 것이 요구된다.
본 기술의 실시예는 입력되는 커맨드의 처리 순서를 최적화할 수 있는 데이터 처리 장치 및 그 동작 방법을 제공할 수 있다.
본 기술의 일 실시예에 의한 데이터 처리 장치는 목적지별 커맨드를 전송하는 마스터 장치; 복수의 커맨드 처리 영역을 각각 상기 목적지로 포함하는 슬레이브 장치; 및 상기 마스터 장치와 슬레이브 장치 간의 통신을 중계하는 컨트롤러;를 포함하며, 상기 컨트롤러는, 상기 커맨드에 타임 스탬프를 부여하고, 매 중재 사이클마다 상기 목적지가 상이한 커맨드를 한 쌍씩 서로 비교하여 타임 스탬프 값이 최대인 커맨드를 토너먼트 방식으로 선택하고 각 비교 스테이지마다의 커맨드 선택 이력을 저장하며, 상기 비교 대상 커맨드의 타임 스탬프가 동일한 경우 상기 커맨드 선택 이력에 기초하여 커맨드를 선택하도록 구성되는 컨트롤러;를 포함하도록 구성될 수 있다.
본 기술의 일 실시예에 의한 데이터 처리 장치는 목적지별 커맨드를 전송하는 마스터 장치; 복수의 커맨드 처리 영역을 각각 상기 목적지로 포함하는 슬레이브 장치; 및 상기 마스터 장치와 슬레이브 장치 간의 통신을 중계하는 컨트롤러;를 포함하며, 상기 컨트롤러는, 상기 커맨드에 상기 타임 스탬프를 부여하는 타임 스탬프 설정부; 상기 타임 스탬프가 부여된 상기 커맨드를 도착 순서에 따라 저장하는 커맨드 레지스터; 및 상기 커맨드를 도착 순서에 따라 목적지 별로 분류하며, 상기 타임 스탬프에 기초하여 상기 목적지별 선두 커맨드 중 하나를 선택하되, 상기 타임 스탬프가 동일한 경우 이전 중재 사이클의 커맨드 선택 이력을 참조하여 커맨드를 선택하는 스케쥴러;를 포함하도록 구성될 수 있다.
본 기술의 일 실시예에 의한 데이터 처리 장치의 동작 방법은 목적지별 커맨드를 전송하는 마스터 장치와, 복수의 커맨드 처리 영역을 각각 상기 목적지로 포함하는 슬레이브 장치 간의 통신을 중계하는 컨트롤러를 포함하는 데이터 처리 장치의 동작 방법으로서, 상기 컨트롤러가 상기 커맨드에 상기 타임 스탬프를 부여하여 저장하는 단계; 상기 컨트롤러가 상기 커맨드를 도착 순서에 따라 목적지 별로 분류하는 단계; 상기 컨트롤러가 상기 타임 스탬프에 기초하여 상기 목적지별 선두 커맨드 중 하나를 선택하는 단계; 및 상기 타임 스탬프가 동일한 경우, 상기 컨트롤러가 이전 중재 사이클의 커맨드 선택 이력을 참조하여 커맨드를 선택하는 단계;를 포함하도록 구성될 수 있다.
본 기술에 의하면, 커맨드를 처리할 목적지 별로 커맨드가 도착한 순서에 기초하여 커맨드 처리 순서를 중재하되, 도착 순서를 판별할 수 없는 경우에는 이전 중재 사이클의 중재 이력에 기초하여 처리 순서를 중재할 수 있다.
따라서 커맨드를 처리할 목적지 별로 고르게 커맨드를 전송하여 공유 리소스를 효율적으로 사용할 수 있다.
도 1은 일 실시예에 의한 데이터 처리 장치의 구성도이다.
도 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 : 슬레이브 장치

Claims (16)

  1. 목적지별 커맨드를 전송하는 마스터 장치;
    복수의 커맨드 처리 영역을 각각 상기 목적지로 포함하는 슬레이브 장치; 및
    상기 마스터 장치와 슬레이브 장치 간의 통신을 중계하는 컨트롤러;를 포함하며,
    상기 컨트롤러는, 상기 커맨드에 타임 스탬프를 부여하고, 매 중재 사이클마다 상기 목적지가 상이한 커맨드를 한 쌍씩 서로 비교하여 타임 스탬프 값이 최대인 커맨드를 토너먼트 방식으로 선택하고 각 비교 스테이지마다의 커맨드 선택 이력을 저장하며, 상기 비교 대상 커맨드의 타임 스탬프가 동일한 경우 상기 커맨드 선택 이력에 기초하여 커맨드를 선택하도록 구성되는 컨트롤러;
    를 포함하도록 구성되는 데이터 처리 장치.
  2. 제 1 항에 있어서,
    상기 컨트롤러는, 비교할 한 쌍의 커맨드가 모두 유효한 경우 상기 타임 스탬프 및 상기 커맨드 선택 이력에 기초하여 커맨드를 선택하도록 구성되는 데이터 처리 장치.
  3. 제 1 항에 있어서,
    상기 컨트롤러는, 비교할 한 쌍의 커맨드 중 어느 하나가 유효한 경우 상기 유효한 커맨드를 선택하도록 구성되는 데이터 처리 장치.
  4. 제 1 항에 있어서,
    상기 컨트롤러는, 비교할 한 쌍의 커맨드가 모두 무효인 경우 현재 비교 스테이지의 비교 결과를 다음 비교 스테이지에 전달하지 않고 폐기하는 데이터 처리 장치.
  5. 목적지별 커맨드를 전송하는 마스터 장치;
    복수의 커맨드 처리 영역을 각각 상기 목적지로 포함하는 슬레이브 장치; 및
    상기 마스터 장치와 슬레이브 장치 간의 통신을 중계하는 컨트롤러;를 포함하며,
    상기 컨트롤러는, 상기 커맨드에 상기 타임 스탬프를 부여하는 타임 스탬프 설정부;
    상기 타임 스탬프가 부여된 상기 커맨드를 도착 순서에 따라 저장하는 커맨드 레지스터; 및
    상기 커맨드를 도착 순서에 따라 목적지 별로 분류하며, 상기 타임 스탬프에 기초하여 상기 목적지별 선두 커맨드 중 하나를 선택하되, 상기 타임 스탬프가 동일한 경우 이전 중재 사이클의 커맨드 선택 이력을 참조하여 커맨드를 선택하는 스케쥴러;
    를 포함하도록 구성되는 데이터 처리 장치.
  6. 제 5 항에 있어서,
    상기 스케쥴러는, 상기 커맨드 선택 이력에 기초하여 이전 중재 사이클에서 미선택한 목적지의 커맨드를 선택하도록 구성되는 데이터 처리 장치.
  7. 제 5 항에 있어서,
    상기 스케쥴러는, 복수의 비교 스테이지를 포함하고,
    상기 비교 스테이지 각각은, 목적지가 상이한 한 쌍의 커맨드 및 상기 커맨드 선택 이력에 응답하여 어느 하나의 커맨드를 선택하고, 매 중재 사이클의 상기 선택 결과를 상기 커맨드 선택 이력으로 피드백하도록 구성되는 적어도 하나의 비교 회로를 포함하는 데이터 처리 장치.
  8. 제 7 항에 있어서,
    상기 비교 회로는 상기 비교할 한 쌍의 커맨드가 모두 유효한 경우 상기 타임 스탬프 및 상기 커맨드 선택 이력에 기초하여 커맨드를 선택하도록 구성되는 데이터 처리 장치.
  9. 제 7 항에 있어서,
    상기 비교 회로는, 상기 비교할 한 쌍의 커맨드 중 어느 하나가 유효한 경우 상기 유효한 커맨드를 선택하도록 구성되는 데이터 처리 장치.
  10. 제 7 항에 있어서,
    상기 비교 회로는, 비교할 한 쌍의 커맨드가 모두 무효인 경우 현재 비교 스테이지의 비교 결과를 다음 비교 스테이지에 전달하지 않고 폐기하는 데이터 처리 장치.
  11. 목적지별 커맨드를 전송하는 마스터 장치와, 복수의 커맨드 처리 영역을 각각 상기 목적지로 포함하는 슬레이브 장치 간의 통신을 중계하는 컨트롤러를 포함하는 데이터 처리 장치의 동작 방법으로서,
    상기 컨트롤러가 상기 커맨드에 상기 타임 스탬프를 부여하여 저장하는 단계;
    상기 컨트롤러가 상기 커맨드를 도착 순서에 따라 목적지 별로 분류하는 단계;
    상기 컨트롤러가 상기 타임 스탬프에 기초하여 상기 목적지별 선두 커맨드 중 하나를 선택하는 단계; 및
    상기 타임 스탬프가 동일한 경우, 상기 컨트롤러가 이전 중재 사이클의 커맨드 선택 이력을 참조하여 커맨드를 선택하는 단계;
    를 포함하도록 구성되는 데이터 처리 장치의 동작 방법.
  12. 제 11 항에 있어서,
    상기 커맨드를 선택하는 단계는, 상기 커맨드 선택 이력에 기초하여 이전 중재 사이클에서 미선택한 목적지의 커맨드를 선택하는 단계를 포함하도록 구성되는 데이터 처리 장치의 동작 방법.
  13. 제 11 항에 있어서,
    상기 목적지별 선두 커맨드 중 하나를 선택하는 단계는, 목적지가 상이한 한 쌍의 커맨드의 타임 스탬프를 비교하는 단계;
    상기타임 스탬프 비교 결과 및 상기 커맨드 선택 이력에 응답하여 어느 하나의 커맨드를 선택하는 단계;
    매 중재 사이클의 상기 선택 결과를 상기 커맨드 선택 이력으로 피드백하는 단계;
    를 포함하도록 구성되는 데이터 처리 장치의 동작 방법.
  14. 제 13 항에 있어서,
    상기 비교할 한 쌍의 커맨드의 유효성을 확인하는 단계;
    상기 비교할 한 쌍의 커맨드가 모두 유효한 경우 상기 타임 스탬프 비교 결과 및 상기 커맨드 선택 이력에 기초하여 커맨드를 선택하는 단계;
    를 포함하도록 구성되는 데이터 처리 장치의 동작 방법.
  15. 제 13 항에 있어서,
    상기 비교할 한 쌍의 커맨드의 유효성을 확인하는 단계;
    상기 비교할 한 쌍의 커맨드 중 어느 하나가 유효한 경우 상기 유효한 커맨드를 선택하는 단계;
    를 포함하도록 구성되는 데이터 처리 장치의 동작 방법.
  16. 제 13 항에 있어서,
    상기 비교할 한 쌍의 커맨드의 유효성을 확인하는 단계;
    상기 비교할 한 쌍의 커맨드가 모두 무효인 경우 현재 비교 스테이지의 비교 결과를 다음 비교 스테이지에 전달하지 않고 폐기하는 단계;
    를 더 포함하도록 구성되는 데이터 처리 장치의 동작 방법.
KR1020200018504A 2020-02-14 2020-02-14 데이터 처리 장치 및 그 동작 방법 KR20210103836A (ko)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 에스케이하이닉스 주식회사 데이터 처리 장치 및 그 동작 방법

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