KR20150106752A - Vliw 명령어를 처리하는 방법 및 장치와 vliw 명령어를 처리하기 위한 명령어를 생성하는 방법 및 장치 - Google Patents

Vliw 명령어를 처리하는 방법 및 장치와 vliw 명령어를 처리하기 위한 명령어를 생성하는 방법 및 장치 Download PDF

Info

Publication number
KR20150106752A
KR20150106752A KR1020140029203A KR20140029203A KR20150106752A KR 20150106752 A KR20150106752 A KR 20150106752A KR 1020140029203 A KR1020140029203 A KR 1020140029203A KR 20140029203 A KR20140029203 A KR 20140029203A KR 20150106752 A KR20150106752 A KR 20150106752A
Authority
KR
South Korea
Prior art keywords
instruction
vliw instruction
allocated
vliw
slots
Prior art date
Application number
KR1020140029203A
Other languages
English (en)
Other versions
KR102210997B1 (ko
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 KR1020140029203A priority Critical patent/KR102210997B1/ko
Priority to PCT/KR2015/002354 priority patent/WO2015137722A1/ko
Priority to US15/125,023 priority patent/US10599439B2/en
Publication of KR20150106752A publication Critical patent/KR20150106752A/ko
Application granted granted Critical
Publication of KR102210997B1 publication Critical patent/KR102210997B1/ko

Links

Images

Classifications

    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30156Special purpose encoding of instructions, e.g. Gray coding
    • 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/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode units
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

VLIW 명령어를 처리하는 방법 및 장치가 제공된다. 복수의 슬롯들 각각에 대해 VLIW 명령어가 할당되는지 여부에 대한 정보를 포함하고 있는 연산 할당 명령어를 획득하고, 획득한 연산 할당 명령어를 기초로 VLIW 명령어가 상기 복수의 슬롯들 각각에 할당되는지 여부에 대한 정보를 포함하는 데이터 베이스를 갱신하며, 갱신된 데이터 베이스에 기초하여, 적어도 하나의 VLIW 명령어를 상기 복수의 슬롯들 각각에 할당함으로써, VLIW 명령어로 구성되는 코드를 효과적으로 압축할 수 있다.

Description

VLIW 명령어를 처리하는 방법 및 장치와 VLIW 명령어를 처리하기 위한 명령어를 생성하는 방법 및 장치 {Method and apparatus for processing VLIW instruction and method and apparatus for generating instruction for processing VLIW instruction}
VLIW 명령어를 처리하는 방법 및 장치와 VLIW 명령어를 처리하기 위한 명령어를 생성하는 방법 및 장치에 관한 것이다.
VLIW 명령어를 처리하는 시스템에서, 메모리를 효율적으로 사용하기 위해, VLIW 명령어에 대응되는 코드를 압축하는 문제에 최근 들어 많은 연구가 행해지고 있다.
VLIW 명령어에 대응되는 코드를 압축하기 위해 일반적으로 쓰이는 방식은 NOP(No Operation) 압축이다. NOP 압축은 다양한 방식으로 수행될 수 있는데 종래에는 코드의 일부 영역에 별도의 비트를 할당하여 NOP 압축을 수행하였다. 종래의 NOP 압축 방법은, 코드에 별도의 영역을 할당해야 하므로 코드를 부호화할 수 있는 공간에 제약이 생긴다는 문제가 있다.
개시된 실시예에 따르면 메모리를 효율적으로 사용하기 위해, 복수개의 슬롯들 중에서 VLIW 명령어가 할당되는 슬롯을 판단하는 VLIW 명령어를 처리하는 방법 및 장치를 제공하는데 목적이 있다.
본 발명의 일 실시예에 따른 VLIW 명령어를 처리하는 방법은, 복수의 슬롯들 각각에 대해 VLIW 명령어가 할당되는지 여부에 대한 정보를 포함하고 있는 연산 할당 명령어를 획득하는 단계; 상기 획득한 연산 할당 명령어를 기초로 상기 VLIW 명령어가 상기 복수의 슬롯들 각각에 할당되는지 여부에 대한 정보를 포함하는 데이터 베이스를 갱신하는 단계; 및 상기 갱신된 데이터 베이스에 기초하여, 적어도 하나의 VLIW 명령어를 상기 복수의 슬롯들 각각에 할당하는 단계를 포함할 수 있다.
본 발명의 일 실시예에 따른 VLIW 명령어를 처리하는 방법에 있어서, 상기 연산 할당 명령어는, 연산이 수행되는 사이클마다 복수의 슬롯들 각각에 대해 VLIW 명령어가 할당되는지 여부에 대한 정보를 포함할 수 있다.
본 발명의 일 실시예에 따른 VLIW 명령어를 처리하는 방법에 있어서, 상기 연산 할당 명령어를 획득하는 단계는,소정 슬롯에서 VLIW 명령어가 할당되지 않는 첫 번째 사이클에 연산 명령어를 획득하는 단계를 포함할 수 있다.
본 발명의 일 실시예에 따른 VLIW 명령어를 처리하는 방법에 있어서, 상기 연산 할당 명령어는, 소정 슬롯에 상기 상기 VLIW 명령어가 할당되는 경우 제 1 값을 갖고, 소정 슬롯에 상기 VLIW 명령어가 할당되지 않는 경우 제 2 값을 갖을 수 있다.
본 발명의 일 실시예에 따른 VLIW 명령어를 처리하는 방법에 있어서, 상기 데이터 베이스를 갱신하는 단계는, 상기 제 1 값으로 초기화 되어 있는 상기 데이터 베이스를 상기 획득한 연산 할당 명령어에 기초하여, 상기 제 1 값을 유지하거나 상기 제 2 값으로 변경하는 단계를 포함할 수 있다.
본 발명의 일 실시예에 따른 VLIW 명령어를 처리하는 방법에 있어서, 상기 적어도 하나의 VLIW 명령어를 상기 복수의 슬롯들 각각에 할당한 경우, 상기 데이터 베이스를 제 1 값으로 초기화하는 단계를 더 포함할 수 있다.
본 발명의 일 실시예에 따른 VLIW 명령어를 처리하기 위한 명령어를 생성하는 방법에 있어서, 복수의 슬롯들 각각에 대해 제 1 사이클에서 VLIW 명령어가 할당되는지 여부를 판단하는 단계; 상기 제 1 사이클의 다음 사이클에서 상기 복수의 슬롯들 각각에 대해 VLIW 명령어가 할당되는지 여부를 판단하는 단계; 및 상기 판단된 결과에 기초하여, 각 사이클마다 상기 복수의 슬롯들 각각에 대해 VLIW 명령어가 할당되는지 여부에 대한 정보를 포함하고 있는 연산 할당 명령어를 생성하는 단계를 포함할 수 있다.
본 발명의 일 실시예에 따른 VLIW 명령어를 처리하기 위한 명령어를 생성하는 방법에 있어서, 상기 연산 할당 명령어는, 소정 슬롯에 상기 상기 VLIW 명령어가 할당되는 경우 제 1 값을 갖고, 소정 슬롯에 상기 VLIW 명령어가 할당되지 않는 경우 제 2 값을 갖을 수 있다.
본 발명의 일 실시예에 따른 VLIW 명령어를 처리하는 장치에 있어서, 복수의 슬롯들 각각에 대해 VLIW 명령어가 할당되는지 여부에 대한 정보를 포함하고 있는 연산 할당 명령어를 획득하는 입출력부; 상기 획득한 연산 할당 명령어를 기초로 상기 VLIW 명령어가 상기 복수의 슬롯들 각각에 할당되는지 여부에 대한 정보를 포함하는 데이터 베이스를 갱신하는 제어부; 및 상기 갱신된 데이터 베이스에 기초하여, 적어도 하나의 VLIW 명령어를 상기 복수의 슬롯들 각각에 할당하는 명령어 할당부를 포함할 수 있다.
본 발명의 일 실시예에 따른 VLIW 명령어를 처리하는 장치에 있어서, 상기 연산 할당 명령어는, 연산이 수행되는 사이클마다 복수의 슬롯들 각각에 대해 VLIW 명령어가 할당되는지 여부에 대한 정보를 포함할 수 있다.
본 발명의 일 실시예에 따른 VLIW 명령어를 처리하는 장치에 있어서, 상기 입출력부는, 소정 슬롯에서 VLIW 명령어가 할당되지 않는 첫 번째 사이클에 연산 명령어를 획득할 수 있다.
본 발명의 일 실시예에 따른 VLIW 명령어를 처리하는 장치에 있어서, 상기 연산 할당 명령어는, 소정 슬롯에 상기 상기 VLIW 명령어가 할당되는 경우 제 1 값을 갖고, 소정 슬롯에 상기 VLIW 명령어가 할당되지 않는 경우 제 2 값을 갖을 수 있다.
본 발명의 일 실시예에 따른 VLIW 명령어를 처리하는 장치에 있어서, 상기 제어부는, 상기 제 1 값으로 초기화 되어 있는 상기 데이터 베이스를 상기 획득한 연산 할당 명령어에 기초하여, 상기 제 1 값을 유지하거나 상기 제 2 값으로 변경할 수 있다.
본 발명의 일 실시예에 따른 VLIW 명령어를 처리하는 장치에 있어서, 상기 제어부는, 상기 적어도 하나의 VLIW 명령어를 상기 복수의 슬롯들 각각에 할당한 경우, 상기 데이터 베이스를 제 1 값으로 초기화할 수 있다.
본 발명의 일 실시예에 따른 VLIW 명령어를 처리하기 위한 명령어를 생성하는 방법에 있어서, 복수의 슬롯들 각각에 대해 제 1 사이클에서 VLIW 명령어가 할당되는지 여부를 판단하고, 상기 제 1 사이클의 다음 사이클에서 상기 복수의 슬롯들 각각에 대해 VLIW 명령어가 할당되는지 여부를 판단하는 제어부; 및 상기 판단된 결과에 기초하여, 각 사이클마다 상기 복수의 슬롯들 각각에 대해 VLIW 명령어가 할당되는지 여부에 대한 정보를 포함하고 있는 연산 할당 명령어를 생성하는 명령어 생성부를 포함할 수 있다.
본 발명의 일 실시예에 따른 VLIW 명령어를 처리하기 위한 명령어를 생성하는 방법에 있어서, 상기 연산 할당 명령어는, 소정 슬롯에 상기 상기 VLIW 명령어가 할당되는 경우 제 1 값을 갖고, 소정 슬롯에 상기 VLIW 명령어가 할당되지 않는 경우 제 2 값을 갖을 수 있다.
도 1 은 본 발명의 일 실시예에 따른 VLIW 명령어를 처리하는 시스템을 설명하기 위한 개념도이다.
도 2는 본 발명의 일 실시예에 따른 VLIW 명령어를 처리하는 방법을 설명하기 위한 흐름도이다.
도 3은 본 발명의 일 실시예에 따른 VLIW 명령어를 처리하는 방법을 상세하게 설명하기 위한 흐름도이다.
도 4는 본 발명의 일 실시예에 따라 사이클 마다 VLIW 명령어를 처리하는 장치의 데이터 베이스를 갱신하는 과정을 도시한 도면이다.
도 5는 본 발명의 일 실시예에 따라 VLIW 명령어를 처리하는 연산 할당 명령어를 생성하는 방법을 설명하기 위한 흐름도이다.
도 6은 본 발명의 일 실시예에 따라 VLIW 명령어를 처리하기 위한 연산 할당 명령어를 도시한 도면이다.
도 7은 본 발명의 일 실시예에 따른, VLIW 명령어를 처리하는 장치를 도시한 블록도이다.
도 8은 본 발명의 일 실시예에 따른, 명령어 생성 장치를 도시한 블록도이다.
아래에서는 첨부한 도면을 참조하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본 발명의 실시예를 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "전기적으로 연결"되어 있는 경우도 포함한다. 또한 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
이하 첨부된 도면을 참고하여 본 발명을 상세히 설명하기로 한다.
도 1 은 본 발명의 일 실시예에 따른 VLIW 명령어를 처리하는 시스템(10)을 설명하기 위한 개념도이다.
도 1에 도시된 VLIW 명령어를 처리하는 시스템(10)에는 본 실시예와 관련된 구성요소들만이 도시되어 있다. 따라서, 도 1에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음을 본 실시예와 관련된 기술분야에서 통상의 지식을 가진 자라면 이해할 수 있다.
도 1을 참고하면, VLIW 명령어를 처리하는 시스템(10)은 VLIW 명령어를 처리하는 장치(100), 명령어 큐(11) 및 복수개의 슬롯들(12, 14, 16, 18)을 포함할 수 있다.
VLIW 명령어를 처리하는 시스템(10)은 동시에 복수의 연산을 수행할 수 있다. VLIW 명령어를 처리하는 시스템(10)에서는, 매 사이클마다 수행되는 연산의 수가 슬롯의 수보다 작을 수 있다. 예를 들어, VLIW 명령어를 처리하는 시스템(10)내의 슬롯에 모두 의미 있는 연산이 할당되지 못하는 경우, 연산의 수가 슬롯의 수보다 작아, 연산에 사용되지 않는 슬롯이 발생할 수 있다. 이러한 경우, 연산에 사용되지 않는 슬롯에 의미 없는 연산인 NOP(No Operation)이 발생할 수 있다. NOP은 VLIW 명령어에 대응하는 코드의 크기를 증가시키며, 코드 크기의 증가는 VLIW 명령어가 저장되는 캐쉬 및 메모리의 사용에 비효율성을 야기할 수 있다.
본 발명의 일 실시예에 따른 VLIW 명령어를 처리하는 장치(100)는 연산에 사용되지 않는 슬롯을 판별하기 위한 명령어를 복호화하여, 복수개의 슬롯들(12, 14, 16, 18)중에 연산에 사용되지 않는 슬롯을 결정할 수 있다. 이하, 편의상 연산에 사용되지 않는 슬롯을 판별하기 위한 명령어는 연산 할당 명령어로 설명하도록 한다.
한편, 연산 할당 명령어는 VLIW 명령어를 처리하는 시스템(10)과 연결 가능한 컴파일러(미도시)에서 생성될 수 있다. VLIW 명령어를 처리하기 위한 연산 할당 명령어를 생성하는 방법에 대해서는 도 5를 참고하여 구체적으로 후술하도록 한다.
VLIW 명령어를 처리하는 장치(100)는 컴파일러(미도시)로부터 획득한 연산 할당 명령어를 복호화하여, 복수개의 슬롯들 각각에 연산을 수행하기 위한 VLIW 명령어가 할당되는지 여부를 판단할 수 있다. 또한, VLIW 명령어를 처리하는 장치(100)는 현재 사이클 뿐만 아니라 현재 사이클 이후의 사이클에서 복수개의 슬롯들 각각에 VLIW 명령어가 할당되는지 여부도 판단할 수 있다.
VLIW 명령어를 처리하는 장치(100)에서 연산 할당 명령어를 복호화한 결과를 저장할 수 있다. 또한, VLIW 명령어를 처리하는 장치(100)는 새로운 연산 할당 명령어를 수신하여, 복호화한 결과를 데이터 베이스에 업데이트 할 수 있다. 한편, 데이터 베이스에 저장되어 있는 복수개의 슬롯들(12, 14, 16, 18)에 대한 VLIW 명령어 할당에 관한 정보는 명령어 큐(11)로 전송될 수 있다. 명령어 큐(11)는 수신한 정보를 기초로 복수개의 슬롯들(12, 14, 16, 18) 각각에 VLIW 명령어를 할당할 수 있다.
본 발명의 일 실시예에 따른 VLIW 명령어를 처리하는 시스템(10)은 VLIW 명령어에 대응되는 코드에 별도의 영역을 할당하지 않고, 별도의 연산 할당 명령어를 기초로 소정 VLIW 명령어가 의미 있는 연산을 수행하는지 여부를 판단할 수 있다.
도 2는 본 발명의 일 실시예에 따른 VLIW 명령어를 처리하는 방법을 설명하기 위한 흐름도이다.
단계 210에서, VLIW 명령어를 처리하는 장치(100)는 복수의 슬롯들(12, 14, 16, 18) 각각에 대해 VLIW 명령어가 할당되는지 여부에 대한 정보를 포함하고 있는 연산 할당 명령어를 획득할 수 있다. 여기에서 연산 할당 명령어는 연산이 수행되는 사이클마다 복수의 슬롯들(12, 14, 16, 18) 각각에 VLIW 명령어가 할당되는지 여부에 대한 정보를 포함할 수 있다. 예를 들어, VLIW 명령어가 저장되어 있는 버퍼 또는 메모리의 윈도우 사이즈가 16인 경우, 연산 할당 명령어는 최대 16 사이클에 대해 복수의 슬롯들(12, 14, 16, 18) 각각에 VLIW 명령어가 할당되는지 여부에 대한 정보를 포함할 수 있다.
또한, VLIW 명령어를 처리하는 장치(100)는 복수의 슬롯들(12, 14, 16, 18) 중에서 적어도 하나의 슬롯에 VLIW 명령어가 할당되지 않는 경우, VLIW 명령어가 할당되지 않는 첫번째 사이클에 연산 할당 명령어를 획득할 수 있다. 예를 들어, 제 1 사이클에서 복수의 슬롯들(12, 14, 16, 18) 중 제 2 슬롯(14)에 VLIW 명령어가 할당되지 않을 수 있다. 이러한 경우, VLIW 명령어를 처리하는 장치(100)는 제 2 슬롯(14)에 대한 연산 할당 명령어를 획득할 수 있다. 본 발명의 일 실시예에 따라, 연산 할당 명령어가 저장되어 있는 구성 메모리 또는 버퍼의 윈도우 크기가 16인 경우, 제 2 슬롯(14)에 대한 연산 할당 명령어에는 16 사이클 각각에 대해 제 2 슬롯에 VLIW 명령어가 할당되는지 여부에 대한 정보가 포함될 수 있다. 이에 대해서는 도 6을 참고하여, 보다 구체적으로 후술하도록 한다.
단계 220에서, VLIW 명령어를 처리하는 장치(100)는 획득한 연산 할당 명령어를 기초로 VLIW 명령어가 복수의 슬롯들 각각에 할당되는지 여부에 대한 정보를 포함하는 데이터 베이스를 갱신할 수 있다.
본 발명의 일 실시예에 따른 VLIW 명령어를 처리하는 장치(100)는 적어도 하나의 사이클에서 복수의 슬롯들(12, 14, 16, 18) 각각에 VLIW 연산이 할당되는지 여부에 대한 정보를 포함하는 데이터 베이스를 저장할 수 있다. VLIW 명령어를 처리하는 장치(100)에 저장되어 있는 데이터 베이스는 제 1 값으로 초기화 될 수 있다. 여기에서, 소정 사이클에서 소정 슬롯에 저장되어 있는 값이 제 1 값인 경우, VLIW 명령어가 소정 사이클에서 소정 슬롯에 할당된다고 판단할 수 있다. 본 발명의 일 실시예에 따른 데이터 베이스는 연산을 수행하기 전에는 제 1 값으로 초기화 되어 있다.
VLIW 명령어를 처리하는 장치(100)가 제 1 사이클에서 제 2 슬롯에 대한 연산 할당 명령어를 수신한 경우, VLIW 명령어를 처리하는 장치는 데이터 베이스 내에서 제 2 슬롯에 대한 정보를 갱신할 수 있다. 예를 들어, VLIW 명령어를 처리하는 장치(100)는 제 1 사이클부터 제 16 사이클까지 VLIW 명령어가 제 2 슬롯에 할당되는지 여부에 대한 정보를 이용하여 데이터 베이스를 갱신할 수 있다.
단계 230에서, VLIW 명령어를 처리하는 장치(100)는 갱신된 데이터 베이스에 기초하여 적어도 하나의 VLIW 명령어를 복수의 슬롯들 각각에 할당할 수 있다.
VLIW 명령어를 처리하는 장치(100)는 적어도 하나의 VLIW 명령어를 저장하는 명령어 큐(11)에 갱신된 데이터 베이스에 기초하여, VLIW 명령어와 함께 VLIW 명령어 할당 정보를 전송할 수 있다. 명령어 큐(11)는 수신한 VLIW 명령어 할당 정보를 기초로, 매 사이클 마다 VLIW 명령어를 적어도 하나의 슬롯들 각각에 할당할 수 있다.
예를 들어, 명령어 큐(11)는 VLIW 명령어를 처리하는 장치(100)로부터 제 2 슬롯에 대해 갱신된 데이터 베이스를 기초로 제 1 사이클부터 제 16 사이클까지 제 2 슬롯에 VLIW 명령어를 할당할 지 여부를 결정할 수 있다.
도 3은 본 발명의 일 실시예에 따른 VLIW 명령어를 처리하는 방법을 상세하게 설명하기 위한 흐름도이다.
단계 310에서, VLIW 명령어를 처리하는 장치(100)는 데이터 베이스의 값을 초기화할 수 있다. 데이터 베이스를 초기화 하는 값은 사용자가 임으로 설정할 수 있다.
데이터 베이스의 값이 소정 사이클에서 소정 슬롯에 대해 제 1 값인 경우, 소정 사이클에서 소정 슬롯에 VLIW 명령어가 할당된다고 판단할 수 있다. 본 발명의 일 실시예에 따라, VLIW 명령어를 처리하는 장치(100)는 데이터 베이스에 저장되어 있는 매 사이클마다의 모든 슬롯들 각각의 값을 제 1 값으로 설정할 수 있다.
단계 320에서, VLIW 명령어를 처리하는 장치(100)는 소정 슬롯에서 VLIW 명령어가 할당되지 않는 첫번째 사이클에 연산 할당 명령어를 획득할 수 있다. 연산 할당 명령어에는 소정 슬롯에 대해, 소정 슬롯에 VLIW 명령어가 할당되는지 여부에 대한 정보가 포함되어 있다. 다만, 이는 본 발명의 일 실시예일 뿐, 하나의 연산 할당 명령어에, 복수개의 슬롯들(12, 14, 16, 18) 모두에 대해 VLIW 명령어가 할당되는지 여부에 대한 정보가 포함되어 있을 수 있다.
이하에서는, 설명의 편의상, 하나의 연산 할당 명령어에는 소정 슬롯, 예를 들어, 제 1 슬롯, 에 대해 VLIW 명령어가 할당되는지 여부에 대한 정보가 포함되어 있다고 설명하도록 한다.
한편, VLIW 명령어를 처리하는 장치(100)는, 제 1 사이클에서 각각의 슬롯에 대해 연산 할당 명령어를 획득하지 않고, VLIW 명령어가 할당되지 않는 첫번째 사이클에서 연산 할당 명령어를 획득할 수 있다. 예를 들어, 제 3 슬롯의 경우, 제 1 사이클에서는 VLIW 명령어가 할당되지만, 제 2 사이클에서는 VLIW 명령어가 할당되지 않을 수 있다. 이러한 경우, VLIW 명령어를 처리하는 장치(100)는 제 3 슬롯에 대해 제 2 사이클에서, 연산 할당 명령어를 획득할 수 있다.
단계 330에서, VLIW 명령어를 처리하는 장치(100)는 획득한 연산 할당 명령어에 기초하여, 데이터 베이스를 갱신할 수 있다. 단계 330은 도 2의 단계 220과 대응될 수 있다.
단계 340에서, VLIW 명령어를 처리하는 장치(100)는 갱신된 데이터 베이스를 기초로 적어도 하나의 VLIW 명령어를 복수의 슬롯들(12, 14, 16, 18) 각각에 할당할 수 있다. 단계 340은 도 3의 단계 230과 대응될 수 있다.
단계 350에서, VLIW 명령어를 처리하는 장치(100)는 복수의 슬롯들(12, 14, 16, 18)에 VLIW 명령어를 할당한 이후, 데이터 베이스의 값을 초기화할 수 있다. 예를 들어, VLIW 명령어를 처리하는 장치(100)는 제 2 사이클에서 제 3 슬롯(16)에 대해 갱신된 데이터 베이스를 기초로 복수의 슬롯들(12, 14, 16, 18)에 VLIW 명령어를 할당한 이후, 제 2 사이클에서의 데이터 베이스의 값을 초기화할 수 있다. VLIW 명령어를 처리하는 장치(100)는 슬롯에 VLIW 명령어가 할당되는 것을 의미하는 제 1 값으로 제 2 사이클에서의 복수의 슬롯들(12, 14, 16, 18) 각각에 대한 값을 초기화할 수 있다.
이하에서는, 도 2 및 도 3을 참고하여 설명한 본 발명의 일 실시예에 따른 VLIW 명령어를 처리하는 방법을 예를 들어 보다 구체적으로 설명하도록 한다.
도 4는 본 발명의 일 실시예에 따라 사이클 마다 VLIW 명령어를 처리하는 장치(100)의 데이터 베이스를 갱신하는 과정을 도시한 도면이다.
도 4의 (a)를 참고하면, VLIW 명령어를 처리하는 장치(100)는 데이터 베이스의 모든 값을 제 1 값으로 초기화 할 수 있다. 예를 들어, 연산을 수행하기 전, VLIW 명령어를 처리하는 장치(100)는 데이터 베이스를 제 1 값인 1로 초기화 할 수 있다.
도 4의 (b)를 참고하면, 제 1 사이클에서 복수의 슬롯들(12, 14, 16, 18) 중 제 2 슬롯(14)에 VLIW 명령어가 할당되지 않을 수 있다. 이러한 경우, VLIW 명령어를 처리하는 장치(100)는 제 2 슬롯(14)에 대해 VLIW 명령어가 할당되지 않는 첫번째 사이클인 제 1 사이클에서 연산 할당 명령어를 획득할 수 있다.
본 발명의 일 실시예에 따라, 연산 할당 명령어가 저장되어 있는 구성 메모리 또는 버퍼의 윈도우 크기가 8인 경우, 제 2 슬롯(14)에 대한 연산 할당 명령어에는 8 사이클 각각에 대해 제 2 슬롯에 VLIW 명령어가 할당되는지 여부에 대한 정보가 포함될 수 있다. VLIW 명령어를 처리하는 장치(100)는 데이터 베이스에서 제 2 슬롯(14)에 대한 값을 획득한 연산 할당 명령어를 기초로 사이클 마다 갱신할 수 있다.
본 발명의 일 실시예에 따라, 소정 슬롯에 VLIW 명령어가 할당되는 경우, 제 1 값인 1로 데이터 베이스의 값을 설정할 수 있다. 또한, 소정 슬롯에 VLIW 명령어가 할당되지 않는 경우, 제 2 값인 0으로 데이터 베이스의 값을 설정할 수 있다. 도 4의 (b)를 참고하면, 제 2 슬롯(14)에 대한 값이 제 2 사이클에서는 1, 제 3 사이클에서는 0 및 제 4 사이클에서는 1의 값을 갖도록 갱신된 것을 확인할 수 있다.
여기에서, 제 2 슬롯(14)의 제 1 사이클에 관한 값은, 각각의 슬롯에 VLIW 명령어를 할당한 후에 1로 초기화될 수 있다.
도 4의 (c)를 참고하면, 제 2 사이클에서 복수의 슬롯들(12, 14, 16, 18) 중 제 3 슬롯(16) 및 제 4 슬롯(18)에 VLIW 명령어가 할당되지 않을 수 있다. 이러한 경우, VLIW 명령어를 처리하는 장치(100)는 제 3 슬롯(16) 및 제 4 슬롯(18)에 대해 VLIW 명령어가 할당되지 않는 첫번째 사이클인 제 2 사이클에서 연산 할당 명령어를 획득할 수 있다. VLIW 명령어를 처리하는 장치(100)는 제 2 사이클에서 제 3 슬롯 및 제 4 슬롯에 대한 연산 할당 명령어를 획득하여, 제 2 사이클부터 제 8 사이클까지의 제 3 슬롯 및 제 4 슬롯에 대한 데이터 베이스를 갱신할 수 있다.
도 4의 (d)는 이전 사이클에 대한 각각의 슬롯들의 데이터 베이스의 값을 1로 초기화하는 과정을 도시하고 있다. 여기서 초기화하는 값은 사용자의 설정에 따라 달라질 수 있다.
도 5는 본 발명의 일 실시예에 따라 VLIW 명령어를 처리하는 연산 할당 명령어를 생성하는 방법을 설명하기 위한 흐름도이다.
단계 510에서, VLIW 명령어를 처리하기 위한 명령어를 생성하는 장치(이하, 명령어 생성 장치)는 복수의 슬롯들(12, 14, 16, 18) 각각에 제 1 사이클에서 VLIW 명령어가 할당되는지 여부를 판단할 수 있다. 본 발명의 일 실시예에 따른, 명령어 생성 장치는 제 1 사이클에 동시에 수행되는 연산이 무엇인지 판단할 수 있다. 명령어 생성 장치는 동시에 수행되는 연산에 대한 정보와 함께, 각각의 연산이 복수의 슬롯들(12, 14, 16, 18) 중에서 수행되는 위치에 대한 정보도 포함할 수 있다. 명령어 생성 장치는 이러한 정보들에 기초하여, 복수의 슬롯들(12,14, 16, 18) 각각에 대해, VLIW 명령어가 할당되는 슬롯 및 VLIW 명령어가 할당되지 않는 슬롯을 구별할 수 있다.
단계 520에서, 명령어 생성 장치는 제 1 사이클의 다음 사이클에서 복수의 슬롯들(12, 14, 16, 18) 각각에 VLIW 명령어가 할당되는지 여부를 판단할 수 있다. 명령어 생성 장치는 제 1 사이클부터 기설정된 사이클까지 사이클마다 VLIW 명령어가 복수의 슬롯들(12, 14, 16, 18) 각각에 할당되는지 여부를 판단할 수 있다.
단계 530에서, 명령어 생성 장치는 판단된 결과에 기초하여, 각 사이클마다 복수의 슬롯들 각각에 대해 VLIW 명령어가 할당되는지 여부에 대한 정보를 포함하고 있는 연산 할당 명령어를 생성할 수 있다. 여기에서, 연산 할당 명령어에 포함된 소정 슬롯에 VLIW 명령어가 할당되었는지에 대한 정보는, 소정 슬롯에 VLIW 명령어가 할당되는 경우, 제 1 값을 갖고, 소정 슬롯에 VLIW 명령어가 할당되지 않는 경우, 제 2 값을 갖을 수 있다.
본 발명의 일 실시예에 따른 연산 할당 명령어에는 소정 슬롯에 대해, 소정 슬롯에 VLIW 명령어가 할당되는지 여부에 대한 정보가 포함되어 있다. 다만, 이는 본 발명의 일 실시예일 뿐, 하나의 연산 할당 명령어에, 복수개의 슬롯들(12, 14, 16, 18) 모두에 대해 VLIW 명령어가 할당되는지 여부에 대한 정보가 포함되어 있을 수 있다.
도 6은 본 발명의 일 실시예에 따라 VLIW 명령어를 처리하기 위한 연산 할당 명령어(600)를 도시한 도면이다.
본 발명의 일 실시예에 따른 연산 할당 명령어(600)는 연산 할당 명령어임을 나타내는 식별 코드(610) 및 소정 슬롯에 대해 VLIW 명령어가 할당되는지에 대한 정보를 포함하고 있는 연산 할당 코드(620)로 구성될 수 있다. 다만, 이는 본 발명의 일 실시예일 뿐, 본 발명이 이에 한정되는 것은 아니다.
연산 할당 명령어임을 나타내는 식별 코드(610)는 사용자의 설정에 따라 결정될 수 있다. 예를 들어, 연산 할당 명령어(600)의 크기가 16비트인 경우, 연산 할당 명령어임을 나타내는 식별 코드(610)에 4비트를 할당하고, 연산 할당 코드(620)에 12비트를 할당할 수 있다.
한편, 연산 할당 코드(620)에는 소정 슬롯에 대해 매 사이클마다 VLIW 명령어가 할당되는지 여부에 대한 정보가 포함될 수 있다. 예를 들어, 총 16사이클에 대한 연산이 수행되는 경우, 제 3 슬롯에는 5사이클에 처음으로, VLIW 명령어가 할당되지 않을 수 있다. 이러한 경우, 제 3 슬롯에 대한 연산 할당 코드에는 5사이클부터 16사이클까지 VLIW 명령어가 할당되는지 여부에 대한 정보가 연산 할당 코드(620)에 포함될 수 있다.
도 7은 본 발명의 일 실시예에 따른, VLIW 명령어를 처리하는 장치(100)를 도시한 블록도이다.
도 7에 도시된 VLIW 명령어를 처리하는 장치(100)에는 본 실시예와 관련된 구성요소들만이 도시되어 있다. 따라서, 도 7에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음을 본 실시예와 관련된 기술분야에서 통상의 지식을 가진 자라면 이해할 수 있다.
도 7을 참고하면, VLIW 명령어를 처리하는 장치(100)는 입출력부(110), 제어부(120) 및 명령어 할당부(130)를 포함할 수 있다.
입출력부(110)는 복수의 슬롯들(12, 14, 16, 18) 각각에 대해 VLIW 명령어가 할당되는지 여부에 대한 정보를 포함하고 있는 연산 할당 명령어를 획득할 수 있다. 연산 할당 명령어는 연산이 수행되는 사이클마다 복수의 슬롯들 각각에 대해 VLIW 명령어가 할당되는지 여부에 대한 정보를 포함할 수 있다.
입출력부(110)는 복수의 슬롯들(12, 14, 16, 18) 중에서 적어도 하나의 슬롯에 VLIW 명령어가 할당되지 않는 경우, VLIW 명령어가 할당되지 않는 첫번째 사이클에 연산 할당 명령어를 획득할 수 있다. 예를 들어, 제 3 슬롯의 경우, 제 1 사이클에서는 VLIW 명령어가 할당되지만, 제 2 사이클에서는 VLIW 명령어가 할당되지 않을 수 있다. 이러한 경우, 입출력부(110)는 제 3 슬롯에 대해 제 2 사이클에서, 연산 할당 명령어를 획득할 수 있다. 연산 할당 명령어는 소정 슬롯에 VLIW 명령어가 할당되는 경우, 제 1 값을 갖고, 소정 슬롯에 VLIW 명령어가 할당되지 않는 경우, 제 2 값을 갖을 수 있다.
제어부(120)는 획득한 연산 할당 명령어를 기초로 VLIW 명령어가 복수의 슬롯들(12, 14, 16, 18) 각각에 할당되는지 여부에 대한 정보를 포함하는 데이터 베이스를 갱신할 수 있다. 제어부(120)는 제 1 값으로 초기화 되어 있는 데이터 베이스를 획득한 연산 할당 명령어에 기초하여, 제 1 값을 유지하거나, 제 2 값으로 변경할 수 있다.
또한, 제어부(120)는 복수의 슬롯들(12, 14, 16, 18)에 VLIW 명령어를 할당한 이후, 데이터 베이스의 값을 초기화할 수 있다. 예를 들어, 제어부(120)는 명령어 할당부(130)가 제 2 사이클에서 제 3 슬롯(16)에 대해 갱신된 데이터 베이스를 기초로 복수의 슬롯들(12, 14, 16, 18)에 VLIW 명령어를 할당한 이후, 제 2 사이클에서의 데이터 베이스의 값을 제 1 값으로 초기화할 수 있다.
명령어 할당부(130)는 갱신된 데이터 베이스에 기초하여, 적어도 하나의 VLIW 명령어를 복수의 슬롯들 각각에 할당할 수 있다. 명령어 할당부(130)는 적어도 하나의 VLIW 명령어를 저장하는 명령어 큐(11)에 갱신된 데이터 베이스에 기초하여, VLIW 명령어와 함께 VLIW 명령어 할당 정보를 전송할 수 있다. 명령어 큐(11)는 수신한 VLIW 명령어 할당 정보를 기초로, 매 사이클 마다 VLIW 명령어를 적어도 하나의 슬롯들 각각에 할당할 수 있다.
도 8은 본 발명의 일 실시예에 따른, 명령어 생성 장치(800)를 도시한 블록도이다.
도 8에 도시된 명령어 생성 장치(800)에는 본 실시예와 관련된 구성요소들만이 도시되어 있다. 따라서, 도 8에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음을 본 실시예와 관련된 기술분야에서 통상의 지식을 가진 자라면 이해할 수 있다.
도 8을 참고하면, 명령어 생성 장치(800)는 제어부(810) 및 명령어 생성부(820)를 포함할 수 있다.
제어부(810)는 복수의 슬롯들(12, 14, 16, 18) 각각에 제 1 사이클에서 VLIW 명령어가 할당되는지 여부를 판단할 수 있다. 본 발명의 일 실시예에 따른, 제어부(810)는 제 1 사이클에 동시에 수행되는 연산이 무엇인지 판단할 수 있다. 제어부(810)는 동시에 수행되는 연산에 대한 정보와 함께, 각각의 연산이 복수의 슬롯들(12, 14, 16, 18) 중에서 수행되는 위치에 대한 정보도 포함할 수 있다. 제어부(810)는 이러한 정보들에 기초하여, 복수의 슬롯들(12,14, 16, 18) 각각에 대해, VLIW 명령어가 할당되는 슬롯 및 VLIW 명령어가 할당되지 않는 슬롯을 구별할 수 있다.
또한, 제어부(810)는 제 1 사이클의 다음 사이클에서 복수의 슬롯들(12, 14, 16, 18) 각각에 VLIW 명령어가 할당되는지 여부를 판단할 수 있다. 제어부(810)는 제 1 사이클부터 기설정된 사이클까지 사이클마다 VLIW 명령어가 복수의 슬롯들(12, 14, 16, 18) 각각에 할당되는지 여부를 판단할 수 있다.
명령어 생성부(820)는 판단된 결과에 기초하여, 각 사이클마다 복수의 슬롯들 각각에 대해 VLIW 명령어가 할당되는지 여부에 대한 정보를 포함하고 있는 연산 할당 명령어를 생성할 수 있다. 여기에서, 연산 할당 명령어에 포함된 소정 슬롯에 VLIW 명령어가 할당되었는지에 대한 정보는, 소정 슬롯에 VLIW 명령어가 할당되는 경우, 제 1 값을 갖고, 소정 슬롯에 VLIW 명령어가 할당되지 않는 경우, 제 2 값을 갖을 수 있다.
본 발명의 일 실시예에 띠른 연산 할당 명령어에는 소정 슬롯에 대해, 소정 슬롯에 VLIW 명령어가 할당되는지 여부에 대한 정보가 포함되어 있다. 다만, 이는 본 발명의 일 실시예일 뿐, 하나의 연산 할당 명령어에, 복수개의 슬롯들(12, 14, 16, 18) 모두에 대해 VLIW 명령어가 할당되는지 여부에 대한 정보가 포함되어 있을 수 있다.
본 발명에 따른 장치는 프로세서, 프로그램 데이터를 저장하고 실행하는 메모리, 디스크 드라이브와 같은 영구 저장부(permanent storage), 외부 장치와 통신하는 통신 포트, 터치 패널, 키(key), 버튼 등과 같은 사용자 인터페이스 장치 등을 포함할 수 있다.  소프트웨어 모듈 또는 알고리즘으로 구현되는 방법들은 상기 프로세서상에서 실행 가능한 컴퓨터가 읽을 수 있는 코드들 또는 프로그램 명령들로서 컴퓨터가 읽을 수 있는 기록 매체 상에 저장될 수 있다.  여기서 컴퓨터가 읽을 수 있는 기록 매체로 마그네틱 저장 매체(예컨대, ROM(read-only memory), RAM(random-access memory), 플로피 디스크, 하드 디스크 등) 및 광학적 판독 매체(예컨대, 시디롬(CD-ROM), 디브이디(DVD: Digital Versatile Disc)) 등이 있다.  컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템들에 분산되어, 분산 방식으로 컴퓨터가 판독 가능한 코드가 저장되고 실행될 수 있다.  매체는 컴퓨터에 의해 판독가능하며, 메모리에 저장되고, 프로세서에서 실행될 수 있다.
본 발명에서 인용하는 공개 문헌, 특허 출원, 특허 등을 포함하는 모든 문헌들은 각 인용 문헌이 개별적으로 및 구체적으로 병합하여 나타내는 것 또는 본 발명에서 전체적으로 병합하여 나타낸 것과 동일하게 본 발명에 병합될 수 있다.
본 발명의 이해를 위하여, 도면에 도시된 바람직한 실시 예들에서 참조 부호를 기재하였으며, 본 발명의 실시 예들을 설명하기 위하여 특정 용어들을 사용하였으나, 특정 용어에 의해 본 발명이 한정되는 것은 아니며, 본 발명은 당업자에 있어서 통상적으로 생각할 수 있는 모든 구성 요소들을 포함할 수 있다.
본 발명은 기능적인 블록 구성들 및 다양한 처리 단계들로 나타내어질 수 있다.  이러한 기능 블록들은 특정 기능들을 실행하는 다양한 개수의 하드웨어 또는/및 소프트웨어 구성들로 구현될 수 있다.  예를 들어, 본 발명은 하나 이상의 마이크로프로세서들의 제어 또는 다른 제어 장치들에 의해서 다양한 기능들을 실행할 수 있는, 메모리, 프로세싱, 로직(logic), 룩업 테이블(look-up table) 등과 같은 직접 회로 구성들을 채용할 수 있다.  본 발명에의 구성 요소들이 소프트웨어 프로그래밍 또는 소프트웨어 요소들로 실행될 수 있는 것과 유사하게, 본 발명은 데이터 구조, 프로세스들, 루틴들 또는 다른 프로그래밍 구성들의 조합으로 구현되는 다양한 알고리즘을 포함하여, C, C++, 자바(Java), 어셈블러(assembler) 등과 같은 프로그래밍 또는 스크립팅 언어로 구현될 수 있다.  기능적인 측면들은 하나 이상의 프로세서들에서 실행되는 알고리즘으로 구현될 수 있다.  또한, 본 발명은 전자적인 환경 설정, 신호 처리, 및/또는 데이터 처리 등을 위하여 종래 기술을 채용할 수 있다.  “매커니즘”, “요소”, “수단”, “구성”과 같은 용어는 넓게 사용될 수 있으며, 기계적이고 물리적인 구성들로서 한정되는 것은 아니다.  상기 용어는 프로세서 등과 연계하여 소프트웨어의 일련의 처리들(routines)의 의미를 포함할 수 있다.
본 발명에서 설명하는 특정 실행들은 일 실시 예들로서, 어떠한 방법으로도 본 발명의 범위를 한정하는 것은 아니다.  명세서의 간결함을 위하여, 종래 전자적인 구성들, 제어 시스템들, 소프트웨어, 상기 시스템들의 다른 기능적인 측면들의 기재는 생략될 수 있다.  또한, 도면에 도시된 구성 요소들 간의 선들의 연결 또는 연결 부재들은 기능적인 연결 및/또는 물리적 또는 회로적 연결들을 예시적으로 나타낸 것으로서, 실제 장치에서는 대체 가능하거나 추가의 다양한 기능적인 연결, 물리적인 연결, 또는 회로 연결들로서 나타내어질 수 있다.  또한, “필수적인”, “중요하게” 등과 같이 구체적인 언급이 없다면 본 발명의 적용을 위하여 반드시 필요한 구성 요소가 아닐 수 있다.
100: VLIW 명령어를 처리하는 장치
110: 입출력부
120: 제어부
130: 명령어 할당부
800: 명령어 생성 장치
810: 제어부
820: 명령어 생성부

Claims (17)

  1. 복수의 슬롯들 각각에 대해 VLIW 명령어가 할당되는지 여부에 대한 정보를 포함하고 있는 연산 할당 명령어를 획득하는 단계;
    상기 획득한 연산 할당 명령어를 기초로 상기 VLIW 명령어가 상기 복수의 슬롯들 각각에 할당되는지 여부에 대한 정보를 포함하는 데이터 베이스를 갱신하는 단계; 및
    상기 갱신된 데이터 베이스에 기초하여, 적어도 하나의 VLIW 명령어를 상기 복수의 슬롯들 각각에 할당하는 단계를 포함하는 VLIW 명령어를 처리하는 방법.
  2. 제 1 항에 있어서, 상기 연산 할당 명령어는,
    연산이 수행되는 사이클마다 복수의 슬롯들 각각에 대해 VLIW 명령어가 할당되는지 여부에 대한 정보를 포함하는 것을 특징으로 하는 VLIW 명령어를 처리하는 방법.
  3. 제 2 항에 있어서, 상기 연산 할당 명령어를 획득하는 단계는,
    소정 슬롯에서 VLIW 명령어가 할당되지 않는 첫 번째 사이클에 연산 명령어를 획득하는 단계를 포함하는 것을 특징으로 하는 VLIW 명령어를 처리하는 방법.
  4. 제 1 항에 있어서, 상기 연산 할당 명령어는,
    소정 슬롯에 상기 상기 VLIW 명령어가 할당되는 경우 제 1 값을 갖고, 소정 슬롯에 상기 VLIW 명령어가 할당되지 않는 경우 제 2 값을 갖는 것을 특징으로 하는 VLIW 명령어를 처리하는 방법.
  5. 제 4항에 있어서, 상기 데이터 베이스를 갱신하는 단계는,
    상기 제 1 값으로 초기화 되어 있는 상기 데이터 베이스를 상기 획득한 연산 할당 명령어에 기초하여, 상기 제 1 값을 유지하거나 상기 제 2 값으로 변경하는 단계를 포함하는 것을 특징으로 하는 VLIW 명령어를 처리하는 방법.
  6. 제 4 항에 있어서,
    상기 적어도 하나의 VLIW 명령어를 상기 복수의 슬롯들 각각에 할당한 경우, 상기 데이터 베이스를 제 1 값으로 초기화하는 단계를 더 포함하는 것을 특징으로 하는 VLIW 명령어를 처리하는 방법.
  7. 복수의 슬롯들 각각에 대해 제 1 사이클에서 VLIW 명령어가 할당되는지 여부를 판단하는 단계;
    상기 제 1 사이클의 다음 사이클에서 상기 복수의 슬롯들 각각에 대해 VLIW 명령어가 할당되는지 여부를 판단하는 단계; 및
    상기 판단된 결과에 기초하여, 각 사이클마다 상기 복수의 슬롯들 각각에 대해 VLIW 명령어가 할당되는지 여부에 대한 정보를 포함하고 있는 연산 할당 명령어를 생성하는 단계를 포함하는 명령어를 생성하는 방법.
  8. 제 7항에 있어서, 상기 연산 할당 명령어는,
    소정 슬롯에 상기 VLIW 명령어가 할당되는 경우 제 1 값을 갖고, 소정 슬롯에 상기 VLIW 명령어가 할당되지 않는 경우 제 2 값을 갖는 것을 특징으로 하는 명령어를 생성하는 방법.
  9. 복수의 슬롯들 각각에 대해 VLIW 명령어가 할당되는지 여부에 대한 정보를 포함하고 있는 연산 할당 명령어를 획득하는 입출력부;
    상기 획득한 연산 할당 명령어를 기초로 상기 VLIW 명령어가 상기 복수의 슬롯들 각각에 할당되는지 여부에 대한 정보를 포함하는 데이터 베이스를 갱신하는 제어부; 및
    상기 갱신된 데이터 베이스에 기초하여, 적어도 하나의 VLIW 명령어를 상기 복수의 슬롯들 각각에 할당하는 명령어 할당부를 포함하는 VLIW 명령어를 처리하는 장치.
  10. 제 9 항에 있어서, 상기 연산 할당 명령어는,
    연산이 수행되는 사이클마다 복수의 슬롯들 각각에 대해 VLIW 명령어가 할당되는지 여부에 대한 정보를 포함하는 것을 특징으로 하는 VLIW 명령어를 처리하는 장치.
  11. 제 10 항에 있어서, 상기 입출력부는,
    소정 슬롯에서 VLIW 명령어가 할당되지 않는 첫 번째 사이클에 연산 명령어를 획득하는 것을 특징으로 하는 VLIW 명령어를 처리하는 장치.
  12. 제 9 항에 있어서, 상기 연산 할당 명령어는,
    소정 슬롯에 상기 VLIW 명령어가 할당되는 경우 제 1 값을 갖고, 소정 슬롯에 상기 VLIW 명령어가 할당되지 않는 경우 제 2 값을 갖는 것을 특징으로 하는 VLIW 명령어를 처리하는 장치.
  13. 제 12항에 있어서, 상기 제어부는,
    상기 제 1 값으로 초기화 되어 있는 상기 데이터 베이스를 상기 획득한 연산 할당 명령어에 기초하여, 상기 제 1 값을 유지하거나 상기 제 2 값으로 변경하는 것을 특징으로 하는 VLIW 명령어를 처리하는 장치.
  14. 제 12 항에 있어서, 상기 제어부는,
    상기 적어도 하나의 VLIW 명령어를 상기 복수의 슬롯들 각각에 할당한 경우, 상기 데이터 베이스를 제 1 값으로 초기화하는 것을 특징으로 하는 VLIW 명령어를 처리하는 장치.
  15. 복수의 슬롯들 각각에 대해 제 1 사이클에서 VLIW 명령어가 할당되는지 여부를 판단하고, 상기 제 1 사이클의 다음 사이클에서 상기 복수의 슬롯들 각각에 대해 VLIW 명령어가 할당되는지 여부를 판단하는 제어부; 및
    상기 판단된 결과에 기초하여, 각 사이클마다 상기 복수의 슬롯들 각각에 대해 VLIW 명령어가 할당되는지 여부에 대한 정보를 포함하고 있는 연산 할당 명령어를 생성하는 명령어 생성부를 포함하는 명령어를 생성하는 장치.
  16. 제 15항에 있어서, 상기 연산 할당 명령어는,
    소정 슬롯에 상기 상기 VLIW 명령어가 할당되는 경우 제 1 값을 갖고, 소정 슬롯에 상기 VLIW 명령어가 할당되지 않는 경우 제 2 값을 갖는 것을 특징으로 하는 명령어를 생성하는 장치.
  17. 제 1항 내지 제 6항 중 어느 하나의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체..
KR1020140029203A 2014-03-12 2014-03-12 Vliw 명령어를 처리하는 방법 및 장치와 vliw 명령어를 처리하기 위한 명령어를 생성하는 방법 및 장치 KR102210997B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020140029203A KR102210997B1 (ko) 2014-03-12 2014-03-12 Vliw 명령어를 처리하는 방법 및 장치와 vliw 명령어를 처리하기 위한 명령어를 생성하는 방법 및 장치
PCT/KR2015/002354 WO2015137722A1 (ko) 2014-03-12 2015-03-11 Vliw 명령어를 처리하는 방법 및 장치와 vliw 명령어를 처리하기 위한 명령어를 생성하는 방법 및 장치
US15/125,023 US10599439B2 (en) 2014-03-12 2015-03-11 Method and device for allocating a VLIW instruction based on slot information stored in a database by a calculation allocation instruction

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140029203A KR102210997B1 (ko) 2014-03-12 2014-03-12 Vliw 명령어를 처리하는 방법 및 장치와 vliw 명령어를 처리하기 위한 명령어를 생성하는 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20150106752A true KR20150106752A (ko) 2015-09-22
KR102210997B1 KR102210997B1 (ko) 2021-02-02

Family

ID=54072086

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140029203A KR102210997B1 (ko) 2014-03-12 2014-03-12 Vliw 명령어를 처리하는 방법 및 장치와 vliw 명령어를 처리하기 위한 명령어를 생성하는 방법 및 장치

Country Status (3)

Country Link
US (1) US10599439B2 (ko)
KR (1) KR102210997B1 (ko)
WO (1) WO2015137722A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102593320B1 (ko) * 2016-09-26 2023-10-25 삼성전자주식회사 전자 장치, 프로세서 및 그 제어 방법
CN111949317B (zh) * 2019-05-17 2023-04-07 上海寒武纪信息科技有限公司 指令处理方法、装置及相关产品

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08161169A (ja) * 1994-12-09 1996-06-21 Toshiba Corp Vliw方式の計算機システム及びvliwの解釈・実行方法

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5179680A (en) * 1987-04-20 1993-01-12 Digital Equipment Corporation Instruction storage and cache miss recovery in a high speed multiprocessing parallel processing apparatus
JP3598589B2 (ja) * 1995-06-28 2004-12-08 株式会社日立製作所 プロセッサ
JPH09265397A (ja) * 1996-03-29 1997-10-07 Hitachi Ltd Vliw命令用プロセッサ
US5870576A (en) * 1996-12-16 1999-02-09 Hewlett-Packard Company Method and apparatus for storing and expanding variable-length program instructions upon detection of a miss condition within an instruction cache containing pointers to compressed instructions for wide instruction word processor architectures
US6418527B1 (en) * 1998-10-13 2002-07-09 Motorola, Inc. Data processor instruction system for grouping instructions with or without a common prefix and data processing system that uses two or more instruction grouping methods
JP3830683B2 (ja) 1998-12-28 2006-10-04 富士通株式会社 Vliwプロセッサ
US6799266B1 (en) 1999-12-30 2004-09-28 Texas Instruments Incorporated Methods and apparatus for reducing the size of code with an exposed pipeline by encoding NOP operations as instruction operands
JP2002318687A (ja) 2001-04-18 2002-10-31 Fujitsu Ltd 情報処理装置及び計算機システム
CN1816799A (zh) * 2003-04-16 2006-08-09 皇家飞利浦电子股份有限公司 在时间-固定处理器中对条件操作的支持
US7111154B2 (en) * 2003-06-25 2006-09-19 Intel Corporation Method and apparatus for NOP folding
US7590824B2 (en) * 2005-03-29 2009-09-15 Qualcomm Incorporated Mixed superscalar and VLIW instruction issuing and processing method and system
KR100875836B1 (ko) * 2007-03-23 2008-12-24 삼성전자주식회사 병렬 처리 vliw 컴퓨터를 위한 인스트럭션 명령어 압축장치 및 그 방법
KR100957060B1 (ko) * 2007-12-12 2010-05-13 엠텍비젼 주식회사 명령어 병렬 스케줄러, 방법 및 그 기록매체
KR101603751B1 (ko) * 2010-02-18 2016-03-16 삼성전자주식회사 명령어 병렬 처리 컴퓨터를 위한 명령어 압축 장치 및 방법
US10120692B2 (en) * 2011-07-28 2018-11-06 Qualcomm Incorporated Methods and apparatus for storage and translation of an entropy encoded instruction sequence to executable form
KR102056730B1 (ko) * 2013-04-22 2019-12-17 삼성전자주식회사 Vliw 프로세서를 위한 명령어 압축 장치 및 방법과, 명령어 인출 장치 및 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08161169A (ja) * 1994-12-09 1996-06-21 Toshiba Corp Vliw方式の計算機システム及びvliwの解釈・実行方法

Also Published As

Publication number Publication date
WO2015137722A1 (ko) 2015-09-17
US20170024216A1 (en) 2017-01-26
KR102210997B1 (ko) 2021-02-02
US10599439B2 (en) 2020-03-24

Similar Documents

Publication Publication Date Title
CN108369663B (zh) 确定神经网络的执行顺序
JP2017504243A5 (ko)
KR102121866B1 (ko) 와이드 데이터 엘리먼트들에 대한 레지스터 쌍을 사용하는 짝수-엘리먼트 및 홀수-엘리먼트 연산들을 가지는 혼합-폭 simd 연산들
CN116320469B (zh) 一种虚拟化视频编解码系统及方法、电子设备和存储介质
Chen et al. Affinity propagation for the Context quantization
KR20150106752A (ko) Vliw 명령어를 처리하는 방법 및 장치와 vliw 명령어를 처리하기 위한 명령어를 생성하는 방법 및 장치
KR20160032936A (ko) 렌더링 데이터의 압축을 해제하는 장치, 방법 및 기록매체
CN109213591B (zh) 协程运行栈的分配方法和装置
TWI601063B (zh) 使用亂數產生器的電腦系統與資料處理方法
TW201816610A (zh) 熵編碼之系統層級測試
KR20180067956A (ko) 데이터 압축 장치 및 방법
KR102179385B1 (ko) 명령어를 실행하는 방법 및 프로세서, 명령어를 부호화하는 방법 및 장치 및 기록매체
KR20180057183A (ko) 임의의 ip 생성 방법 및 그 장치
JP7107671B2 (ja) リソース割当装置
US9448975B2 (en) Character data processing method, information processing method, and information processing apparatus
US8645758B2 (en) Determining page faulting behavior of a memory operation
KR102251241B1 (ko) 재구성 가능 프로세서의 레지스터를 제어하는 방법 및 장치와 재구성 가능 프로세서의 레지스터를 제어하는 명령어를 생성하는 방법 및 장치
JP4836915B2 (ja) アドレス処理
KR101981628B1 (ko) 버스 통신 기반의 프레임 스케줄링 방법 및 그를 위한 장치
CN108897677B (zh) 日志构建方法和系统
JPWO2015132942A1 (ja) 計算機
US11620132B2 (en) Reusing an operand received from a first-in-first-out (FIFO) buffer according to an operand specifier value specified in a predefined field of an instruction
KR20150062650A (ko) 재구성 가능 프로세서 제어 방법 및 제어 장치
US11062425B2 (en) Arithmetic processor and method for operating arithmetic processor
US20170192759A1 (en) Method and system for generation of machine-executable code on the basis of at least dual-core predictive latency

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant