KR20180038875A - 데이터 입출력 유닛, 전자 장치 및 그 제어 방법들 - Google Patents
데이터 입출력 유닛, 전자 장치 및 그 제어 방법들 Download PDFInfo
- Publication number
- KR20180038875A KR20180038875A KR1020160130051A KR20160130051A KR20180038875A KR 20180038875 A KR20180038875 A KR 20180038875A KR 1020160130051 A KR1020160130051 A KR 1020160130051A KR 20160130051 A KR20160130051 A KR 20160130051A KR 20180038875 A KR20180038875 A KR 20180038875A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- fifo memory
- processor
- output
- unit
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 37
- 239000000872 buffer Substances 0.000 claims abstract description 279
- 230000005540 biological transmission Effects 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 15
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000004904 shortening Methods 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/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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
- G06F5/065—Partitioned buffers, e.g. allowing multiple independent queues, bidirectional FIFO's
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G06F9/3855—
-
- 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/3856—Reordering of instructions, e.g. using queues or age tags
-
- 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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Transfer Systems (AREA)
- Multi Processors (AREA)
Abstract
제1 스케줄 중 커널(Kernel)의 싸이클(Cycle)이 축소된 제2 스케줄에 기초하여 데이터를 처리하는 프로세서와 연결되며, 제1 스케줄에 기초하여 데이터를 순차적으로 제공받아 출력하는 데이터 입출력 유닛이 개시된다. 본 데이터 입출력 유닛은, 외부 유닛 및 프로세서 간 입출력 데이터를 순차적으로 저장하는 FIFO 메모리부 및 FIFO 메모리부의 일측에 연결되며, FIFO 메모리부로부터 출력되거나 FIFO 메모리부로 입력되는 데이터를 복수의 버퍼 영역에 순차적으로 저장하며, 프로세서로부터 제공되는 컨트롤 신호에 기초하여 복수의 버퍼 영역 중 하나에 저장된 데이터를 출력하는 리오더링 버퍼(Reordering Buffer)부를 포함한다.
Description
본 발명은 데이터 입출력 유닛, 전자 장치 및 그 제어 방법들에 대한 것으로, 더욱 상세하게는 FIFO 메모리를 구비하여 데이터를 입출력하는 데이터 입출력 유닛, 전자 장치 및 그 제어 방법들에 대한 것이다.
DSP Core와 외부 메모리 또는 외부 하드웨어와의 데이터 송수신은 보통 시스템 버스의 프로토콜을 통해서 이루어진다. 버스 프로토콜을 이용한 데이터 Read/Write은 버스의 상황에 따라 많은 싸이클이 소요될 수 있고, 이것이 DSP Core를 포함한 시스템 성능의 Bottle Neck(병목)일 수 있다. 결국, 시스템 성능 향상을 위해, 데이터 전송 싸이클을 줄일 필요가 있다.
데이터 전송 싸이클을 줄이는 방법으로 FIFO 메모리를 이용하는 방법이 있다. FIFO 메모리는 데이터를 저장할 수 있는 경우, 지속적으로 데이터를 요청하여 저장하고, Core는 FIFO 메모리에 데이터가 있을 경우 즉시 가져올 수 있다. 즉, FIFO 메모리는 Core에서 필요한 시점 이전에 데이터를 저장해두기 때문에 데이터 전송 싸이클을 줄일 수 있다.
또한, 성능 가속을 위해 데이터 입출력 명령들의 loop 처리 및 Software Pipelining을 통해 입출력 명령들의 병렬화를 최대한 이용할 수 있다.
다만, loop 수행 시 Core에서 FIFO 메모리에 여러 번 접근해야 할 경우 반드시 접근의 순서가 지켜질 필요가 있다. 일반적인 메모리는 데이터의 저장 주소를 이용하여 데이터를 출력하기 때문에 문제가 되지 않으나, FIFO 메모리는 데이터의 저장 주소가 없이 순차적으로 데이터를 출력하기 때문에 접근 순서가 중요하다.
즉, loop 내에 Load FIFO로부터 데이터를 Read하는 pop이나 Store FIFO로 데이터를 Write 하는 Push가 여러 번 있을 때, 이들 간의 Dependency를 고려하지 않고 Software Pipelining을 한다면, 한 싸이클 동안 병렬 처리할 수 있는 명령어들의 수가 증가하여 큰 성능 향상을 얻을 수 있으나, FIFO 메모리 접근의 순서가 뒤바뀔 수 있다. 또는, 이들 간의 Dependency를 고려하여 Software Pipelining을 한다면 한 싸이클 동안 병렬 처리할 수 있는 명령어의 수가 충분하지 못하여, 최적의 성능 향상을 얻을 수 없다. 그에 따라, FIFO 메모리를 이용하면서도 병렬 처리 효율을 향상시키기 위한 방법이 모색되고 있다.
본 발명은 상술한 필요성에 따른 것으로, 본 발명의 목적은 FIFO 메모리를 이용하여 데이터를 입출력하여 데이터의 송수신 속도를 향상시키기 위한 데이터 입출력 유닛, 전자 장치 및 그 제어 방법들을 제공함에 있다.
이상과 같은 목적을 달성하기 위한 본 발명의 일 실시 예에 따르면, 제1 스케줄 중 커널(Kernel)의 싸이클(Cycle)이 축소된 제2 스케줄에 기초하여 데이터를 처리하는 프로세서와 연결되며, 상기 스케줄에 기초하여 데이터를 순차적으로 제공받아 출력하는 데이터 입출력 유닛은, 외부 유닛 및 상기 프로세서 간 입출력 데이터를 순차적으로 저장하는 FIFO 메모리부 및 상기 FIFO 메모리부의 일측에 연결되며, 상기 FIFO 메모리부로부터 출력되거나 상기 FIFO 메모리부로 입력되는 데이터를 복수의 버퍼 영역에 순차적으로 저장하며, 상기 프로세서로부터 제공되는 컨트롤 신호에 기초하여 상기 복수의 버퍼 영역 중 하나에 저장된 데이터를 출력하는 리오더링 버퍼(Reordering Buffer)부를 포함한다.
또한, 상기 FIFO 메모리부는 상기 외부 유닛으로부터 입력된 데이터를 상기 프로세서로 제공하는 제1 FIFO 메모리 및 상기 프로세서로부터는 출력되는 데이터를 상기 외부 유닛으로 제공하는 제2 FIFO 메모리를 포함하고, 상기 리오더링 버퍼부는 상기 제1 FIFO 메모리의 일측에 연결되는 제1 리오더링 버퍼 및 상기 제2 FIFO 메모리의 일측에 연결되는 제2 리오더링 버퍼를 포함할 수 있다.
그리고, 상기 제1 리오더링 버퍼는 상기 제1 FIFO 메모리의 출력 측 및 상기 프로세서의 입력 측에 연결되어, 상기 제1 FIFO 메모리로부터 순차적으로 출력되는 데이터를 복수의 제1 버퍼 영역에 순차적으로 저장하며, 상기 컨트롤 신호에 기초하여 상기 복수의 제1 버퍼 영역 중 하나에 저장된 데이터를 출력하여 상기 프로세서로 제공할 수 있다.
또한, 상기 제1 리오더링 버퍼는 상기 외부 유닛의 출력 측 및 상기 제1 FIFO 메모리의 입력 측에 연결되어, 상기 외부 유닛으로부터 출력되는 데이터를 복수의 제1 버퍼 영역에 순차적으로 저장하며, 상기 컨트롤 신호에 기초하여 상기 복수의 제1 버퍼 영역 중 하나에 저장된 데이터를 출력하여 상기 제1 FIFO 메모리로 제공하며, 상기 제1 FIFO 메모리는 상기 프로세서의 로드(load) 명령이 수신되면 상기 제1 FIFO 메모리에 저장된 데이터를 순차적으로 출력하여 상기 프로세서로 제공할 수 있다.
그리고, 상기 제2 FIFO 메모리는 상기 프로세서로부터 출력되는 데이터를 순차적으로 저장하고, 상기 저장된 데이터를 순차적으로 출력하여 상기 제2 리오더링 버퍼로 제공하며, 상기 제2 리오더링 버퍼는 상기 제2 FIFO 메모리의 출력 측 및 상기 외부 유닛의 입력 측에 연결되어, 상기 제2 FIFO 메모리로부터 순차적으로 출력되는 데이터를 복수의 제2 버퍼 영역에 순차적으로 저장하며, 상기 컨트롤 신호에 기초하여 상기 복수의 제2 버퍼 영역 중 하나에 저장된 데이터를 출력하여 상기 외부 유닛으로 제공할 수 있다.
또한, 상기 제2 리오더링 버퍼는 상기 프로세서의 출력 측 및 상기 제2 FIFO 메모리의 입력 측에 연결되어, 상기 프로세서로부터 출력되는 데이터를 복수의 제2 버퍼 영역에 순차적으로 저장하며, 상기 컨트롤 신호에 기초하여 상기 복수의 제2 버퍼 영역 중 하나에 저장된 데이터를 출력하여 상기 제2 FIFO 메모리로 제공할 수 있다.
그리고, 상기 데이터 입출력 유닛은 상기 제1 FIFO 메모리가 비어 있는 상태에서 상기 프로세서의 로드(load) 명령이 수신되거나, 상기 제2 FIFO 메모리에 저장 공간이 없는 상태에서 상기 프로세서의 스토어(store) 명령이 수신되면, 상기 프로세서의 데이터 처리를 정지시키는 스톨(stall) 명령을 상기 프로세서로 전송할 수 있다.
또한, 상기 컨트롤 신호는 상기 제2 스케줄에 기초하여 상기 복수의 버퍼 영역 중 출력이 요구되는 데이터가 저장된 버퍼 영역을 지정하는 신호일 수 있다.
그리고, 상기 제2 스케줄은 상기 복수의 버퍼 영역의 개수에 기초하여 상기 제1 스케줄에 포함된 커널의 싸이클을 축소함에 따라, 입출력 명령어의 데이터 입출력 순서가 변경된 스케줄일 수 있다.
이상과 같은 목적을 달성하기 위한 본 발명의 일 실시 예에 따르면, 전자 장치는 제1 스케줄에 기초하여 데이터를 순차적으로 제공받아 출력하는 데이터 입출력 유닛 및 상기 제1 스케줄 중 커널(Kernel)의 싸이클(Cycle)이 축소된 제2 스케줄에 기초하여 데이터를 처리하는 프로세서를 포함하며, 상기 데이터 입출력 유닛은 외부 유닛 및 상기 프로세서 간 입출력 데이터를 순차적으로 저장하는 FIFO 메모리부 및 상기 FIFO 메모리부의 일측에 연결되며, 상기 FIFO 메모리부로부터 출력되거나 상기 FIFO 메모리부로 입력되는 데이터를 복수의 버퍼 영역에 순차적으로 저장하며, 상기 프로세서로부터 제공되는 컨트롤 신호에 기초하여 상기 복수의 버퍼 영역 중 하나에 저장된 데이터를 출력하는 리오더링 버퍼(Reordering Buffer)부를 포함한다.
한편, 본 발명의 일 실시 예에 따르면, 제1 스케줄 중 커널(Kernel)의 싸이클(Cycle)이 축소된 제2 스케줄에 기초하여 데이터를 처리하는 프로세서와 연결되며, 상기 제1 스케줄에 기초하여 데이터를 순차적으로 제공받아 출력하고, 외부 유닛 및 상기 프로세서 간 입출력 데이터를 순차적으로 저장하는 FIFO 메모리부 및 상기 FIFO 메모리부의 일측에 연결된 리오더링 버퍼(Reordering Buffer)부를 포함하는 데이터 입출력 유닛의 제어 방법은, 상기 FIFO 메모리부로부터 출력되거나 상기 FIFO 메모리부로 입력되는 데이터를 상기 리오더링 버퍼의 복수의 버퍼 영역에 순차적으로 저장하는 단계 및 상기 프로세서로부터 제공되는 컨트롤 신호에 기초하여 상기 복수의 버퍼 영역 중 하나에 저장된 데이터를 출력하는 단계를 포함한다.
또한, 상기 FIFO 메모리부는 상기 외부 유닛으로부터 입력된 데이터를 상기 프로세서로 제공하는 제1 FIFO 메모리 및 상기 프로세서로부터는 출력되는 데이터를 상기 외부 유닛으로 제공하는 제2 FIFO 메모리를 포함하고, 상기 리오더링 버퍼부는 상기 제1 FIFO 메모리의 일측에 연결되는 제1 리오더링 버퍼 및 상기 제2 FIFO 메모리의 일측에 연결되는 제2 리오더링 버퍼를 포함할 수 있다.
그리고, 상기 제1 리오더링 버퍼는 상기 제1 FIFO 메모리의 출력 측 및 상기 프로세서의 입력 측에 연결되며, 상기 저장하는 단계는 상기 제1 FIFO 메모리로부터 순차적으로 출력되는 데이터를 복수의 제1 버퍼 영역에 순차적으로 저장하며, 상기 출력하는 단계는 상기 컨트롤 신호에 기초하여 상기 복수의 제1 버퍼 영역 중 하나에 저장된 데이터를 출력하여 상기 프로세서로 제공할 수 있다.
또한, 상기 제1 리오더링 버퍼는 상기 외부 유닛의 출력 측 및 상기 제1 FIFO 메모리의 입력 측에 연결되며, 상기 저장하는 단계는 상기 외부 유닛으로부터 출력되는 데이터를 복수의 제1 버퍼 영역에 순차적으로 저장하며, 상기 출력하는 단계는 상기 컨트롤 신호에 기초하여 상기 복수의 제1 버퍼 영역 중 하나에 저장된 데이터를 출력하여 상기 제1 FIFO 메모리로 제공하며, 상기 프로세서의 로드(load) 명령이 수신되면 상기 제1 FIFO 메모리에 저장된 데이터를 순차적으로 출력하여 상기 프로세서로 제공하는 단계를 더 포함할 수 있다.
그리고, 상기 제2 리오더링 버퍼는 상기 제2 FIFO 메모리의 출력 측 및 상기 외부 유닛의 입력 측에 연결되며, 상기 프로세서로부터 출력되는 데이터를 상기 제2 FIFO 메모리에 순차적으로 저장하고, 상기 저장된 데이터를 순차적으로 출력하여 상기 제2 리오더링 버퍼로 제공하는 단계를 더 포함하고, 상기 저장하는 단계는 상기 제2 FIFO 메모리로부터 순차적으로 출력되는 데이터를 복수의 제2 버퍼 영역에 순차적으로 저장하며, 상기 출력하는 단계는 상기 컨트롤 신호에 기초하여 상기 복수의 제2 버퍼 영역 중 하나에 저장된 데이터를 출력하여 상기 외부 유닛으로 제공할 수 있다.
또한, 상기 제2 리오더링 버퍼는 상기 프로세서의 출력 측 및 상기 제2 FIFO 메모리의 입력 측에 연결되며, 상기 저장하는 단계는 상기 프로세서로부터 출력되는 데이터를 복수의 제2 버퍼 영역에 순차적으로 저장하며, 상기 출력하는 단계는 상기 컨트롤 신호에 기초하여 상기 복수의 제2 버퍼 영역 중 하나에 저장된 데이터를 출력하여 상기 제2 FIFO 메모리로 제공할 수 있다.
그리고, 상기 제1 FIFO 메모리가 비어 있는 상태에서 상기 프로세서의 로드(load) 명령이 수신되거나, 상기 제2 FIFO 메모리에 저장 공간이 없는 상태에서 상기 프로세서의 스토어(store) 명령이 수신되면, 상기 프로세서의 데이터 처리를 정지시키는 스톨(stall) 명령을 상기 프로세서로 전송하는 단계를 더 포함할 수 있다.
또한, 상기 컨트롤 신호는 상기 제2 스케줄에 기초하여 상기 복수의 버퍼 영역 중 출력이 요구되는 데이터가 저장된 버퍼 영역을 지정하는 신호일 수 있다.
그리고, 상기 제2 스케줄은 상기 복수의 버퍼 영역의 개수에 기초하여 상기 제1 스케줄에 포함된 커널의 싸이클을 축소함에 따라, 입출력 명령어의 데이터 입출력 순서가 변경된 스케줄일 수 있다.
한편, 본 발명의 일 실시 예에 따르면, 제1 스케줄에 기초하여 데이터를 순차적으로 제공받아 출력하고, 외부 유닛 및 프로세서 간 입출력 데이터를 순차적으로 저장하는 FIFO 메모리부 및 상기 FIFO 메모리부의 일측에 연결된 리오더링 버퍼(Reordering Buffer)부를 포함하는 데이터 입출력 유닛 및 상기 제1 스케줄 중 커널(Kernel)의 싸이클(Cycle)이 축소된 제2 스케줄에 기초하여 데이터를 처리하는 상기 프로세서를 포함하는 전자 장치의 제어 방법은, 상기 FIFO 메모리부로부터 출력되거나 상기 FIFO 메모리부로 입력되는 데이터를 상기 리오더링 버퍼의 복수의 버퍼 영역에 순차적으로 저장하는 단계 및 상기 프로세서로부터 제공되는 컨트롤 신호에 기초하여 상기 복수의 버퍼 영역 중 하나에 저장된 데이터를 출력하는 단계를 포함한다.
이상과 같은 본 발명의 다양한 실시 예에 따르면, 데이터 입출력 유닛이 프로세서로 입력되는 데이터의 순서를 변경함에 따라 프로세서의 스케줄 처리 속도를 향상시킬 수 있다.
도 1은 본 발명의 일 실시 예에 따른 데이터 입출력 유닛, 프로세서 및 외부 유닛을 개략적으로 설명하기 위한 도면이다.
도 2는 본 발명의 일 실시 예에 따른 데이터 입출력 유닛의 구성을 나타내는 블럭도이다.
도 3a 및 도 3b는 본 발명의 일 실시 예에 따른 스케줄을 설명하기 위한 도면이다.
도 4a 및 도 4b는 본 발명의 일 실시 예에 따른 제1 리오더링 버퍼의 동작을 설명하기 위한 도면이다.
도 5a 및 도 5b는 본 발명의 다른 실시 예에 따른 제1 리오더링 버퍼의 동작을 설명하기 위한 도면이다.
도 6은 본 발명의 다른 실시 예에 따른 스케줄을 설명하기 위한 도면이다.
도 7a 및 도 7b는 본 발명의 일 실시 예에 따른 제2 리오더링 버퍼의 동작을 설명하기 위한 도면이다.
도 8a 및 도 8b는 본 발명의 다른 실시 예에 따른 제2 리오더링 버퍼의 동작을 설명하기 위한 도면이다.
도 9는 본 발명의 일 실시 예에 따른 컨트롤 신호의 생성 방법을 설명하기 위한 흐름도이다.
도 10은 본 발명의 일 실시 예에 따른 데이터 입출력 유닛의 제어 방법을 설명하기 위한 흐름도이다.
도 2는 본 발명의 일 실시 예에 따른 데이터 입출력 유닛의 구성을 나타내는 블럭도이다.
도 3a 및 도 3b는 본 발명의 일 실시 예에 따른 스케줄을 설명하기 위한 도면이다.
도 4a 및 도 4b는 본 발명의 일 실시 예에 따른 제1 리오더링 버퍼의 동작을 설명하기 위한 도면이다.
도 5a 및 도 5b는 본 발명의 다른 실시 예에 따른 제1 리오더링 버퍼의 동작을 설명하기 위한 도면이다.
도 6은 본 발명의 다른 실시 예에 따른 스케줄을 설명하기 위한 도면이다.
도 7a 및 도 7b는 본 발명의 일 실시 예에 따른 제2 리오더링 버퍼의 동작을 설명하기 위한 도면이다.
도 8a 및 도 8b는 본 발명의 다른 실시 예에 따른 제2 리오더링 버퍼의 동작을 설명하기 위한 도면이다.
도 9는 본 발명의 일 실시 예에 따른 컨트롤 신호의 생성 방법을 설명하기 위한 흐름도이다.
도 10은 본 발명의 일 실시 예에 따른 데이터 입출력 유닛의 제어 방법을 설명하기 위한 흐름도이다.
이하, 본 발명의 다양한 실시 예에 대해서, 첨부된 도면을 참조하여 설명한다. 본 명세서에 기재된 내용은, 본 발명의 범위를 특정한 실시 형태로 한정하려는 것이 아니며, 실시 예의 다양한 변경(modifications), 균등물(equivalents), 및/또는 대체물(alternatives)을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 구성요소에 대해서는 동일 또는 유사한 참조 부호가 사용될 수 있다.
또한, 본 명세서에서 하나의 구성요소(예: 제1 구성요소)가 다른 구성요소(예: 제2 구성요소)에 기능적 또는 통신적으로(operatively or communicatively) 연결(coupled)되어 있다거나, 접속되어(connected to) 있다고 언급하는 것은, 각 구성요소들이 직접적으로 연결되거나, 다른 구성요소(예: 제3 구성요소)를 통하여 간접적으로 연결되는 경우까지 모두 포함할 수 있다는 것으로 이해되어야 한다. 반면에, 어떤 구성요소(예: 제1 구성요소)가 다른 구성요소(예: 제2 구성요소)에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 어떤 구성요소와 다른 구성요소 사이에 다른 구성요소(예: 제3 구성요소)가 존재하지 않는 것으로 이해될 수 있다.
본 명세서(disclosure)에서 사용된 용어들은, 임의의 실시 예를 설명하기 위해 사용된 것으로, 다른 실시 예의 범위를 한정하려는 의도가 아닐 수 있다. 또한, 본 명세서에서는 설명의 편의상 단수 표현을 사용할 수도 있으나, 이는 문맥상 명백하게 다르게 뜻하지 않는 한, 복수 표현까지 포함하는 의미로 해석될 수 있다. 또한, 본 명세서에서 사용되는 용어들은 해당 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가질 수 있다. 본 명세서에 사용된 용어들 중 일반적인 사전에 정의된 용어들은, 관련 기술의 문맥상 가지는 의미와 동일 또는 유사한 의미로 해석될 수 있으며, 본 명세서에서 명백하게 정의되지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다. 경우에 따라서, 본 명세서에서 정의된 용어일지라도 본 명세서의 실시 예들을 배제하도록 해석될 수 없다.
이하에서, 첨부된 도면을 이용하여 본 발명의 다양한 실시 예들에 대하여 구체적으로 설명한다.
도 1은 본 발명의 일 실시 예에 따른 데이터 입출력 유닛(100), 프로세서(200) 및 외부 유닛(300)을 개략적으로 설명하기 위한 도면이다.
데이터 입출력 유닛(100)은 DII(Direct Interface Intrinsic) 장치의 형태로 구현될 수 있고, 프로세서(200) 및 외부 유닛(300)에 직접 연결되며, 외부 유닛(300)으로부터 출력되는 데이터를 프로세서(200)로 제공하거나, 프로세서(200)로부터 출력되는 데이터를 외부 유닛(300)으로 제공할 수 있다.
여기서, DII 장치는 프로세서(200)의 출력과 외부 유닛(300)의 입력 간 또는 프로세서(200)의 입력과 외부 유닛(300)의 출력 간을 직접 연결할 용도로 고안된 장치이다.
프로세서(200) 및 외부 유닛(300) 간 데이터 전송 시 버스(Bus)를 이용하는 경우보다 데이터 입출력 유닛(100)을 이용하는 경우 데이터 전송 속도의 향상이 가능하다.
데이터 입출력 유닛(100)은 제1 스케줄에 기초하여 데이터를 순차적으로 제공받아 출력할 수 있다. 여기서, 제1 스케줄은 커널(Kernel)의 싸이클(Cycle)이 축소되지 않은 스케줄일 수 있다.
스케줄은 프로세서(200)에서 처리되는 데이터로, 외부 컴파일러(미도시)에 의해 복수의 명령어가 복수의 싸이클에 컴파일(compile)된 후의 출력 데이터일 수 있다. 즉, 스케줄은 고급언어로 쓰인 프로그램이 프로세서(200)가 직접 이해할 수 있는 언어로 변환된 데이터일 수 있다.
데이터 입출력 유닛(100)은 프로세서(200) 또는 외부 유닛(300)으로부터 입력되는 데이터를 일시적으로 저장하고, 싸이클에 따라 저장된 데이터 중 일부를 각각 외부 유닛(300) 또는 프로세서(200)로 제공할 수 있다. 이때, 데이터 입출력 유닛은 입력되는 데이터의 순서와 출력되는 데이터의 순서를 변경할 수 있다.
프로세서(200)는 DSP(Digital Signal Processor) 코어와 같은 프로세서일 수 있다. 다만, 이에 한정되는 것은 아니며, 프로세서(200)는 얼마든지 다른 종류의 프로세서일 수도 있다.
프로세서(200)는 제1 스케줄 중 커널의 싸이클이 축소된 제2 스케줄에 기초하여 데이터를 처리할 수 있다. 여기서, 제2 스케줄은 제1 스케줄에서 입출력 명령어의 실행 싸이클을 변경하여 커널의 싸이클을 축소한 스케줄일 수 있다. 이에 대한 구체적인 설명은 제1 스케줄과 함께 후술한다.
프로세서(200)는 데이터 입출력 유닛(100)과 연결되며, 데이터 입출력 유닛(100)으로부터 데이터를 입력받거나, 데이터 입출력 유닛(100)으로 데이터를 출력할 수 있다.
한편, 프로세서(200)는 복수의 기능 유닛을 포함할 수 있다. 프로세서(200) 내에 포함된 복수의 기능 유닛은 서로 다른 종류의 기능 유닛일 수 있다. 예를 들어, 프로세서(200) 내의 제1 기능 유닛은 덧셈 연산만이 가능하나, 제2 기능 유닛은 덧셈 연산 뿐만 아니라 곱셈 연산이 가능할 수도 있다. 다만, 이에 한정되는 것은 아니며, 프로세서(200)는 내에 포함된 복수의 기능 유닛은 모두 동일할 수도 있다.
외부 유닛(300)은 외부 메모리와 같은 외부 하드웨어 구성일 수 있다. 여기서, 외부 하드웨어 구성은 데이터 입출력 유닛(100) 및 프로세서(200)와 동일한 장치 내의 다른 하드웨어 구성을 의미할 수 있다.
외부 유닛(300)은 데이터 입출력 유닛(100)과 연결되며, 데이터 입출력 유닛(100)으로부터 데이터를 입력받거나, 데이터 입출력 유닛(100)으로 데이터를 출력할 수 있다.
특히, 외부 유닛(300)은 제1 스케줄에 기초하여 데이터 입출력 유닛(100)으로 데이터를 제공할 수 있다. 또는, 외부 유닛(300)은 데이터 입출력 유닛(100)으로부터 제1 스케줄에 대응되도록 데이터를 입력받을 수 있다.
이상과 같은 프로세서(200) 및 외부 유닛(300) 간의 데이터 전송을 데이터 입출력 유닛(100)이 직접 제어함에 따라 프로세서(200) 및 외부 유닛(300) 간의 데이터 전송 속도 및 프로세서의 스케줄에 따른 명령어들의 처리 속도가 향상될 수 있다.
이상에서 데이터 입출력 유닛(100), 프로세서(200) 및 외부 유닛(300)은 하나의 전자 장치의 구성일 수 있다.
한편, 외부 컴파일러(미도시)는 스케줄을 생성하여 전자 장치로 제공할 수 있다. 이때, 외부 컴파일러는 데이터 입출력 유닛(100)의 동작을 고려하여 스케줄을 생성할 수 있다. 이에 대한 구체적인 설명은 데이터 입출력 유닛(100)의 동작을 설명한 후에 후술한다.
여기서, 외부 컴파일러는 제1 스케줄을 입력받아 제2 스케줄을 생성하는 장치일 수 있다. 또는, 외부 컴파일러는 고급언어로 쓰인 프로그램을 프로세서(200)가 직접 이해할 수 있는 언어로 변환하여 제2 스케줄을 직접 생성하는 장치일 수도 있다.
이하에서는 먼저, 데이터 입출력 유닛(100)의 동작에 대하여 설명한다.
도 2는 본 발명의 일 실시 예에 따른 데이터 입출력 유닛(100)의 구성을 나타내는 블럭도이다.
도 2에 도시된 바와 같이, 데이터 입출력 유닛(100)은 FIFO 메모리부(110) 및 리오더링 버퍼부(Reordering Buffer, 120)를 포함한다.
FIFO 메모리부(110)는 외부 유닛(300) 및 프로세서(200) 간 입출력 데이터를 순차적으로 저장할 수 있다.
여기서, FIFO 메모리부(110)는 복수의 신호가 처리 대기로 되어 있을 경우 처리의 우선순위를 붙이지 않고 먼저 도착한 순서로 처리하는 메모리를 의미한다. 예를 들어, FIFO 메모리부(110)는 데이터가 입력되는 순서대로 저장하고, 가장 먼저 저장된 데이터를 출력할 수 있다.
FIFO 메모리부(110)는 라이트 포인터(Write Pointer) 및 리드 포인터(Read Pointer)에 기초하여 데이터의 저장 위치 및 출력 위치를 저장할 수 있다.
FIFO 메모리부(110)는 외부 유닛(300)으로부터 입력된 데이터를 프로세서(200)로 제공하는 제1 FIFO 메모리 및 프로세서(200)로부터는 출력되는 데이터를 외부 유닛(300)으로 제공하는 제2 FIFO 메모리를 포함할 수 있다. 여기서, 제1 FIFO 메모리 및 제2 FIFO 메모리는 각각 로드(Load) FIFO 메모리 및 스토어(Store) FIFO 메모리로도 불릴 수 있다.
제1 FIFO 메모리는 데이터를 저장할 저장 공간이 남아 있다면 외부 유닛(300)으로 데이터를 요청하여 저장하고, 로드(Load) 명령이 수신되면 데이터를 출력할 수 있다. 여기서, 로드 명령은 데이터를 요청하는 명령일 수 있다.
제2 FIFO 메모리는 데이터가 저장되어 있다면, 외부 유닛(300)이 데이터를 수신 가능할 때 저장된 데이터를 전송할 수 있다. 또한, 제2 FIFO 메모리는 저장 공간이 남아 있다면 스토어(Store) 명령이 있을 때, 데이터를 입력받아 저장할 수 있다. 여기서, 스토어 명령은 데이터를 저장하는 명령일 수 있다.
리오더링 버퍼부(120)는 FIFO 메모리부(110)의 일측에 연결되며, FIFO 메모리부(110)로부터 출력되거나 FIFO 메모리부(110)로 입력되는 데이터를 복수의 버퍼 영역에 순차적으로 저장하며, 프로세서(200)로부터 제공되는 컨트롤 신호에 기초하여 복수의 버퍼 영역 중 하나에 저장된 데이터를 출력할 수 있다.
리오더링 버퍼부(120)는 제1 FIFO 메모리의 일측에 연결되는 제1 리오더링 버퍼 및 제2 FIFO 메모리의 일측에 연결되는 제2 리오더링 버퍼를 포함할 수 있다.
제1 리오더링 버퍼는 제1 FIFO 메모리의 출력 측 및 프로세서(200)의 입력 측에 연결되어, 제1 FIFO 메모리로부터 순차적으로 출력되는 데이터를 복수의 제1 버퍼 영역에 순차적으로 저장하며, 컨트롤 신호에 기초하여 복수의 제1 버퍼 영역 중 하나에 저장된 데이터를 출력하여 프로세서(200)로 제공할 수 있다.
또는, 제1 리오더링 버퍼는 외부 유닛(300)의 출력 측 및 제1 FIFO 메모리의 입력 측에 연결되어, 외부 유닛(300)으로부터 출력되는 데이터를 복수의 제1 버퍼 영역에 순차적으로 저장하며, 컨트롤 신호에 기초하여 복수의 제1 버퍼 영역 중 하나에 저장된 데이터를 출력하여 제1 FIFO 메모리로 제공할 수 있다.
이 경우, 제1 FIFO 메모리는 프로세서(200)의 로드 명령이 수신되면 제1 FIFO 메모리에 저장된 데이터를 순차적으로 출력하여 프로세서(200)로 제공할 수 있다.
한편, 제2 FIFO 메모리는 프로세서(200)로부터 출력되는 데이터를 순차적으로 저장하고, 저장된 데이터를 순차적으로 출력하여 제2 리오더링 버퍼로 제공하며, 제2 리오더링 버퍼는 제2 FIFO 메모리의 출력 측 및 외부 유닛(300)의 입력 측에 연결되어, 제2 FIFO 메모리로부터 순차적으로 출력되는 데이터를 복수의 제2 버퍼 영역에 순차적으로 저장하며, 컨트롤 신호에 기초하여 복수의 제2 버퍼 영역 중 하나에 저장된 데이터를 출력하여 외부 유닛(300)으로 제공할 수 있다.
또는, 제2 리오더링 버퍼는 프로세서(300)의 출력 측 및 제2 FIFO 메모리의 입력 측에 연결되어, 프로세서(300)로부터 출력되는 데이터를 복수의 제2 버퍼 영역에 순차적으로 저장하며, 컨트롤 신호에 기초하여 복수의 제2 버퍼 영역 중 하나에 저장된 데이터를 출력하여 제2 FIFO 메모리로 제공할 수 있다.
한편, 데이터 입출력 유닛(100)은 제1 FIFO 메모리가 비어 있는 상태에서 프로세서(200)의 로드 명령이 수신되거나, 제2 FIFO 메모리에 저장 공간이 없는 상태에서 프로세서의 스토어 명령이 수신되면, 프로세서(200)의 데이터 처리를 정지시키는 스톨(stall) 명령을 프로세서(200)로 전송할 수 있다.
한편, 컨트롤 신호는 제2 스케줄에 기초하여 복수의 버퍼 영역 중 출력이 요구되는 데이터가 저장된 버퍼 영역을 지정하는 신호일 수 있다. 즉, 리오더링 버퍼부(120)는 프로세서(200)로부터 제공되는 컨트롤 신호에 의해 입력되는 데이터의 순서를 변경하여 출력할 수 있다.
여기서, 제2 스케줄은 복수의 버퍼 영역의 개수에 기초하여 제1 스케줄에 포함된 커널의 싸이클을 축소함에 따라, 입출력 명령어의 데이터 입출력 순서가 변경된 스케줄일 수 있다.
이하에서는 먼저 리오더링 버퍼부(120)를 이용함에 따른 싸이클의 단축을 설명한다.
도 3a 및 도 3b는 본 발명의 일 실시 예에 따른 스케줄을 설명하기 위한 도면이다.
먼저, FIFO 메모리는 도 3a에 도시된 바와 같이, R1, R2, R3, ... 의 순서로 데이터를 저장하고, 동일한 순서로 데이터를 출력할 수 있다.
외부 컴파일러는 도 3b에 도시된 바와 같이, 스케줄을 생성할 수 있다.
먼저, 도 3b의 좌측 도면은 dii_load, add, shift, dii_load, sub의 loop을 예로서 도시하였다. 여기서, dii_load는 FIFO 메모리에 대한 로드 명령이며, FIFO 메모리는 로드 명령이 입력되면 리드 포인터에 기초하여 데이터를 순차적으로 출력할 수 있다.
도 3b의 dii_load 뒤의 괄호와 괄호 내의 숫자는 설명의 편의를 위한 것으로, FIFO 메모리로부터 입력될 입력 데이터의 입력 순서를 나타내며, 실제로는 괄호와 괄호 내의 숫자가 없이 로드 명령만이 FIFO 메모리로 입력될 수 있다.
즉, dii_load는 FIFO 메모리에 로드 명령이므로, 주소 정보를 포함하지 않을 수 있다. 따라서, FIFO 메모리를 이용하는 경우, 버스와 같이 데이터 주소를 지정해줘야 하는 경우보다 주소 정보를 생성하는데 필요한 싸이클을 절약할 수 있다.
한편, 프로세서(200) 내에서 병렬 처리가 가능하다면, 외부 컴파일러는 도 3b의 중간 도면과 같이 스케줄을 생성할 수 있다. 즉, 각 loop을 병렬 처리하되, FIFO 메모리의 특성을 고려하여 dii_load(2)가 dii_load(1)보다 이전의 싸이클에서 처리되지 않도록 스케줄이 생성될 수 있다.
병렬 처리를 이용하지 않는 경우의 총 24 싸이클은 병렬 처리를 이용함에 따라 18 싸이클로 단축 가능하다. 즉, 프로세서(200)에서 실행 시간이 단축될 수 있다.
만약, 도 3b의 우측 도면과 같이, dii_load(2)가 제3 싸이클에서 실행되고, dii_load(1)이 제4 싸이클에서 실행되도록 스케줄이 생성되는 경우, FIFO 메모리는 R2의 데이터가 필요한 dii_load(2)에서 R1을 출력하게 되고, R1의 데이터가 필요한 dii_load(1)에서 R2를 출력하게 된다. 즉, FIFO 메모리가 입력 순서에 따라 데이터를 출력함에 따라, 프로세서(200)로 입력될 데이터에 오류가 발생할 수 있다.
이때, 리오더링 버퍼부(120)는 FIFO 메모리의 일측에 연결되어 프로세서(200)로 입력될 데이터의 순서를 조정해줄 수 있다.
즉, 리오더링 버퍼부(120)를 이용하지 않는 도 3b의 중간 도면의 경우 총 24 싸이클이 필요하나, 도 3b의 우측 도면과 같이 리오더링 버퍼부(120)를 이용함에 따라 총 12 싸이클로 단축할 수 있다.
이상에서는 도 3b의 중간 도면과 같이 리오더링 버퍼부(120)를 이용하지 않는 경우의 스케줄을 제1 스케줄로, 3b의 우측 도면과 같이 리오더링 버퍼부(120)를 이용하는 경우의 스케줄을 제2 스케줄로 지칭한다.
외부 컴파일러는 제1 스케줄의 커널을 축소하여 제2 스케줄을 생성할 수 있다. 여기서, 커널은 각 iteration이 한 loop의 모든 명령어들을 수행할 수 있는 부분으로, 도 3b의 경우 dii_load, add, shift, dii_load, sub의 5개 명령어들이 한 iteration 안에 모두 수행되는 부분이다. 프롤로그(Prolog)는 커널의 이전 부분이고, 에필로그(Epilog)는 커널의 이후 부분이다.
외부 컴파일러는 종래의 컴파일링 규칙에 따라 커널이 생성되도록 컴파일링을 수행할 수 있다. 또한, 외부 컴파일러는 리오더링 버퍼부(120)를 고려하여 최대한으로 싸이클을 단축한 스케줄을 생성할 수 있다. 즉, 제2 스케줄은 복수의 버퍼 영역의 개수에 기초하여 제1 스케줄에 포함된 커널의 싸이클을 축소함에 따라, 입출력 명령어의 데이터 입출력 순서가 변경된 스케줄일 수 있다. 다만, 구체적인 방법에 대하여는 본 발명의 범위를 벗어나므로 생략한다.
이하에서는 리오더링 버퍼부(120)의 동작을 도면과 함께 좀더 구체적으로 설명한다.
도 4a 및 도 4b는 본 발명의 일 실시 예에 따른 제1 리오더링 버퍼(410)의 동작을 설명하기 위한 도면이다. 설명의 편의를 위해 도 3b의 우측 도면과 같은 제2 스케줄에 따라 제1 리오더링 버퍼(410)가 동작하는 것으로 설명한다.
먼저, 도 4a에 도시된 바와 같이, 제1 리오더링 버퍼(410)는 제1 FIFO 메모리(420)의 출력 측 및 프로세서(200)의 입력 측에 연결되어, 제1 FIFO 메모리(420)로부터 순차적으로 출력되는 데이터를 복수의 제1 버퍼 영역(430, 440)에 순차적으로 저장하며, 컨트롤 신호에 기초하여 복수의 제1 버퍼 영역(430, 440) 중 하나에 저장된 데이터를 출력하여 프로세서(200)로 제공할 수 있다.
여기서, 컨트롤 신호는 제2 스케줄에 기초하여 복수의 제1 버퍼 영역(430, 440) 중 출력이 요구되는 데이터가 저장된 버퍼 영역을 지정하는 신호일 수 있다.
제1 리오더링 버퍼(410)는 로드 제어부(Load Control, 450)를 포함하며, 로드 제어부(450)는 제2 스케줄에서 loop의 iteration이 시작되기 전에, 프롤로그에서 처리될 dii_load의 수와 이들의 처리 순서, 커널의 하나의 iteration에서 처리될 dii_load의 수와 이들의 처리 순서 및 에필로그에서 처리될 dii_load의 수와 이들의 처리 순서에 대한 DII 세팅 정보를 프로세서(200)로부터 수신할 수 있다. 즉, 로드 제어부(450)는 제1 싸이클 이전에 프로세서(200)로부터 DII 세팅 정보를 수신할 수 있으며, 이하에서는 DII 세팅 정보를 컨트롤 신호로서 설명한다.
로드 제어부(450)는 we(write enable) 신호 및 sel(selection) 신호를 생성하여 제1 리오더링 버퍼(410) 내의 다른 구성을 제어할 수 있다. we 신호는 복수의 제1 버퍼 영역(430, 440)의 각각의 데이터 입력 가부를 나타내는 신호이다. sel 신호는 제1 리오더링 버퍼(410) 내의 MUX를 제어하여 복수의 제1 버퍼 영역(430, 440)에 저장된 데이터 중 하나를 프로세서(200)로 제공할 수 있다.
도 4b는 본 발명의 일 실시 예에 따른 싸이클 별 제1 리오더링 버퍼(410)의 동작을 설명하기 위한 도면이다.
제1 싸이클 이전에 로드 제어부(450)는 프로세서(200)로부터 컨트롤 정보를 수신하고, 수신된 컨트롤 정보에 기초하여 복수의 제1 버퍼 영역(430, 440)에 데이터를 저장할 수 있다. 복수의 제1 버퍼 영역(430, 440)에는 제1 FIFO 메모리(420)의 특성에 따라 순차적으로 데이터를 저장될 수 있다.
제1 싸이클에서 로드 제어부(450)는 컨트롤 정보에 기초하여 버퍼 영역(430)으로부터 데이터 0을 로드하여 프로세서(200)로 제공할 수 있다. 그리고, 로드 제어부(450)는 동일 싸이클에서 버퍼 영역(430)이 데이터가 저장되지 않은 상태가 되므로, 버퍼 영역(430)에 대한 we 신호를 활성화시킬 수 있다. 그에 따라, 버퍼 영역(430)에는 제2 싸이클에 데이터 2가 저장될 수 있다.
제3 싸이클에서 로드 제어부(450)는 컨트롤 정보에 기초하여 버퍼 영역(430)으로부터 데이터 2를 로드하여 프로세서(200)로 제공할 수 있다. 그리고, 로드 제어부(450)는 동일 싸이클에서 버퍼 영역(430)이 데이터가 저장되지 않은 상태가 되므로, 버퍼 영역(430)에 대한 we 신호를 활성화시킬 수 있다. 그에 따라, 버퍼 영역(430)에는 제4 싸이클에서 데이터 3이 저장될 수 있다.
제4 싸이클에서 로드 제어부(450)는 컨트롤 정보에 기초하여 버퍼 영역(440)으로부터 데이터 1을 로드하여 프로세서(200)로 제공할 수 있다. 그리고, 로드 제어부(450)는 동일 싸이클에서 버퍼 영역(440)이 데이터가 저장되지 않은 상태가 되므로, 버퍼 영역(440)에 대한 we 신호를 활성화시킬 수 있다. 그에 따라, 버퍼 영역(440)에는 제5 싸이클에서 데이터 4가 저장될 수 있다.
이상과 같은 방법으로 로드 제어부(450)는 데이터 0 -> 데이터 2 -> 데이터 1 -> 데이터 4 -> 데이터 3 -> 데이터 6 -> 데이터 5 -> 데이터 7의 순서로 데이터를 프로세서(200)로 제공할 수 있다.
도 5a 및 도 5b는 본 발명의 다른 실시 예에 따른 제1 리오더링 버퍼(410)의 동작을 설명하기 위한 도면이다. 설명의 편의를 위해 도 3b의 우측 도면과 같은 제2 스케줄에 따라 제1 리오더링 버퍼(410)가 동작하는 것으로 설명한다. 제1 리오더링 버퍼(410)의 구성은 도 4a에서 설명한 바와 동일하므로 중복되는 설명은 생략한다.
먼저, 도 5a에 도시된 바와 같이, 제1 리오더링 버퍼(410)는 외부 유닛(300)의 출력 측 및 제1 FIFO 메모리(420)의 입력 측에 연결되어, 외부 유닛(300)으로부터 출력되는 데이터를 복수의 제1 버퍼 영역(430, 440)에 순차적으로 저장하며, 컨트롤 신호에 기초하여 복수의 제1 버퍼 영역(430, 440) 중 하나에 저장된 데이터를 출력하여 제1 FIFO 메모리(420)로 제공할 수 있다.
이때, 제1 FIFO 메모리(420)는 프로세서(200)의 로드 명령이 수신되면 제1 FIFO 메모리(420)에 저장된 데이터를 순차적으로 출력하여 프로세서(200)로 제공할 수 있다.
여기서, 컨트롤 신호는 제2 스케줄에 기초하여 복수의 제1 버퍼 영역(430, 440) 중 출력이 요구되는 데이터가 저장된 버퍼 영역을 지정하는 신호일 수 있다. 로드 제어부(450)는 제1 싸이클 이전에 프로세서(200)로부터 컨트롤 신호를 수신할 수 있다. 로드 제어부(450)는 도 4a 및 도 4b의 경우보다 이전에 컨트롤 신호를 수신할 수 있다.
도 5b는 본 발명의 일 실시 예에 따른 싸이클 별 제1 리오더링 버퍼(410)의 동작을 설명하기 위한 도면이다.
제1 싸이클 이전에 로드 제어부(450)는 프로세서(200)로부터 컨트롤 정보를 수신할 수 있다. 복수의 제1 버퍼 영역(430, 440)은 데이터가 저장되지 않은 경우, 외부 유닛(300)으로부터 데이터를 수신하여 저장할 수 있다. 로드 제어부(450)는 컨트롤 정보에 기초하여 버퍼 영역(430)으로부터 데이터 0을 로드하여 제1 FIFO 메모리(420)로 제공할 수 있다.
그리고, 로드 제어부(450)는 동일 싸이클에서 버퍼 영역(430)이 데이터가 저장되지 않은 상태가 되므로, 버퍼 영역(430)에 대한 we 신호를 활성화시킬 수 있다. 그에 따라, 버퍼 영역(430)에는 제1 싸이클에서 데이터 2가 저장될 수 있다.
이상과 같은 방법으로 로드 제어부(450)는 데이터 0 -> 데이터 2 -> 데이터 1 -> 데이터 4 -> 데이터 3 -> 데이터 6 -> 데이터 5 -> 데이터 7의 순서로 데이터를 제1 FIFO 메모리(420)로 제공할 수 있다.
제1 FIFO 메모리(420)는 데이터 0 -> 데이터 2 -> 데이터 1 -> 데이터 4 -> 데이터 3 -> 데이터 6 -> 데이터 5 -> 데이터 7의 순서로 데이터를 저장하고, 먼저 저장된 데이터부터 출력할 수 있다. 즉, 제1 FIFO 메모리(420)는 데이터 0 -> 데이터 2 -> 데이터 1 -> 데이터 4 -> 데이터 3 -> 데이터 6 -> 데이터 5 -> 데이터 7의 순서로 데이터를 프로세서(200)로 제공할 수 있다.
프로세서(200)는 제1 FIFO 메모리(420)에 일정 데이터가 저장된 후부터 제1 FIFO 메모리(420)로 로드 명령을 전송하여 데이터를 입력받을 수 있다. 도 3b의 우측 도면과 같은 예에서는 데이터 0이 제일 먼저 필요한 데이터이며, 프로세서(200)는 제1 FIFO 메모리(420)에 데이터 0이 저장된 후부터 FIFO 메모리(420)로 로드 명령을 전송할 수 있다.
도 6은 본 발명의 다른 실시 예에 따른 스케줄을 설명하기 위한 도면이다. 도 6은 도 3b의 우측 도면에서 dii_load를 dii_store로 변경한 도면으로, 구체적인 설명은 생략한다.
도 7a 및 도 7b는 본 발명의 일 실시 예에 따른 제2 리오더링 버퍼(710)의 동작을 설명하기 위한 도면이다. 설명의 편의를 위해 도 6의 도면과 같은 제2 스케줄에 따라 제2 리오더링 버퍼(710)가 동작하는 것으로 설명한다.
먼저, 도 7a에 도시된 바와 같이, 제2 FIFO 메모리(720)는 프로세서(200)로부터 출력되는 데이터를 순차적으로 저장하고, 저장된 데이터를 순차적으로 출력하여 제2 리오더링 버퍼(710)로 제공할 수 있다.
제2 리오더링 버퍼(710)는 제2 FIFO 메모리(720)의 출력 측 및 외부 유닛(300)의 입력 측에 연결되어, 제2 FIFO 메모리(720)로부터 순차적으로 출력되는 데이터를 복수의 제2 버퍼 영역(730, 740)에 순차적으로 저장하며, 컨트롤 신호에 기초하여 복수의 제2 버퍼 영역(730, 740) 중 하나에 저장된 데이터를 출력하여 외부 유닛(300)으로 제공할 수 있다.
여기서, 컨트롤 신호는 제2 스케줄에 기초하여 복수의 제2 버퍼 영역(730, 740) 중 출력이 요구되는 데이터가 저장된 버퍼 영역을 지정하는 신호일 수 있다.
제2 리오더링 버퍼(710)는 스토어 제어부(Store Control, 750)를 포함하며, 스토어 제어부(750)는 제2 스케줄에서 프롤로그에서 처리될 dii_store의 수와 이들의 처리 순서, 커널의 하나의 iteration에서 처리될 dii_store의 수와 이들의 처리 순서 및 에필로그에서 처리될 dii_store의 수와 이들의 처리 순서에 대한 DII 세팅 정보를 프로세서(200)로부터 수신할 수 있다. 즉, 스토어 제어부(750)는 프로세서(200)로부터 DII 세팅 정보를 수신할 수 있으며, 이하에서는 DII 세팅 정보를 컨트롤 신호로서 설명한다.
스토어 제어부(750)는 we 신호 및 sel 신호를 생성하여 제2 리오더링 버퍼(710) 내의 다른 구성을 제어할 수 있다. we 신호는 복수의 제2 버퍼 영역(730, 740)의 각각의 데이터 입력 가부를 나타내는 신호이다. sel 신호는 제2 리오더링 버퍼(710) 내의 MUX를 제어하여 복수의 제2 버퍼 영역(730, 740)에 저장된 데이터 중 하나를 외부 유닛(300)으로 제공할 수 있다.
도 7b는 본 발명의 일 실시 예에 따른 싸이클 별 제2 리오더링 버퍼(710)의 동작을 설명하기 위한 도면이다.
제1 싸이클에서 제2 FIFO 메모리(720)는 프로세서(200)로부터 데이터 0을 제공받아 제2 싸이클에서 이를 저장할 수 있다.
제2 싸이클에서 제2 리오더링 버퍼(710)의 버퍼 영역(730)에 데이터 0이 저장되기 위해 버퍼 영역(730)을 나타내는 we 신호가 활성화될 수 있다.
제3 싸이클에서 제2 FIFO 메모리(720)는 프로세서(200)로부터 데이터 2를 제공받아 제4 싸이클에서 이를 저장할 수 있다. 버퍼 영역(730)에 저장된 데이터 0은 외부 유닛(300)으로 출력될 수 있다.
제4 싸이클에서 제2 FIFO 메모리(720)는 프로세서(200)로부터 데이터 1을 제공받아 제5 싸이클에서 이를 저장할 수 있다. 그리고, 제2 리오더링 버퍼(710)의 버퍼 영역(730)에 데이터 2가 저장되기 위해 버퍼 영역(730)을 나타내는 we 신호가 활성화될 수 있다. 다만, 데이터 1이 먼저 출력되어야 하므로, 데이터 2는 버퍼 영역(730)에 저장된 후 출력되지 않을 수 있다.
제5 싸이클에서 제2 FIFO 메모리(720)는 프로세서(200)로부터 데이터 4를 제공받아 제6 싸이클에서 이를 저장할 수 있다. 그리고, 제2 리오더링 버퍼(710)의 버퍼 영역(740)에 데이터 1이 제공되어, 다음 싸이클에 저장될 수 있다.
제6 싸이클에서 제2 FIFO 메모리(720)는 프로세서(200)로부터 데이터 3을 제공받아 제7 싸이클에서 이를 저장할 수 있다. 버퍼 영역(740)에 저장된 데이터 1은 외부 유닛(300)으로 출력되고, 버퍼 영역(740)에 데이터 4가 저장되기 위해 버퍼 영역(740)을 나타내는 we 신호가 활성화될 수 있다.
이상과 같은 방법으로 스토어 제어부(750)는 데이터 0 -> 데이터 1 -> 데이터 2 -> 데이터 3 -> 데이터 4 -> 데이터 5 -> 데이터 6 -> 데이터 7의 순서로 데이터를 외부 유닛(300)으로 제공할 수 있다.
도 8a 및 도 8b는 본 발명의 다른 실시 예에 따른 제2 리오더링 버퍼(710)의 동작을 설명하기 위한 도면이다. 설명의 편의를 위해 도 6의 도면과 같은 제2 스케줄에 따라 제2 리오더링 버퍼(710)가 동작하는 것으로 설명한다. 제2 리오더링 버퍼(710)의 구성은 도 7a에서 설명한 바와 동일하므로 중복되는 설명은 생략한다.
먼저, 도 8a에 도시된 바와 같이, 제2 리오더링 버퍼(710)는 프로세서(200)의 출력 측 및 제2 FIFO 메모리(720)의 입력 측에 연결되어, 프로세서(200)로부터 출력되는 데이터를 복수의 제2 버퍼 영역(730, 740)에 순차적으로 저장하며, 컨트롤 신호에 기초하여 복수의 제2 버퍼 영역(730, 740) 중 하나에 저장된 데이터를 출력하여 제2 FIFO 메모리(720)로 제공할 수 있다.
여기서, 컨트롤 신호는 제2 스케줄에 기초하여 복수의 제2 버퍼 영역(730, 740) 중 출력이 요구되는 데이터가 저장된 버퍼 영역을 지정하는 신호일 수 있다.
도 8b는 본 발명의 일 실시 예에 따른 싸이클 별 제2 리오더링 버퍼(710)의 동작을 설명하기 위한 도면이다.
제1 싸이클에서 제2 리오더링 버퍼(710)는 프로세서(200)로부터 데이터 0을 제공받아 제2 싸이클에 버퍼 영역(730)에 저장할 수 있다.
제2 싸이클에서 스토어 제어부(750)는 컨트롤 정보에 기초하여 버퍼 영역(730)으로부터 데이터 0을 출력하여 제2 FIFO 메모리(720)로 제공할 수 있다.
제3 싸이클에서 제2 리오더링 버퍼(710)는 프로세서(200)로부터 데이터 2를 제공받아 다음 싸이클에 버퍼 영역(730)에 저장할 수 있다. 제2 FIFO 메모리(720)는 데이터 0을 외부 유닛(300)으로 출력할 수 있다.
다만, 제2 FIFO 메모리(720)에 저장되는 데이터의 순서를 표시하기 위해 제3 싸이클 이후의 도면에서는 제2 FIFO 메모리(720)에 저장된 데이터가 외부 유닛(300)으로 출력되지 않은 상태를 가정한다.
제4 싸이클에서 데이터 1이 먼저 출력되어야 하므로, 버퍼 영역(730)에 저장된 데이터 2는 출력되지 않을 수 있다. 제2 리오더링 버퍼(710)는 프로세서(200)로부터 데이터 1을 제공받아 제5 싸이클에 버퍼 영역(740)에 저장할 수 있다.
제5 싸이클에서 스토어 제어부(750)는 컨트롤 정보에 기초하여 버퍼 영역(740)으로부터 데이터 1을 출력하여 제2 FIFO 메모리(720)로 제공할 수 있다. 제2 리오더링 버퍼(710)는 프로세서(200)로부터 데이터 4를 제공받아 버퍼 영역(740)에 저장하기 위해 버퍼 영역(740)을 나타내는 we 신호를 활성화할 수 있다.
제6 싸이클에서 스토어 제어부(750)는 컨트롤 정보에 기초하여 버퍼 영역(730)으로부터 데이터 2를 출력하여 제2 FIFO 메모리(720)로 제공할 수 있다. 제2 리오더링 버퍼(710)는 프로세서(200)로부터 데이터 3을 제공받아 제7 싸이클에 버퍼 영역(730)에 저장할 수 있다.
이상과 같은 방법으로 스토어 제어부(750)는 데이터 0 -> 데이터 1 -> 데이터 2 -> 데이터 3 -> 데이터 4 -> 데이터 5 -> 데이터 6 -> 데이터 7의 순서로 데이터를 외부 유닛(300)으로 제공할 수 있다.
도 8a 및 도 8b에서 제2 리오더링 버퍼(710)의 복수의 제2 버퍼 영역(730, 740)이 비어 있는 경우, 프로세서(200)로부터 데이터를 입력받아 저장할 수 있다. 그리고, 스토어 제어부(750)는 현재 싸이클에서 의도한 순서의 데이터가 복수의 제2 버퍼 영역(730, 740) 중 하나에 저장되어 있는 경우, sel 신호를 통해 이를 선택하여 제2 FIFO 메모리(720)로 제공할 수 있다.
도 9는 본 발명의 일 실시 예에 따른 컨트롤 신호의 생성 방법을 설명하기 위한 흐름도이다.
외부 컴파일러는 컨트롤 신호를 생성하여 프로세서(200)로 제공할 수 있다. 먼저, 외부 컴파일러는 제1 스케줄로부터 DII Intrinsic을 포함한 loop을 감지한다(S910). 여기서, DII Intrinsic은 데이터 입출력 유닛(100)과 관련된 명령어로, dii_load, dii_store 등을 포함한다.
그리고, 외부 컴파일러는 리오더링 버퍼부(120)의 버퍼 영역의 수, loop 내의 DII Intrinsic들의 FIFO 메모리 액세스 순서로부터 리오더링 버퍼부(120)의 액세스 순서 정보를 생성한다(S920).
그리고, 외부 컴파일러는 액세스 순서 정보를 레지스터 파일(Register File)에 저장하는 명령 생성 및 스케줄링을 수행한다(S930). 여기서, 레지스터 파일은 프로세서(200) 내의 임시 저장소를 의미한다.
그리고, 외부 컴파일러는 레지스터 파일로부터 액세스 순서 정보를 리오더링 버퍼부(120)의 제어부로 전달하는 명령 생성 및 스케줄링을 수행한다(S940).
프로세서(200)는 이상과 같이 생성된 정보를 입력받아 저장하고, 적절한 싸이클이 되면 리오더링 버퍼부(120)로 컨트롤 신호를 전송할 수 있다. 여기서, 컨트롤 신호는 적어도 하나의 loop에 대하여 리오더링 버퍼부(120)의 복수의 버퍼 영역의 출력을 제어하기 위한 신호일 수 있다. 즉, 컨트롤 신호는 외부 컴파일러로부터 수신된 정보에 기초하여 프로세서(200)에서 재생성된 신호일 수 있다.
다만, 이에 한정되는 것은 아니며, 컨트롤 신호는 외부 컴파일러로부터 수신된 정보가 그대로 이용될 수도 있다. 이 경우, 프로세서(200)는 외부 컴파일러로부터 수신된 정보를 일시적으로 저장하고, 리오더링 버퍼부(120)로 전송할 수 있다.
도 10은 본 발명의 일 실시 예에 따른 데이터 입출력 유닛의 제어 방법을 설명하기 위한 흐름도이다. 여기서, 데이터 입출력 유닛은 제1 스케줄 중 커널(Kernel)의 싸이클(Cycle)이 축소된 제2 스케줄에 기초하여 데이터를 처리하는 프로세서와 연결되며, 제1 스케줄에 기초하여 데이터를 순차적으로 제공받아 출력하고, 외부 유닛 및 프로세서 간 입출력 데이터를 순차적으로 저장하는 FIFO 메모리부 및 FIFO 메모리부의 일측에 연결된 리오더링 버퍼(Reordering Buffer)부를 포함한다.
먼저, FIFO 메모리부로부터 출력되거나 FIFO 메모리부로 입력되는 데이터를 리오더링 버퍼부의 복수의 버퍼 영역에 순차적으로 저장한다(S1010). 그리고, 프로세서로부터 제공되는 컨트롤 신호에 기초하여 복수의 버퍼 영역 중 하나에 저장된 데이터를 출력한다(S1020).
여기서, FIFO 메모리부는 외부 유닛으로부터 입력된 데이터를 프로세서로 제공하는 제1 FIFO 메모리 및 프로세서로부터는 출력되는 데이터를 외부 유닛으로 제공하는 제2 FIFO 메모리를 포함하고, 리오더링 버퍼부는 제1 FIFO 메모리의 일측에 연결되는 제1 리오더링 버퍼 및 제2 FIFO 메모리의 일측에 연결되는 제2 리오더링 버퍼를 포함할 수 있다.
그리고, 제1 리오더링 버퍼는 제1 FIFO 메모리의 출력 측 및 프로세서의 입력 측에 연결되며, 저장하는 단계(S1010)는 제1 FIFO 메모리로부터 순차적으로 출력되는 데이터를 복수의 제1 버퍼 영역에 순차적으로 저장하며, 출력하는 단계(S1020)는 컨트롤 신호에 기초하여 복수의 제1 버퍼 영역 중 하나에 저장된 데이터를 출력하여 프로세서로 제공할 수 있다.
또는, 제1 리오더링 버퍼는 외부 유닛의 출력 측 및 제1 FIFO 메모리의 입력 측에 연결되며, 저장하는 단계(S1010)는 외부 유닛으로부터 출력되는 데이터를 복수의 제1 버퍼 영역에 순차적으로 저장하며, 출력하는 단계(S1020)는 컨트롤 신호에 기초하여 복수의 제1 버퍼 영역 중 하나에 저장된 데이터를 출력하여 제1 FIFO 메모리로 제공하며, 프로세서의 로드(load) 명령이 수신되면 제1 FIFO 메모리에 저장된 데이터를 순차적으로 출력하여 프로세서로 제공하는 단계를 더 포함할 수 있다.
한편, 제2 리오더링 버퍼는 제2 FIFO 메모리의 출력 측 및 외부 유닛의 입력 측에 연결되며, 프로세서로부터 출력되는 데이터를 제2 FIFO 메모리에 순차적으로 저장하고, 저장된 데이터를 순차적으로 출력하여 제2 리오더링 버퍼로 제공하는 단계를 더 포함하고, 저장하는 단계(S1010)는 제2 FIFO 메모리로부터 순차적으로 출력되는 데이터를 복수의 제2 버퍼 영역에 순차적으로 저장하며, 출력하는 단계(S1020)는 컨트롤 신호에 기초하여 복수의 제2 버퍼 영역 중 하나에 저장된 데이터를 출력하여 외부 유닛으로 제공할 수 있다.
또는, 제2 리오더링 버퍼는 프로세서의 출력 측 및 제2 FIFO 메모리의 입력 측에 연결되며, 저장하는 단계(S1010)는 프로세서로부터 출력되는 데이터를 복수의 제2 버퍼 영역에 순차적으로 저장하며, 출력하는 단계(S1020)는 컨트롤 신호에 기초하여 복수의 제2 버퍼 영역 중 하나에 저장된 데이터를 출력하여 제2 FIFO 메모리로 제공할 수 있다.
한편, 제1 FIFO 메모리가 비어 있는 상태에서 프로세서의 로드(load) 명령이 수신되거나, 제2 FIFO 메모리에 저장 공간이 없는 상태에서 프로세서의 스토어(store) 명령이 수신되면, 프로세서의 데이터 처리를 정지시키는 스톨(stall) 명령을 프로세서로 전송하는 단계를 더 포함할 수 있다.
한편, 컨트롤 신호는 제2 스케줄에 기초하여 복수의 버퍼 영역 중 출력이 요구되는 데이터가 저장된 버퍼 영역을 지정하는 신호일 수 있다.
또한, 제2 스케줄은 복수의 버퍼 영역의 개수에 기초하여 제1 스케줄에 포함된 커널의 싸이클을 축소함에 따라, 입출력 명령어의 데이터 입출력 순서가 변경된 스케줄일 수 있다.
이상과 같은 본 발명의 다양한 실시 예에 따르면, 데이터 입출력 유닛이 프로세서로 입력되는 데이터의 순서를 변경함에 따라 프로세서의 스케줄에 의해 생성된 명령어들의 처리 속도를 향상시킬 수 있다.
한편, 이상에서는 데이터 입출력 유닛 및 프로세서를 구별하여 데이터 입출력 유닛을 중점적으로 설명하였으나, 이에 한정되는 것은 아니다. 예를 들어, 데이터 입출력 유닛 및 프로세서는 하나의 전자 장치로 구현될 수도 있다.
한편, 이상에서는 제1 리오더링 버퍼 및 제2 리오더링 버퍼 각각의 복수의 버퍼 영역이 두 개인 것으로 설명하였으나, 이에 한정되는 것은 아니다. 예를 들어, 제1 리오더링 버퍼 및 제2 리오더링 버퍼 각각의 복수의 버퍼 영역이 세 개일 수도 있다. 또한, 제1 리오더링 버퍼 및 제2 리오더링 버퍼 각각의 복수의 버퍼 영역의 개수는 서로 다를 수도 있다.
이 경우, 외부 컴파일러는 복수의 버퍼 영역의 개수를 고려하여 제1 스케줄로부터 제2 스케줄을 생성할 수 있다. 또는, 외부 컴파일러는 복수의 버퍼 영역의 개수를 고려하여 고급언어로 쓰인 프로그램으로부터 제2 스케줄을 생성할 수도 있다.
한편, 이러한 다양한 실시 예에 따른 방법들은 프로그래밍되어 각종 저장 매체에 저장될 수 있다. 이에 따라, 저장 매체를 실행하는 다양한 유형의 전자 장치에서 상술한 다양한 실시 예에 따른 방법들이 구현될 수 있다.
구체적으로는, 상술한 제어 방법을 순차적으로 수행하는 프로그램이 저장된 비일시적 판독 가능 매체(non-transitory computer readable medium)가 제공될 수 있다.
비일시적 판독 가능 매체란 레지스터, 캐쉬, 메모리 등과 같이 짧은 순간 동안 데이터를 저장하는 매체가 아니라 반영구적으로 데이터를 저장하며, 기기에 의해 판독(reading)이 가능한 매체를 의미한다. 구체적으로는, 상술한 다양한 어플리케이션 또는 프로그램들은 CD, DVD, 하드 디스크, 블루레이 디스크, USB, 메모리카드, ROM 등과 같은 비일시적 판독 가능 매체에 저장되어 제공될 수 있다.
또한, 이상에서는 본 발명의 바람직한 실시 예에 대하여 도시하고 설명하였지만, 본 발명은 상술한 특정의 실시 예에 한정되지 아니하며, 청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 기술분야에서 통상의 지식을 가진자에 의해 다양한 변형실시가 가능한 것은 물론이고, 이러한 변형실시들은 본 발명의 기술적 사상이나 전망으로부터 개별적으로 이해되어져서는 안될 것이다.
100 : 데이터 입출력 유닛 110 : FIFO 메모리부
120 : 리오더링 버퍼부 200 : 프로세서
300 : 외부 유닛
120 : 리오더링 버퍼부 200 : 프로세서
300 : 외부 유닛
Claims (20)
- 제1 스케줄 중 커널(Kernel)의 싸이클(Cycle)이 축소된 제2 스케줄에 기초하여 데이터를 처리하는 프로세서와 연결되며, 상기 제1 스케줄에 기초하여 데이터를 순차적으로 제공받아 출력하는 데이터 입출력 유닛에 있어서,
외부 유닛 및 상기 프로세서 간 입출력 데이터를 순차적으로 저장하는 FIFO 메모리부; 및
상기 FIFO 메모리부의 일측에 연결되며, 상기 FIFO 메모리부로부터 출력되거나 상기 FIFO 메모리부로 입력되는 데이터를 복수의 버퍼 영역에 순차적으로 저장하며, 상기 프로세서로부터 제공되는 컨트롤 신호에 기초하여 상기 복수의 버퍼 영역 중 하나에 저장된 데이터를 출력하는 리오더링 버퍼(Reordering Buffer)부;를 포함하는, 데이터 입출력 유닛. - 제1항에 있어서,
상기 FIFO 메모리부는,
상기 외부 유닛으로부터 입력된 데이터를 상기 프로세서로 제공하는 제1 FIFO 메모리; 및
상기 프로세서로부터는 출력되는 데이터를 상기 외부 유닛으로 제공하는 제2 FIFO 메모리;를 포함하고,
상기 리오더링 버퍼부는,
상기 제1 FIFO 메모리의 일측에 연결되는 제1 리오더링 버퍼; 및
상기 제2 FIFO 메모리의 일측에 연결되는 제2 리오더링 버퍼;를 포함하는 데이터 입출력 유닛. - 제2항에 있어서,
상기 제1 리오더링 버퍼는,
상기 제1 FIFO 메모리의 출력 측 및 상기 프로세서의 입력 측에 연결되어, 상기 제1 FIFO 메모리로부터 순차적으로 출력되는 데이터를 복수의 제1 버퍼 영역에 순차적으로 저장하며, 상기 컨트롤 신호에 기초하여 상기 복수의 제1 버퍼 영역 중 하나에 저장된 데이터를 출력하여 상기 프로세서로 제공하는, 데이터 입출력 유닛. - 제2항에 있어서,
상기 제1 리오더링 버퍼는,
상기 외부 유닛의 출력 측 및 상기 제1 FIFO 메모리의 입력 측에 연결되어, 상기 외부 유닛으로부터 출력되는 데이터를 복수의 제1 버퍼 영역에 순차적으로 저장하며, 상기 컨트롤 신호에 기초하여 상기 복수의 제1 버퍼 영역 중 하나에 저장된 데이터를 출력하여 상기 제1 FIFO 메모리로 제공하며,
상기 제1 FIFO 메모리는,
상기 프로세서의 로드(load) 명령이 수신되면 상기 제1 FIFO 메모리에 저장된 데이터를 순차적으로 출력하여 상기 프로세서로 제공하는, 데이터 입출력 유닛. - 제2항에 있어서,
상기 제2 FIFO 메모리는,
상기 프로세서로부터 출력되는 데이터를 순차적으로 저장하고, 상기 저장된 데이터를 순차적으로 출력하여 상기 제2 리오더링 버퍼로 제공하며,
상기 제2 리오더링 버퍼는,
상기 제2 FIFO 메모리의 출력 측 및 상기 외부 유닛의 입력 측에 연결되어, 상기 제2 FIFO 메모리로부터 순차적으로 출력되는 데이터를 복수의 제2 버퍼 영역에 순차적으로 저장하며, 상기 컨트롤 신호에 기초하여 상기 복수의 제2 버퍼 영역 중 하나에 저장된 데이터를 출력하여 상기 외부 유닛으로 제공하는, 데이터 입출력 유닛. - 제2항에 있어서,
상기 제2 리오더링 버퍼는,
상기 프로세서의 출력 측 및 상기 제2 FIFO 메모리의 입력 측에 연결되어, 상기 프로세서로부터 출력되는 데이터를 복수의 제2 버퍼 영역에 순차적으로 저장하며, 상기 컨트롤 신호에 기초하여 상기 복수의 제2 버퍼 영역 중 하나에 저장된 데이터를 출력하여 상기 제2 FIFO 메모리로 제공하는, 데이터 입출력 유닛. - 제2항에 있어서,
상기 데이터 입출력 유닛은,
상기 제1 FIFO 메모리가 비어 있는 상태에서 상기 프로세서의 로드(load) 명령이 수신되거나, 상기 제2 FIFO 메모리에 저장 공간이 없는 상태에서 상기 프로세서의 스토어(store) 명령이 수신되면, 상기 프로세서의 데이터 처리를 정지시키는 스톨(stall) 명령을 상기 프로세서로 전송하는, 데이터 입출력 유닛. - 제1항에 있어서,
상기 컨트롤 신호는,
상기 제2 스케줄에 기초하여 상기 복수의 버퍼 영역 중 출력이 요구되는 데이터가 저장된 버퍼 영역을 지정하는 신호인, 데이터 입출력 유닛. - 제1항에 있어서,
상기 제2 스케줄은,
상기 복수의 버퍼 영역의 개수에 기초하여 상기 제1 스케줄에 포함된 커널의 싸이클을 축소함에 따라, 입출력 명령어의 데이터 입출력 순서가 변경된 스케줄인, 데이터 입출력 유닛. - 제1 스케줄에 기초하여 데이터를 순차적으로 제공받아 출력하는 데이터 입출력 유닛; 및
상기 제1 스케줄 중 커널(Kernel)의 싸이클(Cycle)이 축소된 제2 스케줄에 기초하여 데이터를 처리하는 프로세서;를 포함하며,
상기 데이터 입출력 유닛은,
외부 유닛 및 상기 프로세서 간 입출력 데이터를 순차적으로 저장하는 FIFO 메모리부; 및
상기 FIFO 메모리부의 일측에 연결되며, 상기 FIFO 메모리부로부터 출력되거나 상기 FIFO 메모리부로 입력되는 데이터를 복수의 버퍼 영역에 순차적으로 저장하며, 상기 프로세서로부터 제공되는 컨트롤 신호에 기초하여 상기 복수의 버퍼 영역 중 하나에 저장된 데이터를 출력하는 리오더링 버퍼(Reordering Buffer)부;를 포함하는, 전자 장치. - 제1 스케줄 중 커널(Kernel)의 싸이클(Cycle)이 축소된 제2 스케줄에 기초하여 데이터를 처리하는 프로세서와 연결되며, 상기 제1 스케줄에 기초하여 데이터를 순차적으로 제공받아 출력하고, 외부 유닛 및 상기 프로세서 간 입출력 데이터를 순차적으로 저장하는 FIFO 메모리부 및 상기 FIFO 메모리부의 일측에 연결된 리오더링 버퍼(Reordering Buffer)부를 포함하는 데이터 입출력 유닛의 제어 방법에 있어서,
상기 FIFO 메모리부로부터 출력되거나 상기 FIFO 메모리부로 입력되는 데이터를 상기 리오더링 버퍼부의 복수의 버퍼 영역에 순차적으로 저장하는 단계; 및
상기 프로세서로부터 제공되는 컨트롤 신호에 기초하여 상기 복수의 버퍼 영역 중 하나에 저장된 데이터를 출력하는 단계;를 포함하는 제어 방법. - 제11항에 있어서,
상기 FIFO 메모리부는,
상기 외부 유닛으로부터 입력된 데이터를 상기 프로세서로 제공하는 제1 FIFO 메모리; 및
상기 프로세서로부터는 출력되는 데이터를 상기 외부 유닛으로 제공하는 제2 FIFO 메모리;를 포함하고,
상기 리오더링 버퍼부는,
상기 제1 FIFO 메모리의 일측에 연결되는 제1 리오더링 버퍼; 및
상기 제2 FIFO 메모리의 일측에 연결되는 제2 리오더링 버퍼;를 포함하는 제어 방법. - 제12항에 있어서,
상기 제1 리오더링 버퍼는, 상기 제1 FIFO 메모리의 출력 측 및 상기 프로세서의 입력 측에 연결되며,
상기 저장하는 단계는,
상기 제1 FIFO 메모리로부터 순차적으로 출력되는 데이터를 복수의 제1 버퍼 영역에 순차적으로 저장하며,
상기 출력하는 단계는,
상기 컨트롤 신호에 기초하여 상기 복수의 제1 버퍼 영역 중 하나에 저장된 데이터를 출력하여 상기 프로세서로 제공하는, 제어 방법. - 제12항에 있어서,
상기 제1 리오더링 버퍼는, 상기 외부 유닛의 출력 측 및 상기 제1 FIFO 메모리의 입력 측에 연결되며,
상기 저장하는 단계는,
상기 외부 유닛으로부터 출력되는 데이터를 복수의 제1 버퍼 영역에 순차적으로 저장하며,
상기 출력하는 단계는,
상기 컨트롤 신호에 기초하여 상기 복수의 제1 버퍼 영역 중 하나에 저장된 데이터를 출력하여 상기 제1 FIFO 메모리로 제공하며,
상기 프로세서의 로드(load) 명령이 수신되면 상기 제1 FIFO 메모리에 저장된 데이터를 순차적으로 출력하여 상기 프로세서로 제공하는 단계;를 더 포함하는, 제어 방법. - 제12항에 있어서,
상기 제2 리오더링 버퍼는, 상기 제2 FIFO 메모리의 출력 측 및 상기 외부 유닛의 입력 측에 연결되며,
상기 프로세서로부터 출력되는 데이터를 상기 제2 FIFO 메모리에 순차적으로 저장하고, 상기 저장된 데이터를 순차적으로 출력하여 상기 제2 리오더링 버퍼로 제공하는 단계;를 더 포함하고,
상기 저장하는 단계는,
상기 제2 FIFO 메모리로부터 순차적으로 출력되는 데이터를 복수의 제2 버퍼 영역에 순차적으로 저장하며,
상기 출력하는 단계는,
상기 컨트롤 신호에 기초하여 상기 복수의 제2 버퍼 영역 중 하나에 저장된 데이터를 출력하여 상기 외부 유닛으로 제공하는, 제어 방법. - 제12항에 있어서,
상기 제2 리오더링 버퍼는, 상기 프로세서의 출력 측 및 상기 제2 FIFO 메모리의 입력 측에 연결되며,
상기 저장하는 단계는,
상기 프로세서로부터 출력되는 데이터를 복수의 제2 버퍼 영역에 순차적으로 저장하며,
상기 출력하는 단계는,
상기 컨트롤 신호에 기초하여 상기 복수의 제2 버퍼 영역 중 하나에 저장된 데이터를 출력하여 상기 제2 FIFO 메모리로 제공하는, 제어 방법. - 제12항에 있어서,
상기 제1 FIFO 메모리가 비어 있는 상태에서 상기 프로세서의 로드(load) 명령이 수신되거나, 상기 제2 FIFO 메모리에 저장 공간이 없는 상태에서 상기 프로세서의 스토어(store) 명령이 수신되면, 상기 프로세서의 데이터 처리를 정지시키는 스톨(stall) 명령을 상기 프로세서로 전송하는 단계;를 더 포함하는, 제어 방법. - 제11항에 있어서,
상기 컨트롤 신호는,
상기 제2 스케줄에 기초하여 상기 복수의 버퍼 영역 중 출력이 요구되는 데이터가 저장된 버퍼 영역을 지정하는 신호인, 제어 방법. - 제11항에 있어서,
상기 제2 스케줄은,
상기 복수의 버퍼 영역의 개수에 기초하여 상기 제1 스케줄에 포함된 커널의 싸이클을 축소함에 따라, 입출력 명령어의 데이터 입출력 순서가 변경된 스케줄인, 제어 방법. - 제1 스케줄에 기초하여 데이터를 순차적으로 제공받아 출력하고, 외부 유닛 및 프로세서 간 입출력 데이터를 순차적으로 저장하는 FIFO 메모리부 및 상기 FIFO 메모리부의 일측에 연결된 리오더링 버퍼(Reordering Buffer)부를 포함하는 데이터 입출력 유닛 및 상기 제1 스케줄 중 커널(Kernel)의 싸이클(Cycle)이 축소된 제2 스케줄에 기초하여 데이터를 처리하는 상기 프로세서를 포함하는 전자 장치의 제어 방법에 있어서,
상기 FIFO 메모리부로부터 출력되거나 상기 FIFO 메모리부로 입력되는 데이터를 상기 리오더링 버퍼의 복수의 버퍼 영역에 순차적으로 저장하는 단계; 및
상기 프로세서로부터 제공되는 컨트롤 신호에 기초하여 상기 복수의 버퍼 영역 중 하나에 저장된 데이터를 출력하는 단계;를 포함하는, 제어 방법.
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020160130051A KR20180038875A (ko) | 2016-10-07 | 2016-10-07 | 데이터 입출력 유닛, 전자 장치 및 그 제어 방법들 |
PCT/KR2017/010988 WO2018066937A1 (en) | 2016-10-07 | 2017-09-29 | Data input/output unit, electronic apparatus, and control methods thereof |
EP17858731.7A EP3472711B1 (en) | 2016-10-07 | 2017-09-29 | Data input/output unit, electronic apparatus, and control methods thereof |
US15/727,093 US10481867B2 (en) | 2016-10-07 | 2017-10-06 | Data input/output unit, electronic apparatus, and control methods thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020160130051A KR20180038875A (ko) | 2016-10-07 | 2016-10-07 | 데이터 입출력 유닛, 전자 장치 및 그 제어 방법들 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20180038875A true KR20180038875A (ko) | 2018-04-17 |
Family
ID=61828893
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020160130051A KR20180038875A (ko) | 2016-10-07 | 2016-10-07 | 데이터 입출력 유닛, 전자 장치 및 그 제어 방법들 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10481867B2 (ko) |
EP (1) | EP3472711B1 (ko) |
KR (1) | KR20180038875A (ko) |
WO (1) | WO2018066937A1 (ko) |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5296041A (en) | 1976-02-09 | 1977-08-12 | Seiko Epson Corp | Multi-focal lens |
US5878280A (en) * | 1993-09-23 | 1999-03-02 | Philips Electronics North America Corp. | Data buffering system for plural data memory arrays |
US5878245A (en) * | 1993-10-29 | 1999-03-02 | Advanced Micro Devices, Inc. | High performance load/store functional unit and data cache |
US5920724A (en) * | 1996-03-28 | 1999-07-06 | Intel Corporation | Software pipelining a hyperblock loop |
US6173378B1 (en) * | 1998-09-11 | 2001-01-09 | Advanced Micro Devices, Inc. | Method for ordering a request for access to a system memory using a reordering buffer or FIFO |
US6738837B1 (en) * | 2001-02-02 | 2004-05-18 | Cradle Technologies, Inc. | Digital system with split transaction memory access |
US7240347B1 (en) * | 2001-10-02 | 2007-07-03 | Juniper Networks, Inc. | Systems and methods for preserving the order of data |
US6779092B2 (en) * | 2002-05-15 | 2004-08-17 | Hewlett-Packard Development Company, L.P. | Reordering requests for access to subdivided resource |
KR100463205B1 (ko) | 2003-02-13 | 2004-12-23 | 삼성전자주식회사 | 시퀀셜 버퍼를 내장하여 디에스피의 데이터 억세스 성능을향상시키는 컴퓨터 시스템 및 그 컴퓨터 시스템의 데이터억세스 방법 |
CA2439137A1 (en) * | 2003-08-08 | 2005-02-08 | Ibm Canada Limited - Ibm Canada Limitee | Improved scheduling technique for software pipelining |
US7096345B1 (en) * | 2003-09-26 | 2006-08-22 | Marvell International Ltd. | Data processing system with bypass reorder buffer having non-bypassable locations and combined load/store arithmetic logic unit and processing method thereof |
US20060155940A1 (en) | 2005-01-10 | 2006-07-13 | Mario Au | Multi-queue FIFO memory systems that utilize read chip select and device identification codes to control one-at-a-time bus access between selected FIFO memory chips |
JP2006338616A (ja) * | 2005-06-06 | 2006-12-14 | Matsushita Electric Ind Co Ltd | コンパイラ装置 |
US7791611B1 (en) * | 2006-08-24 | 2010-09-07 | Nvidia Corporation | Asynchronous reorder buffer |
KR101451254B1 (ko) | 2010-07-16 | 2014-10-15 | 엠.에스. 라마이아 스쿨 오브 어드밴스드 스터디스 | 데이터 인터페이스 회로 |
US9147071B2 (en) * | 2010-07-20 | 2015-09-29 | Mcafee, Inc. | System and method for proactive detection of malware device drivers via kernel forensic behavioral monitoring and a back-end reputation system |
US20120117360A1 (en) * | 2010-11-09 | 2012-05-10 | Texas Instruments Incorporated | Dedicated instructions for variable length code insertion by a digital signal processor (dsp) |
JP5296041B2 (ja) | 2010-12-15 | 2013-09-25 | 株式会社東芝 | メモリシステムおよびメモリシステムの制御方法 |
US9798544B2 (en) * | 2012-12-10 | 2017-10-24 | Nvidia Corporation | Reordering buffer for memory access locality |
US8832324B1 (en) * | 2013-03-15 | 2014-09-09 | International Business Machines Corporation | First-in-first-out queue-based command spreading |
US9239712B2 (en) | 2013-03-29 | 2016-01-19 | Intel Corporation | Software pipelining at runtime |
WO2014193381A1 (en) * | 2013-05-30 | 2014-12-04 | Intel Corporation | Dynamic optimization of pipelined software |
US9396109B2 (en) * | 2013-12-27 | 2016-07-19 | Qualcomm Incorporated | Method and apparatus for DRAM spatial coalescing within a single channel |
US9983875B2 (en) * | 2016-03-04 | 2018-05-29 | International Business Machines Corporation | Operation of a multi-slice processor preventing early dependent instruction wakeup |
-
2016
- 2016-10-07 KR KR1020160130051A patent/KR20180038875A/ko not_active Application Discontinuation
-
2017
- 2017-09-29 EP EP17858731.7A patent/EP3472711B1/en active Active
- 2017-09-29 WO PCT/KR2017/010988 patent/WO2018066937A1/en unknown
- 2017-10-06 US US15/727,093 patent/US10481867B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
EP3472711A1 (en) | 2019-04-24 |
EP3472711A4 (en) | 2019-06-26 |
US20180101357A1 (en) | 2018-04-12 |
WO2018066937A1 (en) | 2018-04-12 |
US10481867B2 (en) | 2019-11-19 |
EP3472711B1 (en) | 2020-11-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111913652B (zh) | 包括处理电路的存储器件、存储器控制器和存储*** | |
US20140317628A1 (en) | Memory apparatus for processing support of long routing in processor, and scheduling apparatus and method using the memory apparatus | |
US20100274939A1 (en) | Reconfigurable processor and interrupt handling method | |
JP2011086298A (ja) | プログラム・フロー制御 | |
JP2008158759A (ja) | プログラミング方法、プログラム処理方法、処理プログラム及び情報処理装置 | |
JP3938580B2 (ja) | 情報処理装置、情報処理方法、半導体装置、コンピュータプログラム | |
KR102205899B1 (ko) | 메모리의 뱅크 충돌을 방지하기 위한 방법 및 장치 | |
US9256430B2 (en) | Instruction scheduling approach to improve processor performance | |
US8656393B2 (en) | Multi-core system | |
KR102332523B1 (ko) | 연산 처리 장치 및 방법 | |
US20150280740A1 (en) | Method of compressing and restoring configuration data | |
WO2009098737A1 (ja) | 外部デバイスアクセス装置、その制御方法及びシステムlsi | |
KR20140131781A (ko) | 메모리 제어 장치 및 방법 | |
KR20170060843A (ko) | Vliw 인터페이스 장치 및 제어 방법 | |
KR20180038875A (ko) | 데이터 입출력 유닛, 전자 장치 및 그 제어 방법들 | |
JP2006048661A (ja) | プロセッサとコプロセッサとの間でのデータ転送を制御する演算処理装置 | |
CN110383259B (zh) | 计算处理装置和信息处理*** | |
US20150193375A1 (en) | Processor and method of controlling the same | |
US10606602B2 (en) | Electronic apparatus, processor and control method including a compiler scheduling instructions to reduce unused input ports | |
KR101711388B1 (ko) | 파이프라인에서 블럭을 스케줄하는 컴파일 방법 및 장치 | |
JP2002318689A (ja) | 資源使用サイクルの遅延指定付き命令を実行するvliwプロセッサおよび遅延指定命令の生成方法 | |
US9928045B2 (en) | Information processing apparatus, compile method and non-transitory recording medium storing compile program | |
US20110010529A1 (en) | Instruction execution control method, instruction format, and processor | |
JPH11219294A (ja) | プログラム制御方法及び装置 | |
JP2008191856A (ja) | 情報処理システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal |