KR20010043891A - 복수의 회로 블럭에 명령을 분배하기 위한 방법 및 장치 - Google Patents

복수의 회로 블럭에 명령을 분배하기 위한 방법 및 장치 Download PDF

Info

Publication number
KR20010043891A
KR20010043891A KR1020007013389A KR20007013389A KR20010043891A KR 20010043891 A KR20010043891 A KR 20010043891A KR 1020007013389 A KR1020007013389 A KR 1020007013389A KR 20007013389 A KR20007013389 A KR 20007013389A KR 20010043891 A KR20010043891 A KR 20010043891A
Authority
KR
South Korea
Prior art keywords
instructions
instruction
memory
word
command
Prior art date
Application number
KR1020007013389A
Other languages
English (en)
Other versions
KR100612193B1 (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 텔레호낙티에볼라게트 엘엠 에릭슨(피유비엘)
Publication of KR20010043891A publication Critical patent/KR20010043891A/ko
Application granted granted Critical
Publication of KR100612193B1 publication Critical patent/KR100612193B1/ko

Links

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
    • 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/3842Speculative instruction execution
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

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)
  • Advance Control (AREA)
  • Read Only Memory (AREA)

Abstract

명령 메모리는 명령들을 메모리 워드들에 저장한다. 각 명령은 레이블 필드 및 작용 필드를 포함한다. 명령 메모리에 저장된 정보량을 감소하기 위해 명령들이 통합된다. 제어 유닛은 명령들을 해석하고, 통합에 의해 제거되었던 순위를 복원한다. 제어 유닛은 레이블 필드의 정보에 기초하여 작용 필드들을 제어 워드 내의 명령들로서 배열한다. 명령 메모리에 명령들이 압축될 때, 병렬로 수행되지 않는 명령들은 동일 메모리 워드에 저장될 수 있다. 병렬로 수행되는 명령들은 서로 다른 메모리 워드들에 저장될 수 있다. 제어 워드 내에서 명령들의 순위는, 그 명령이 선행 명령과 함께 병렬로 수행되는지 여부와 같은 레이블 필드 내의 정보에 의해 결정된다. 시감성(time-sensitive) 제어 워드들 또는 점프 명령들의 타겟인 제어 워드들을 형성하기 위해 디코드되는 명령 그룹들은 메모리 워드 경계에 의해 정렬되어, 제어 워드를 형성하는 명령들이 단일 클럭 사이클 동안에 판독될 수 있다. 명령 그룹은 이전 메모리 워드에 특별 코드나 또는 비정상 명령을 삽입함으로써 메모리 워드 경계에 의해 정렬될 수 있다. 명령 메모리의 사이즈를 더욱 감소시키도록 명령들이 명령 그룹 내에 위치될 수 있다. 명령 그룹에서 조건부 명령이 최초의 명령이면, 그 조건은 그룹내 모든 명령들에 적용된다. 명령 시퀀스에서 조건부 명령이 최초의 명령이 아니면, 그 조건은 바로 직전의 명령에만 적용된다.

Description

복수의 회로 블럭에 명령을 분배하기 위한 방법 및 장치{METHOD AND APPARATUS FOR DISTRIBUTING COMMANDS TO A PLURALITY OF CIRCUIT BLOCKS}
반도체 기술의 진보에 따라서, 복잡한 회로 블럭들을 단일 칩, 칩 세트 또는 칩 보드 상에 집적화하는 것이 가능하다. 단일 칩은 I/O 셀, 데이터 경로 연산기, 메모리 소자, 및 제어 유닛 등을 구비할 수 있다. 서로 다른 회로 블럭들은 서로 다른 기능(또는 연산)들을 수행한다. 적절한 회로 블럭이 적절한 시간에 적절한 연산을 수행하는 것을 보장하는 것이 제어 구조의 역할이다.
회로 블럭의 일 예로는 가산기가 있다. 가산기는 카운팅, 필터링, 및 곱셈 등을 위해 사용된다. 입력 및 출력이 동일 시간에 도달하는 것을 보장하기 위해 가산기의 입력 및 출력에 레지스터가 자주 사용된다. 회로 블럭의 다른 예로는 곱셈기가 있다. 곱셈기는 상관, 컨벌루션, 필터링, 및 주파수 분석을 위한 디지털 신호 처리 연산에 사용된다.
회로 블럭의 다른 예에는 패리티 발생기, 비교기, 1/0 검출기, 부울 연산기, 산술 논리 유닛(이하, 'ALU'라 함), 및 시프터가 포함된다. 패리티 발생기는 입력 워드 내의 1의 갯수가 홀수인지 또는 짝수인지 여부를 판정하기 위해 사용된다. 비교기는 2개의 이진수들의 크기를 비교하기 위해 사용된다. 1/0 검출기는 숫자가 모두 1인지 또는 0인지 여부를 판정하기 위해 사용된다. 이진 카운터는 이진수들의 시퀀스를 통해 순환하도록 사용된다. 시프터는 산술 시프팅, 논리 시프팅 및 순환 함수에 대해 중요하다.
메모리 소자는 무엇보다도 회로 블럭으로의 입력 및 회로 블럭으로부터의 출력을 위한 명령을 저장하기 위해 사용된다. 메모리 소자는 일반적으로 3개의 카테고리로 분류된다: 랜덤 액세스 메모리, 시리얼 액세스 메모리, 및 콘텐트 액세스 메모리. 랜덤 액세스 메모리는 일반적으로 데이터의 물리적 위치와는 독립적인 액세스 시간을 갖는 메모리로서 정의된다. 랜덤 액세스 메모리의 일반적인 분류에는, 2개의 서브-카테고리가 있다: 리드 온리 메모리(이하, 'ROM'이라 함) 및 리드/라이트(read/write) 메모리. RAM이라는 용어는 일반적으로 리드/라이트 메모리를 칭하기 위해 사용된다. RAM은 회로 블럭의 출력들을 저장하기 위해 사용된다.
"데이터 처리"라는 문구는 특정 기능을 달성하기 위해 회로 블럭들간 데이터를 이동하는 것을 말한다. 이러한 데이터의 이동은 각 클럭 사이클의 시작시에 새로운 명령들을 발행하는 제어 구조에 의해 조정된다. 몇몇 시스템은 한 번에 명령어들이 처리되는 SISD(Single Instruction stream Single Data stream) 제어 유닛을 사용한다. 하나의 명령어만이 존재하기 때문에, SISD 시스템의 효율은 일반적으로 명령어 워드의 길이를 증가시키거나 또는 클럭 주파수를 증가시킴으로써 향상된다.
슈퍼스칼라 시스템에서, 제어 유닛은 2개 이상의 명령어들을 동시에(병렬로) 실행함으로써 동일한 클럭 사이클 동안 2개 이상의 회로 블럭들을 조작할 수 있다. N개의 회로 블럭들이 존재한다면, 슈퍼스칼라 시스템이 이론적으로는 동일한 클럭 사이클 동안 N개 회로 블럭을 조작할 수 있다. 여러 명령어들이 존재하기 때문에, 슈퍼스칼라 제어 유닛이 일반적으로 SISD 제어 유닛보다 효율적이다.
"파이프라이닝(pipelining)"이라는 용어는 다양한 회로 블럭들을 조작하도록 미리 이들을 정리하기 위해 온-칩 메모리로부터 명령어들을 복원(페치(fetch))하여 이들 명령어를 디코드하는 것을 말한다. 제어 유닛은 파이프라인 스테이지들로서의 명령어 경로에 디코드된 명령어들을 저장할 수 있다. 명령어 경로는 명령어 페치, 명령어 디코드, 레지스터 판독, 실행, 및/또는 기록과 같이 서로 다른 스테이지들로 분할될 수 있다. 제어 유닛은 패스-어라운드(pass-around)를 허용하기 위해 비교를 수행하여, 적절한 시퀀스에서 연산들이 발생하는 것을 보장할 수 있다.
대부분의 시스템은 통상 VLIW(Very Long Instruction Word) 제어기로 불리우는 것을 사용한다. VLIW 제어기에서는, 각각의 워드가 특정 클럭 사이클에 대응하는 온-칩 메모리에 개별 워드들로서 저장된다. 각각의 VLIW는 현재 VLIW에 대하여 비활성화된 회로 블럭들 조차도 각각의 회로 블럭에 대해 적어도 하나의 비트 필드를 갖는다. VLIW 제어기에서의 문제점 중 하나는, 회로 블럭들의 수가 증가함에 따라서 제어 프로그램의 길이 및 사이즈도 증가한다는 것이다. 특히 복잡한 시스템에서는, 제어 프로그램을 저장할 만한 칩 스페이스가 없다. 명령어들을 저장하기 위해 칩의 불균형하게 큰 부분을 허용하지 않고서는 회로 블럭들 각각을 운영하는 것이 불가능하다.
대부분의 시스템에서, 소 집합의 회로 블럭들만이 각 클럭 사이클동안 활성화된다. 결과적으로, 각 VLIW의 작은 부분만이 실제로 사용된다. 달리 말하면, 제어 워드가 필요 이상으로 길어 값비싼 칩 영역이 낭비된다. 몇몇 애플리케이션에서는, 단일 칩상에 명령 메모리를 채우는 것이 더 이상 불가능하다. 값비싼 칩 영역을 낭비하지 않고도 여러 회로 블럭들을 관리할 수 있고 명령들을 병렬로 발행할 수 있는 제어 구조 및 명령 메모리가 필요하다.
본 발명은 데이터 처리에 관한 것으로, 특히 온-칩 메모리에 저장된 명령들에 관한 것이다.
도 1은 제어 유닛을 구비한 시스템의 블럭도.
도 2는 명령 메모리 내에서 명령들을 메모리 워드로서 저장하는 것을 나타내는 개략 설명도.
도 3은 제어 유닛에 의한 명령들의 시퀀싱을 나타내는 개략 설명도.
도 4는 다음 제어 워드를 형성하는 한 그룹의 명령들이 메모리내의 다른 위치에서 시작한다는 것과 그 그룹의 명령들이 메모리 워드 경계에 의해 정렬되지 않는다는 것을 명령이 나타낼 때, 제어 유닛에 의한 명령들의 시퀀싱을 나타내는 개략 설명도.
도 5는 메모리 워드 경계에 의해 선택적으로 정렬되고 명령 메모리 내에서 제어 워드를 형성하는 한 그룹의 명령들을 저장하는 것을 나타내는 개략 설명도.
도 6은 다음 제어 워드를 형성하는 한 그룹의 명령들이 메모리내의 다른 위치에서 시작한다는 것과 그 그룹의 명령들이 메모리 워드 경계에 의해 선택적으로 정렬되는 것을 명령이 나타낼 때, 제어 유닛에 의한 명령들의 시퀀싱을 나타내는 개략 설명도.
종래의 제어 유닛들 및 명령 메모리들의 이들 및 다른 단점, 문제점 및 제한은 명령 메모리에 저장된 정보량을 감소시키기 위해 명령들을 통합시킴으로써 극복된다. 제어 유닛은 명령들을 해석하고, 통합에 의해 제거된 순위를 복원한다.
본 발명의 일면에 따르면, 명령들은 명령 메모리 내의 명령 워드들에 연속적으로 저장된다. 각 명령은 레이블 필드와 작용 필드를 갖는다. 제어 유닛은 메모리 워드로서 집합적으로 참조되는 한 그룹의 명령들을 수신한다. 제어 유닛은 명령들을 디코드하고 레이블 필드의 정보에 기초하여 작용 필드들을 제어 워드 내의 명령들로서 배열한다. 제어 유닛은 레지스터에 제어 워드들을 저장하고, 이 제어 워드들을 레지스터로부터 복수의 회로 블럭들로 분배한다.
명령들이 명령 메모리에서 압축될 때, 병렬로 수행되지 않는 명령들은 동일 메모리 워드에 저장될 수 없다. 병렬로 수행되는 명령들은 서로 다른 메모리 워드들에 저장될 수 있다. 제어 워드 내의 명령들의 순위는 그 명령이 선행 명령과 병렬로 수행되는지 여부와 같은 레이블 필드 내의 정보에 의해 판정된다.
본 발명의 다른 면에 따르면, 시감성 제어 워드들을 형성하기 위해 디코드되는 명령 그룹들 또는 점프 명령들의 타겟인 제어 워드들이 메모리 워드 경계에 의해 정렬된다. 한 그룹의 명령들이 하나의 메모리 워드에서 시작하여 다음 메모리 워드에서 종료하면, 제어 유닛은 양쪽 메모리 워드 모두를 판독해야 한다. 이러한 그룹의 명령들이 점프 명령의 타겟이면, 이 그룹의 명령들이 완전히 사용될 수 있기 전에 2 클럭 사이클이 요구된다. 시간이 중요한 애플리케이션들에서, 이러한 그룹이 사용가능하게 되기 위해 2 클럭 사이클을 기다리는 것은 바람직하지 못하다. 그러나, 이 그룹의 명령들이 메모리 워드 경계에 의해 정렬되면, 제어 유닛은 하나의 메모리 워드만을 판독할 수 있고 제어 워드가 곧 사용가능하게 된다. 특정 실시예에서는, 이전 메모리에 특별 코드나 또는 비정상 코드가 삽입되어, 이러한 그룹의 명령들이 다음 메모리 워드의 초기에서 시작한다.
본 발명의 또 다른 면에 따르면, 명령들은 명령 메모리의 사이즈를 더욱 감소시키도록 한 그룹의 명령들 내에 위치된다. 예를 들어, 조건부 명령은 조건을 평가하는 특정 회로 블럭을 요구하는 명령이다. 기타 명령들은 조건이 성립되면 실행된다. 본 발명의 일 실시예에서는, 조건부 명령이 한 그룹의 명령들에서 최초의 명령이면, 그 조건은 그 그룹내의 모든 명령들에 적용된다. 조건부 명령이 그 그룹에서 최초의 명령이 아니면, 그 조건은 바로 직전의 명령에만 적용된다. 달리 말하면, 그룹에서 명령들의 위치는 부가적인 정보를 알려준다.
본 발명의 이점은 명령 메모리가 비활성화 회로 블럭들에 대해 명령들을 저장하기 위해 값비싼 칩 영역을 낭비하지 않는다는 것이다. 명령 메모리의 사이즈는 칩 영역의 최소량을 사용하도록 최소화된다.
본 발명의 다른 이점은 특정 시스템에서의 병행량(독립적인 경로들이나 또는 파이프라인들의 갯수)과 무관하게 동일 제어기 및 동일 세트의 명령들이 사용될 수 있다는 점이다.
본 발명의 또 다른 중요한 이점은 여러개의 동일 회로 블럭들을 재사용하는 조금씩 다른 칩들에 의해 동일 제어 필드들이 사용될 수 있다는 점이다. 회로 블럭들의 재사용은 새로운 시스템들을 생성하는 것과 관련된 시간 및 비용을 감소시키는데 있어서 중요하다.
본 발명의 또 다른 중요한 이점은 시간이 중요한 애플리케이션에서 명령 그룹들이 단일 클럭 사이클 동안에 판독될 수 있도록 메모리 워드 경계들에 의해 정렬될 수 있다는 점이다.
이상 설명한 본 발명의 목적, 특징 및 이점들과 기타 본 발명의 목적, 특징 및 이점들은 도면을 참조하여 이하 상세한 설명을 보면 보다 용이하게 이해될 것이다.
이하 설명에서는, 본 발명의 철저한 이해를 제공하기 위해 특정 사양들이 설정된다. 그러나, 당업자들에게는 이들 특정 사양을 벗어나는 다른 실시예들에서도 본 발명이 실시될 수 있다는 것이 명백할 것이다. 그렇지 않은 경우에는, 불필요한 상세로 인하여 본 발명의 설명을 불명확하게 하지 않도록 공지된 방법들 및 회로들의 상세한 설명이 생략된다.
도 1은 제어 유닛(20)을 구비한 시스템의 블럭도이다. 제어 유닛(20)은 디코더(22) 및 시퀀서(24)를 구비한다. 명령 메모리(10)는 명령들을 비트 필드들로서 저장하도록 사용되는 온-칩 메모리이다. 몇몇 명령들은, 예를 들어 점프 또는 호출 명령과 같은 제어-전송 명령들이고, 몇몇 명령들은, 예를 들어 산술 또는 논리 연산과 같은 ALU 클래스 명령들이다. 각 명령은 적어도 2개의 부분을 갖는다: 레이블 필드 및 작용 필드.
제어 유닛(20)은 명령들을 페치(42)하기 위해 명령 메모리(10)로 어드레스(41)을 전송한다. 제어 유닛(20)은 메모리 워드로서 집합적으로 참조되는 일 세트의 명령들을 명령 메모리(10)로부터 수신한다. 제어 유닛(20)은 디코더(22)를 사용하여 메모리 워드를 디코드한다. 시퀀서(24)는 레이블 필드의 정보에 기초하여 작용 필드를 제어 워드 내의 명령들로서 정렬한다. 시퀀서(24)는 각 제어 워드를 파이프라인 레지스터(도시되지 않음)에 저장한다. 명령들의 순위는 명령(42), 나머지 칩(60)으로부터의 조건(61), 및 회로 블럭(51-59)으로부터의 조건에 의존한다.
제어 워드는 병렬로(또는 단일 클럭 사이클 동안에) 실행되는 일 세트의 명령들이다. 제어 워드들을 형성하기 위해 디코드되는 명령들은 명령 메모리(10)에 메모리 워드들의 일부로서 연속적으로 저장된다. 명령 메모리(10)는 불필요한 비트 필드들을 제거하고 동일 메모리 워드에서 병렬로 수행되거나 또는 그렇지 않은 명령들을 통합함으로써 사이즈가 감소된다. 제어 워드를 형성하기 위해 디코드되는 한 그룹의 명령들은 하나의 메모리 워드에서 시작하여 다음 메모리 워드에서 종료될 수 있다. 이 명령들은 명령 메모리(10)에서 압축되기 때문에, 명령의 식별이 더 이상 메모리 워드 내의 그 비트 위치에 의해 제공되지 않는다. 대신에, 시퀀서(24)는 디코드된 명령들을 미리 정리하고 통합에 의해서 제거되었던 순위를 복원하기 위해 각 명령의 레이블 필드 내의 정보를 사용한다.
제어 유닛(20)이 명령 메모리(10)로부터 일 세트의 명령을 수신할 때, 제어 유닛(20)은 대응 작용 필드의 길이를 식별하기 위해 레이블 필드를 사용할 수 있다. 예를 들어, 명령이 선행 명령과 병렬로 수행되는지 여부를 각 레이블 필드가 나타내면, 제어 유닛(20)은 제어 워드를 형성하기 위해 디코드되는 한 그룹의 명령들의 시작과 종료를 식별하기 위해 이 정보를 사용할 수 있다. 제어 유닛(20)은 대응 작용 필드를 수행할 회로 블럭을 판정하기 위해 레이블 필드, 작용 필드, 또는 이 그룹의 명령들 내의 명령의 위치를 사용할 수 있다. 한 그룹의 명령이 특정 회로 블럭으로 향하는 명령을 갖지 않는다면, 제어 유닛(20)은 그 회로 블럭이 임시로 비활성화라는 것을 인식한다. 회로 블럭이 비활성화이면, 이것으로 향하는 명령을 갖는 제어 워드가 존재할 때까지 비활성화를 유지한다.
제어 유닛(20)은 클럭(30)으로부터의 각 클럭 사이클에 대해 제어 버스(43) 상에 제어 워드를 발행한다. 제어 유닛(20)은 클럭(30)으로부터의 각 클럭에 대해 사용가능한 전체 제어 워드를 갖기에 충분한 속도로 메모리(10)로부터 명령들(42)을 프리-페치(pre-fetch)한다. 제어 워드는 회로 블럭들(51, 52, 53 및 59)에 전달된다. 제어 워드는 회로 블럭(51, 52, 53 및 59)이 시스템 데이터 버스(44) 상에서 데이터를 송수신하도록 지시할 수 있다. 제어 워드는 회로 블럭(51, 52, 53 및 59)이 데이터 버스(44) 상에 수신된 데이터를 처리 또는 조작하도록 지시할 수 있다. 제어 유닛(20)은 여러개의 시퀀서들 및/또는 여러개의 파이프라인 레지스터들을 구비할 수 있다. 시스템은 여러개의 제어 버스들 및/또는 여러개의 데이터 버스들을 구비할 수 있다.
제어 유닛(20)은 명령들을 갖는 제어 워드들을 활성 회로 블럭들에 발행한다. 제어 워드를 형성하는 한 그룹의 명령들이 특정 회로 블럭으로 향하는 명령을 갖지 않으면, 제어 유닛(20)은 이 회로 블럭이 임시적으로 비활성화라는 것을 인식한다. 회로 블럭이 비활성화이면, 회로 블럭은 이것으로 향하는 명령을 갖는 제어 워드가 존재할 때까지 비활성화를 유지한다. 예를 들어, 제어 유닛(20)이 제어 워드를 형성하는 한 그룹의 명령들을 디코드하고, 이 그룹의 명령들이 회로 블럭(51 및 52)에 대한 명령들은 포함하지만 회로 블럭(53 및 59)으로 향하는 명령들은 포함하지 않는다면, 제어 유닛(20)은 회로 블럭(51 및 52)으로 향하는 명령들을 갖는 제어 워드를 발행한다.
도 2는 명령 메모리 내의 명령들을 메모리 워드로서 저장하는 것을 개략적으로 나타낸다. 도 2에 도시된 바와 같이, 명령 메모리(10)는 메모리 워드들(11, 12, 13, 14, 15,..., 및 19)을 갖는다. 명령들(71, 72, ..., 및 85)은 디코드되고 제어 워드들을 형성하기 위해 배열된다. 몇몇 애플리케이션들에서, 제어 워드들은 데이터 버스 및 제어 버스의 갯수와 같은 사용가능한 하드웨어 리소스들에 의해 제한되는 최대 길이를 갖는다. 제어 워드의 최대 길이는 또한 단일 클럭 사이클 동안 명령 메모리로부터 제어 유닛이 판독하는 비트들의 갯수에 의해서도 제한된다.
일 실시예에서, 제어 워드들은 8 비트 또는 16 비트와 같은 기본 길이들의 배수들이다. 예를 들어, 도 2에서는, 단일 클럭 사이클 동안 판독된 데이터 비트의 최대 개수가 64 비트이다. 메모리 워드 길이는 64 비트이고 명령들은 16 비트 또는 32 비트 길이이다. 제어 워드를 형성하기 위해 디코드되는 한 그룹의 명령들은 16, 32, 48, 또는 64 비트 길이, 즉 1개, 2개, 3개, 또는 4개의 명령들 길이일 수 있다. 제어 워드가 하나의 메모리 워드에서 시작하여 다음 메모리 워드에서 종료할 수 있다. 예를 들어, 명령(71)이 제1 제어 워드를 형성하면, 명령들(72, 73, 74, 및 75)은 다음 제어 워드를 형성할 수 있다.
메모리 워드(11)는 명령들(71, 72, 73, 및 74)에 의해 형성된다. 명령들(71, 72, 73, 및 74)은 제어 워드를 형성할 수 있다. 명령들(71, 72, 73, 및 74)이 제어 워드를 형성하기 위해 디코드되면, 동일 클럭 사이클 동안에(병렬로) 명령들(71, 72, 73, 및 74)이 수행될 수 있다. 각 명령은 적어도 2개의 부분들을 갖는다: 레이블 필드 및 작용 필드. 일 실시예에서, 레이블 필드는 4 내지 7 비트 길이이다. 레이블 필드는 작용 필드가 향하는 회로 블럭을 식별할 수 있다. 예를 들어, 명령(71)이 회로 블럭(51)을 향하면, 명령(71)의 레이블 필드는 회로 블럭(51)을, 작용을 수행할 회로 블럭으로서 식별한다. 메모리 워드(11)가 특정 회로 블럭으로 향하는 명령을 갖지 않으면, 제어 유닛(20)은 이 회로 블럭이 임시적으로 비활성화라는 것을 인식한다. 몇몇 명령들은 제어 유닛(20)으로 향한다. 명령이 제어 유닛(20)으로 향하면, 제어 버스(43) 상에 명령을 발행할 필요가 없다.
제어 워드의 길이는 레이블 필드에 존재하는 정보에 의해 판정된다. 레이블 필드는 보다 긴 제어 워드 내의 명령의 비트 위치에 의해 통상적으로 제공되었던 정보를 제공할 수 있다. 작용 필드가 향하는 회로 블럭을 식별하는 것 이외에도, 레이블 필드는 명령이 바로 직전 명령과 병렬로 수행될 것인지 여부를 나타낼 수도 있다. 두 개의 명령이 병렬로 수행되면, 그것들은 동일한 제어 워드의 부분을 형성한다. 명령들의 디코딩 및 시퀀싱은 제어 유닛(20)에 의해 수행된다. 예를 들어, 명령들(71, 72, 73, 74)이 제어 워드를 형성하면, 명령들(72, 73, 74)의 레이블 필드들은 명령들(72, 73, 74)이 바로 직전 명령과 병렬로 수행될 것이라는 것을 나타낸다. 그러나, 명령(74)이 동일한 제어 워드의 일부가 아니면, 명령(74)의 레이블 필드는 명령(74)이 바로 직전 명령(73)과 병렬로 수행되지 않을 것이라고 나타낸다.
제어 워드는 임의의 여러가지 서로 다른 타입들의 명령들을 가질 수 있다. 명령은 일반적으로 4개의 기본 작용 타입들 중 하나이다. 이동 명령들은 회로 블럭들간 데이터의 이동을 제어한다. 연산 명령들은 회로 블럭들에 의해 수행되는 연산들을 제어한다. 프로그램 플로우 명령들은 명령들의 시퀀싱 을 제어한다. 조건부 명령들은 조건을 평가하기 위해 사용된다. 명령은 또한 여러가지 다른 타입들의 조합일 수도 있다.
본 발명의 일 실시예에서, 명령들은 제어 워드를 형성하기 위해 디코드되는 한 그룹의 명령들에 위치되어, 부가적인 정보를 알리고 명령 메모리의 사이즈를 더욱 감소시킨다. 예를 들어, 조건부 명령으로부터 초래되는 작용은 명령들의 그룹에서 그 위치에 의존할 수 있다. 예를 들어, 조건부 명령이 그룹에서 최초의 명령이면, 그 조건은 그룹 내의 모든 명령들에 적용된다. 즉, 조건이 성립되면, 후속하는 모든 명령들이 수행된다. 조건이 성립되지 않으면, 어느 명령도 수행되지 않는다. 이와는 반대로, 조건부 명령이 명령들의 그룹에서 최초의 명령이 아니면, 그 조건은 바로 직전의 명령에만 적용된다.
도 3은 제어 유닛에 의한 명령들의 시퀀싱을 개략적으로 나타낸다. 제어 유닛 내의 명령들의 시퀀싱은 회로 블럭들 및 나머지 칩으로부터의 명령들 및 조건들에 의존한다. 일 실시예에서는, 3개의 파이프라인 단계들이 존재한다: 명령 페치 단계, 명령 디코드 단계, 및 실행/기록 단계. 페치 단계 동안에는, 메모리 워드가 명령 메모리로부터 판독되고, 메모리 워드를 형성하는 명령들이 파이프라이닝 레지스터에 저장된다. 디코드 단계 동안에, 제어 유닛은 각 레이블 필드를 판독하고, 각 레이블 필드의 정보에 기초하여 각 대응 작용 필드를 제어 워드에 위치시킨다. 작용 필드는 명령들이 명령 메모리에서 압축될 때 제거되었던 위치 정보를 복원하도록 제어 워드 내에 위치된다. 실행/기록 단계 동안에는, 제어 워드가 회로 블럭들에 전달된다. 회로 블럭들은 데이터 이동 및 기타 연산들을 수행한다. 그 결과인 데이터는 목적 레지스터 또는 메모리에 저장된다.
도 3에 도시된 실시예에서, 제어 유닛은 클럭 사이클 0 동안에 메모리 워드(11)(도 2에 도시됨)를 페치한다. 상술된 바와 같이, 제어 유닛은 명령 메모리로부터 제어 워드들을 프리페치하고, 각 클럭 사이클에 대해 사용가능한 모든 제어 워드를 갖기에 충분한 속도로 그들을 파이프라인 레지스터에 저장한다. 클럭 사이클 1 동안에, 제어 유닛은 메모리 워드(12)(도 2에 도시됨)를 페치하고, 메모리 워드(11)가 디코드된다. 클럭 사이클 2 동안에는, 제어 유닛이 메모리 워드(13)(도 2에 도시됨)를 페치하고, 메모리 워드(12)는 디코드되며, 전체 제어 워드가 사용가능하다면 명령들이 회로 블럭들에 전달된다. 클럭 사이클 3 동안에, 제어 유닛은 메모리 워드(14)(도 2에 도시됨)를 페치하고, 메모리 워드(13)를 디코드하여, 다음 제어 워드를 실행한다. 클럭 사이클 4 동안에, 제어 유닛은 메모리 워드(15)(도 2에 도시됨)를 페치하고, 메모리 워드(14)를 디코드하여, 다음 제어 워드를 실행한다. 어떤 경우에는 제어 워드가 한 메모리 워드에서 시작할 수 있고, 다음 메모리 워드에서 종료할 수 있다. 도시된 실시예에서, 명령들(81, 82, 및 83)은 제어 워드를 형성하기 위해 디코드된다. 따라서, 명령(81)이 클럭 사이클 3 동안 디코드되더라도, 클럭 사이클 5까지는 실행되지 않는다. 병렬로 수행될 명령들은 일반적으로 모든 명령들이 사용가능할 때까지 실행되지 않는다.
일반적으로 명령들은 제어 워드를 형성하기 위해 그들이 메모리(10) 내에 저장된 것과 동일한 순위로 디코드된다. 그러나, 메모리(10)는 다음 제어 워드가 메모리에서의 다른 위치에서 시작한다는 것을 나타낼 수 있다. 예를 들어, 제어 워드를 형성하기 위해 디코드되는 한 그룹의 명령들 중 하나가 점프 명령의 타겟일 수 있다. 명령들 중 하나가 점프 명령의 타겟이면, 그 명령들의 그룹은 메모리 워드 경계에 의해 정렬되어야 한다.
도 4는 다음 제어 워드를 형성하는 명령들의 그룹이 메모리에서의 다른 위치에서 시작하고 그 명령들의 그룹이 메모리 워드 경계에 의해 정렬되지 않는 것을 명령이 나타낼 때, 제어 유닛에 의한 명령들의 시퀀싱을 개략적으로 나타낸다. 도시된 실시에에서, 명령(81)은 명령들(81, 82, 및 83)로부터 형성된 제어 워드에서 최초의 명령이다. 도 2에 도시된 실시예에서, 명령(81)은 메모리 워드(13)에 저장되고, 명령들(82 및 83)은 메모리 워드(14)에 저장된다.
클럭 사이클 0 동안, 점프 명령이 실행되고 명령(81)이 점프 명령의 타겟이면, 제어 유닛에 의해 판독된 다음 메모리 워드는 메모리 워드(13)이다. 그러나, 명령들(81, 82, 및 83)이 모두 메모리 워드(13)에 저장되는 것은 아니다. 이것은 제어 워드가 완전히 사용가능하기까지는 2 클럭 사이클이 걸린다는 것을 의미한다. 클럭 사이클 2 동안, 제어 유닛은 메모리 워드(14)를 페치한다. 제어 워드를 형성하기 위해 필요한 명령들에서 판독하는데 2 클럭 사이클이 걸리기 때문에, 클럭 사이클 3에 제어 워드가 준비되지 못한다. 시간이 중요한 애플리케이션에서는, 제어 워드가 모든 클럭 사이클에 대해 준비되어야 한다. 따라서, 시감성 제어 워드들을 형성하기 위해 디코드되어야 할 명령 그룹들은 단일 클럭 사이클 동안 페치되도록 메모리 워드 경계에 의해 정렬되어야 한다.
도 5는 메모리 워드 경계에 의해 선택적으로 정렬되고 제어 워드를 형성하는 한 그룹의 명령들을 명령 메모리에 저장하는 것을 개략적으로 나타낸다. 도시된 실시예에서, 명령(81)은 명령(81, 82, 83)으로부터 형성된 제어 워드에서 최초의 명령이다. 도 2에서, 명령(81)은 메모리 워드(13)에서의 최후의 명령이었다. 도 5에서, 명령(90)이 메모리 워드(13)에 삽입된다. 결과적으로, 명령(81)은 메모리 워드(14)에서 최초의 명령이다.
메모리 워드를 덧붙이는 방법에는 여러가지가 있다. 명령(90)은 제어 유닛이 인식하도록 프로그램된 임의의 특별 명령 코드일 수 있다. 정보 워드를 덧붙이는 다른 방법은 비정상 코드를 사용하는 것 이다. 제어 유닛은 명령의 레이블 필드 내의 몇몇 비트들만 보고서도 명령의 레이블 필드 명령(90)을 비정상 명령으로서 인식할 수 있다.
제어 유닛이 명령(90)이 비정상 명령인지를 판정할 수 있는 다른 방법은, 제어 워드를 형성하기 위해 디코드되는 한 그룹의 명령들에 대한 최대 길이 또는 제어 워드에 대한 최대 길이를 명령(90)이 초과하는지 여부이다. 명령들(77, 78, 79, 및 80)이 제어 워드를 형성하면, 명령(90)은 최대 길이를 초과할 것이다. 명령(90)이 명령들(77, 78, 79, 및 80)과 병렬로 수행될 것이라는 것을 레이블 필드의 비트가 나타내면, 명령(90)이 비정상 명령이고 다음 제어 워드는 다음 메모리 워드 내에서 시작된다는 것을 제어 유닛이 인식한다.
정보 워드를 덧붙이는 다른 방법은 프로그램 플로우 명령을 사용하는 것이다. 몇몇 실시예들에서, 프로그램 플로우 명령들은 항상 한 그룹의 명령들에서 최초의 명령들이다. 프로그램 플로우 명령이 명령들의 그룹에서 최초의 명령이 아니면, 프로그램 플로우 명령이 비정상 명령이라는 것을 제어 유닛이 인식한다. 명령들의 그룹은 또한 메모리 워드당 하나의 프로그램 플로우 명령만이 존재하도록 설정될 수도 있다. 하나 이상의 프로그램 플로우 명령이 존재하면, 두번째 프로그램 플로우 명령이 비정상 명령이라는 것을 제어 유닛이 인식한다. 제어 유닛이 특별 코드 또는 비정상 명령을 판독할 때, 다음 제어 워드는 다음 메모리 워드의 초기에서 시작한다는 것을 제어 유닛이 인식한다.
도 6은 다음 제어 워드를 형성하는 한 그룹의 명령들이 메모리의 다른 위치에서 시작하고 그 명령들의 그룹이 메모리 워드 경계에 의해 선택적으로 정렬된 때 제어 유닛에 의한 명령들의 시퀀싱을 개략적으로 나타낸다. 도시된 실시예에서, 명령(81)은 명령(81, 82, 및 83)으로부터 형성된 제어 워드에서 최초의 명령이다. 도 5에 도시된 바와 같이, 명령(81)은 메모리 워드(14)에서 최초의 명령이다. 결과적으로, 명령들(81, 82, 및 83)의 그룹은 단일 클럭 사이클 동안 판독될 수 있다.
클럭 사이클 0 동안, 점프 명령이 실행되고 명령(81)이 점프 명령의 타겟이면, 제어 유닛에 의해 판독되는 다음 메모리 워드는 메모리 워드(14)이다. 클럭 사이클 1 동안, 제어 유닛은 메모리 워드(14)를 판독한다. 도 4에서와는 달리, 제어 워드를 형성하는 명령들의 그룹이 단일 클럭 사이클 동안 페치된다. 클럭 사이클 2 동안 메모리 워드(14)가 디코드되고, 클럭 사이클 3 동안 명령들(81, 82, 및 83)로부터 형성된 제어 워드가 실행된다. 도 4에서와는 달리, 제어 워드는 매 클럭 사이클에 대해 준비된다. 제어 워드들이 하나의 메모리 워드에서 시작하여 다음 메모리 워드에서 종료하더라도, 시감성 제어 워드들을 형성하기 위해 디코드되는 명령들의 그룹들은 메모리 워드 경계들에 의해 정렬되어야 한다.
레이블 필드가 명령들의 길이 및 작용 필드들이 향하는 회로 블럭들에 대한 정보를 제공하기 때문에, 명령 메모리 및 제어 유닛이 기타 회로 블럭들에 의해 재사용될 수 있다. 유사하게, 회로 블럭들은 기타 명령 메모리들 및 제어 유닛들에 의해 재사용될 수 있다.
바람직한 실시예에 대한 지금까지의 설명은 당업자라면 누구나 본 발명을 이용할 수 있도록 제공되었다. 이들 실시예에 대한 다양한 변경이 당업자들에게는 이미 명백할 것이고, 여기에 기술된 원리들이 본 발명의 범위 및 사상을 벗어나지 않는 한 적용될 수 있다. 따라서, 본 발명은 개시된 실시예에 제한되는 것이 아니라, 이하의 청구범위에 일치하는 최광의의 사상으로 허용되어야 한다.

Claims (15)

  1. 복수의 회로 블럭들로 명령들을 분배하는 장치에 있어서,
    레이블 필드 및 작용 필드를 포함하는 명령들을 메모리 워드들에 계속적으로 저장하기 위한 명령 메모리;
    상기 메모리 워드를 수신 및 디코드하고, 상기 레이블 필드의 정보에 기초하여 상기 작용 필드들을 제어 워드에서의 명령들로서 정리하고, 상기 제어 워드들을 레지스터에 저장하기 위한 제어 유닛; 및
    상기 레지스터로부터 상기 복수의 회로 블럭들로 상기 제어 워드들을 분배하기 위한 수단
    을 포함하는 것을 특징으로 하는 명령 분배 장치.
  2. 제1항에 있어서, 상기 명령 메모리는 상기 메모리 워드들 중 하나에서 병렬로 수행되거나 또는 수행되지 않는 명령들을 통합함으로써 사이즈가 감소되는 것을 특징으로 하는 명령 분배 장치.
  3. 제2항에 있어서, 상기 제어 워드를 형성하기 위해 디코드되는 한 그룹의 명령들은 제1 메모리 워드에서 시작하여 제2 메모리 워드에서 종료하는 것을 특징으로 하는 명령 분배 장치.
  4. 제3항에 있어서, 상기 각 레이블 필드는 명령이 선행 명령들과 병렬로 수행되는지 여부를 나타내는 것을 특징으로 하는 명령 분배 장치.
  5. 제1항에 있어서, 상기 제어 워드를 형성하기 위해 디코드되는 한 그룹의 명령들은 상기 제1 메모리 워드에서 시작하여 상기 제2 메모리 워드에서 종료하지 않도록 메모리 워드 경계에 의해서 정렬되는 것을 특징으로 하는 명령 분배 장치.
  6. 제5항에 있어서, 상기 그룹은 선행 메모리 워드에 특별 코드를 삽입함으로써 상기 메모리 워드 경계에 의해 정렬되는 것을 특징으로 하는 명령 분배 장치.
  7. 제5항에 있어서, 상기 그룹은 선행 메모리 워드에 비정상 명령을 삽입함으로써 메모리 워드 경계에 의해 정렬되는 것을 특징으로 하는 명령 분배 장치.
  8. 제7항에 있어서, 상기 제어 워드들 각각은 가능한 최대 길이를 갖고, 상기 비정상 명령이 상기 가능한 최대 길이를 초과하는 것을 이유로 시퀀서가 상기 비정상 명령을 비정상 명령으로서 인식하는 것을 특징으로 하는 명령 분배 장치.
  9. 제1항에 있어서, 서로 다른 타입의 명령들이 존재하고, 하나의 타입의 명령으로는 점프 명령이 존재하며, 모든 점프 명령에 대하여는 타겟 명령이 존재하고;
    상기 제어 워드를 형성하기 위해 디코드되는 한 그룹의 명령 내의 명령이 상기 타겟 명령이면, 상기 그룹의 명령들은 메모리 워드 경계에 의해 정렬되는 것을 특징으로 하는 명령 분배 장치.
  10. 제1항에 있어서, 서로 다른 타입의 명령들이 존재하고, 한 타입의 명령은 조건을 평가하기 위해 회로 블럭을 향하며,
    상기 조건이 성립되면, 상기 명령 메모리에 저장된 적어도 하나의 다른 명령이 실행되고, 상기 조건이 성립되지 않으면, 상기 적어도 하나의 다른 명령이 실행되지 않는 것을 특징으로 하는 명령 분배 장치.
  11. 제10항에 있어서, 상기 조건부 명령이 제어 워드를 형성하기 위해 디코드되는 한 그룹의 명령들에서 최초의 명령이면, 상기 조건은 상기 그룹의 명령들 내의 모든 명령들에 적용되는 것을 특징으로 하는 명령 분배 장치.
  12. 제10항에 있어서, 상기 조건부 명령이 제어 워드를 형성하기 위해 디코드되는 한 그룹의 명령들에서 최초의 명령이 아니면, 상기 조건은 상기 그룹의 명령들 내의 모든 명령들에 적용되는 것은 아닌 것을 특징으로 하는 명령 분배 장치.
  13. 회로 블럭들로 명령들을 제공하는 방법에 있어서,
    레이블 필드 및 작용 필드를 포함하는 복수의 명령들을 명령 메모리에 메모리 워드들로서 저장하는 단계;
    상기 명령 메모리로부터 메모리 워드를 복원하는 단계;
    상기 메모리 워드를 디코드하는 단계;
    상기 레이블 필드의 정보에 기초하여 상기 명령으로부터의 작용 필드를 레지스터의 일 위치에 위치시키는 단계; 및
    상기 명령을 상기 레지스터로부터 상기 회로 블럭들로 제공하는 단계
    를 포함하는 것을 특징으로 하는 명령 제공 방법.
  14. 제13항에 있어서, 상기 메모리 워드에서 병렬로 수행될 수 있거나 또는 수행되지 않을 수 있는 명령들을 통합함으로써 상기 명령 메모리의 사이즈를 감소시키는 단계를 더 포함하는 것을 특징으로 하는 명령 제공 방법.
  15. 제14항에 있어서, 병렬로 수행되어야 할 한 그룹의 명령들이 동일한 메모리 워드에 저장되도록 상기 메모리 워드를 패딩(padding)하는 단계를 더 포함하는 것을 특징으로 하는 명령 제공 방법.
KR1020007013389A 1998-05-29 1999-05-18 복수의 회로 블럭에 명령을 분배하기 위한 방법 및 장치 KR100612193B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/086,618 US6345355B1 (en) 1998-05-29 1998-05-29 Method and apparatus for distributing commands to a plurality of circuit blocks
US09/086,618 1998-05-29

Publications (2)

Publication Number Publication Date
KR20010043891A true KR20010043891A (ko) 2001-05-25
KR100612193B1 KR100612193B1 (ko) 2006-08-16

Family

ID=22199787

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020007013389A KR100612193B1 (ko) 1998-05-29 1999-05-18 복수의 회로 블럭에 명령을 분배하기 위한 방법 및 장치

Country Status (8)

Country Link
US (1) US6345355B1 (ko)
EP (1) EP1080399A2 (ko)
JP (1) JP4169931B2 (ko)
KR (1) KR100612193B1 (ko)
CN (1) CN1127018C (ko)
AU (1) AU765179B2 (ko)
CA (1) CA2333563C (ko)
WO (1) WO1999063417A2 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7039790B1 (en) 1999-11-15 2006-05-02 Texas Instruments Incorporated Very long instruction word microprocessor with execution packet spanning two or more fetch packets with pre-dispatch instruction selection from two latches according to instruction bit
EP1102165A1 (en) * 1999-11-15 2001-05-23 Texas Instruments Incorporated Microprocessor with execution packet spanning two or more fetch packets
CN105446700B (zh) * 2014-05-30 2018-01-02 华为技术有限公司 一种指令执行方法以及顺序处理器
CN109947479A (zh) * 2019-01-29 2019-06-28 安谋科技(中国)有限公司 指令执行方法及其处理器、介质和系统

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5692139A (en) 1988-01-11 1997-11-25 North American Philips Corporation, Signetics Div. VLIW processing device including improved memory for avoiding collisions without an excessive number of ports
US5471593A (en) * 1989-12-11 1995-11-28 Branigin; Michael H. Computer processor with an efficient means of executing many instructions simultaneously
EP0825529A3 (en) 1990-05-04 1998-04-29 International Business Machines Corporation System for preparing instructions for instruction parallel processor and system with mechanism for branching in the middle of a compound instruction
US5214763A (en) 1990-05-10 1993-05-25 International Business Machines Corporation Digital computer system capable of processing two or more instructions in parallel and having a coche and instruction compounding mechanism
US5163139A (en) 1990-08-29 1992-11-10 Hitachi America, Ltd. Instruction preprocessor for conditionally combining short memory instructions into virtual long instructions
DE69130757T2 (de) * 1990-11-30 1999-07-29 Kabushiki Kaisha Toshiba, Kawasaki, Kanagawa Ausführungsvorrichtung für bedingte Verzweigungsbefehle
US5446850A (en) 1991-01-15 1995-08-29 International Business Machines Corporation Cross-cache-line compounding algorithm for scism processors
JP2642529B2 (ja) 1991-04-30 1997-08-20 株式会社東芝 並列プロセッサーの命令分配処理装置
US5539911A (en) 1991-07-08 1996-07-23 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution
JPH0793152A (ja) 1993-09-20 1995-04-07 Fujitsu Ltd マイクロプロセッサ制御装置
DE69422780T2 (de) 1993-11-05 2000-08-17 Intergraph Corp., Huntsville Superskalare Rechnerarchitektur mit Softwarescheduling
JPH07219769A (ja) 1994-02-07 1995-08-18 Mitsubishi Electric Corp マイクロプロセッサ
US6009508A (en) * 1994-06-21 1999-12-28 Sgs-Thomson Microelectronics Limited System and method for addressing plurality of data values with a single address in a multi-value store on FIFO basis
US5724331A (en) * 1994-08-25 1998-03-03 Discovision Associates Disk drive system having improved cartridge-loading apparatus including direct drive gear train and methods for making and operating same
US5742784A (en) 1995-01-25 1998-04-21 International Business Machines Corporation System for reordering of instructions before placement into cache to reduce dispatch latency
US5699537A (en) * 1995-12-22 1997-12-16 Intel Corporation Processor microarchitecture for efficient dynamic scheduling and execution of chains of dependent instructions

Also Published As

Publication number Publication date
WO1999063417A2 (en) 1999-12-09
KR100612193B1 (ko) 2006-08-16
EP1080399A2 (en) 2001-03-07
WO1999063417A3 (en) 2000-03-16
CA2333563A1 (en) 1999-12-09
JP2002517811A (ja) 2002-06-18
CN1127018C (zh) 2003-11-05
CN1310818A (zh) 2001-08-29
CA2333563C (en) 2011-07-12
US6345355B1 (en) 2002-02-05
AU4661499A (en) 1999-12-20
AU765179B2 (en) 2003-09-11
JP4169931B2 (ja) 2008-10-22

Similar Documents

Publication Publication Date Title
US4435758A (en) Method for conditional branch execution in SIMD vector processors
EP2569694B1 (en) Conditional compare instruction
US5710902A (en) Instruction dependency chain indentifier
EP0454984B1 (en) General purpose compounding technique for instruction-level processors
KR100284789B1 (ko) N-지로 분기를 갖는 슈퍼스칼라 또는 초장 명령어 워드컴퓨터에서 다음 명령어를 선택하는 방법 및 장치
EP0307166A2 (en) Data processor
EP0035647B1 (en) A simd data processing system
US20030154358A1 (en) Apparatus and method for dispatching very long instruction word having variable length
EP3449356B1 (en) An apparatus and method for managing address collisions when performing vector operations
WO2001004765A1 (en) Methods and apparatus for instruction addressing in indirect vliw processors
EP0976028B1 (en) A microprocessor configured to switch instruction sets upon detection of a plurality of consecutive instructions
JP2620511B2 (ja) データ・プロセッサ
US20030120882A1 (en) Apparatus and method for exiting from a software pipeline loop procedure in a digital signal processor
JP2003058366A (ja) 分岐予測なしで分岐ペナルティを減少させる新規なフェッチ分岐アーキテクチャ
JP3207124B2 (ja) カウント/リンク・レジスタ変更命令の投機実行をサポートする方法及び装置
US5253349A (en) Decreasing processing time for type 1 dyadic instructions
KR100612193B1 (ko) 복수의 회로 블럭에 명령을 분배하기 위한 방법 및 장치
KR100431975B1 (ko) 분기에의한중단이없는파이프라인방식의마이크로프로세서를위한다중명령디스패치시스템
US11481223B2 (en) Reducing operations of sum-of-multiply-accumulate (SOMAC) instructions
US5974531A (en) Methods and systems of stack renaming for superscalar stack-based data processors
US5991874A (en) Conditional move using a compare instruction generating a condition field
EP0623874A1 (en) Method for improving the performance of processors executing instructions in a loop
US6099585A (en) System and method for streamlined execution of instructions
KR19990072645A (ko) 프로그램제어유닛의명령페치장치및방법
US5870577A (en) System and method for dispatching two instructions to the same execution unit in a single cycle

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
LAPS Lapse due to unpaid annual fee