KR20040111650A - 인스트럭션 시퀀스 디코딩 방법 및 장치 - Google Patents

인스트럭션 시퀀스 디코딩 방법 및 장치 Download PDF

Info

Publication number
KR20040111650A
KR20040111650A KR10-2004-7018661A KR20047018661A KR20040111650A KR 20040111650 A KR20040111650 A KR 20040111650A KR 20047018661 A KR20047018661 A KR 20047018661A KR 20040111650 A KR20040111650 A KR 20040111650A
Authority
KR
South Korea
Prior art keywords
instruction sequence
control
instruction
sequence decoding
code word
Prior art date
Application number
KR10-2004-7018661A
Other languages
English (en)
Inventor
아우구스테이즌알렉산더
레이즈텐-노왁카타르지나
드올리베이라카스트럽페레이라베르나르도
Original Assignee
코닌클리즈케 필립스 일렉트로닉스 엔.브이.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 코닌클리즈케 필립스 일렉트로닉스 엔.브이. filed Critical 코닌클리즈케 필립스 일렉트로닉스 엔.브이.
Publication of KR20040111650A publication Critical patent/KR20040111650A/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
    • 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/30181Instruction operation extension or modification
    • 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/30098Register arrangements
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
    • 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
    • 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
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
    • G06F9/3897Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros with adaptable data path

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)
  • Logic Circuits (AREA)

Abstract

본 발명은 데이터 처리 프로그램의 적어도 2개의 인스트럭션의 시퀀스를 데이터 경로를 제어하는 데 사용되는 코드 워드의 시퀀스로 디코딩하는 방법 및 장치에 관한 것으로, 코드 워드의 시퀀스에서 변하지 않는 불변 코드 워드부가 별도로 생성되어서 코드 워드의 시퀀스 동안 고정되도록 데이터 경로를 구성하는 데 사용된다. 따라서, 필요한 마이크로 코드 메모리 크기가 줄어들고, 전력 소비가 감소될 수 있다.

Description

인스트럭션 시퀀스 디코딩 방법 및 장치{METHOD AND APPARATUS FOR DECODING INSTRUCTION SEQUENCES}
컴퓨터 아키텍쳐는 제어 워드에 의해 제어되는 고정된 데이터 경로로 이루어진다. 이 제어 워드는 각각이 데이터 경로의 일부를 제어하는 몇 개의 부분으로 이루어진다. 이들 부분은 멀티플렉서, 레지스터 어드레스, 산술 논리 유닛(ALU) 또는 다른 기능 유닛용 연산 코드 등을 포함할 수 있다. 발행된 각각의 인스트럭션은 새로운 제어 워드를 생성하며, 이는 통상적으로 2진 형식의 인스트럭션을 대응하는 코드 워드로 변환하는 인스트럭션 디코더 또는 마이크로 저장부, 즉 제어 워드를 직접 포함하는 메모리에 의해 이루어진다.
프로세서가 루프 기능을 수행할 때, 대응하는 과정은 인스트럭션의 시퀀스로서는 물론 지속적으로 에뮬레이트되는 파이프라인 회로로서 해석될 수 있다. 이러한 파이프라인 회로에서, 데이터는 각각의 클록 주기에서 데이터 흐름 그래프의 하강 에지를 이동시키며, 여기서 그래프의 에지는 레지스터에 의해 구현된다. 한편, 데이터 흐름 그래프는 서로 다른 동작이 인스트럭션 스케쥴러에 의해 정의된 바에 따라 특정 순서로 수행되는 프로그램에 의해 구현될 수 있다. 이 인스트럭션은 하나씩 혹은 프로세서 아키텍쳐가 병렬 처리를 지원하는 경우, 약간의 병렬성(parallelism)을 갖도록 수행될 수 있다. 이 연산을 수행하기 위해서, 프로세서의 각각의 제어 워드는 각각의 인스트럭션의 데이터 흐름 그래프의 일부를 구성할 것이며, 그 에지는 일반적인 프로세서 레지스터에 의해 구현된다.
그러한, 전력 손실 및 면적의 관점에서 내장된 시스템의 비용은 프로그램 저장에 필요한 메모리에 의해 대부분 결정된다. 높은 레벨의 편집(high-level compilation)은 높은 레벨 수작업 어셈블리 조립 코드(handcrafted assembly code)에 비해서 코드 크기의 증가를 유발한다. 수용가능한 범위 내에서 코드 크기를 유지하기 위해서는, 효율적인 인스트럭션 인코딩 및 코드 소형화가 새로운 프로세서 코어의 설계에서의 가장 중요한 점이다. 또한, 프로그램의 서로 다른 부분의 성능에 관한 제한 조건이 서로 다르므로 코드 밀도와 성능간의 절충이 가능하다.
문헌 미국 특허 5862384 호에는 업데이트 변수 제어 테이블에서 인식된 업데이트 변수에 기초해서 루프로부터 루프 불변식(loop invariant expression)을 전송하도록 배치된 최적화 섹션이 설치된 컴파일러 최적화 장치가 개시되어 있다. 이는 전체 수행될 명령문(statement)의 수를 감소시켜서 처리를 최적화시키고, 처리 속도를 개선한다.
그러나, 루프를 나타내는 것과 같은 이러한 인스트럭션 시퀀스는 고정된 부분 및 표준 부분을 가진 제어 워드의 시퀀스를 발생시킨다. 제어 워드의 고정된 부분이 변하지 않더라도, 이러한 불변 시퀀스의 수행 시간에 의해 결정되는 많은 사이클 동안 구성 메모리 컨텍스트가 재로딩된다. 이러한 시간적인 단점으로 인해서 처리 성능이 감소되고, 전력 소비가 증가한다.
본 발명은 데이터 처리 프로그램의 적어도 2개의 인스트럭션의 시퀀스를, 예컨대 디지털 신호 프로세서 등에서와 같은, 데이터 경로를 제어하는 데 사용되는 코드 워드의 시퀀스로 디코딩하는 방법 및 장치에 관한 것이다.
다음에서, 본 발명은 도면을 참조하면서 바람직한 실시예에 대해서 더 상세하게 설명될 것이다.
도 1은 제 1 바람직한 실시예에 따른 2개의 디코딩 방안으로 나타내는 개략도,
도 2는 레지스터 파일의 멀티플렉서 기반 선택의 예를 도시하는 도면,
도 3은 제 1 바람직한 실시예에 따른 제어 워드의 표준 부분으로부터 구성 부를 간단하게 나눈 분리를 나타내는 원리도,
도 4는 본 발명의 제 1 실시예에 따라 구성 부분과 코드 워드의 표준 부분을 결합하는 제어 워드 로더 및 구성 마스크의 사용을 나타내는 원리도,
도 5는 제 1 실시예에 사용될 수 있는 제어 워드 로더 아키텍쳐를 나타내는 개략도,
도 6은 도 5에 따른 제어 워드 로더에 사용될 수 있는 프로그래밍 가능 교차점 스위치의 예를 도시하는 도면,
도 7은 제 2 실시예에 따른 고정 제어 워드에 기초한 재구성 가능 레지스터 파일을 제어하는 어프로치를 나타내는 개략도,
도 8a 및 8b는 제 2 바람직한 실시예에 사용될 수 있는 재구성 가능 로직 유닛의 개략도.
따라서 본 발명의 목적은 처리 성능을 증가시키고 전력 소비를 감소시킬 수 있는, 디코딩 방법 및 인스트럭션 시퀀스 인코딩 장치를 제공하는 것이다.
이 목적은 청구항 1에 개시된 방법 및 청구항 20에 개시된 장치에 의해 달성된다.
따라서, 루프에 들어가기 전에 데이터 흐름 그래프의 일부를 구성하도록, 고정된 회로 구현과 프로그램 기반 수행 구현의 2개의 극한예 중간의 방법이 제공되어서 루프 동안 고정될 것이다. 이는 데이터 경로의 일부를 고정시키는 것, 즉 제어 워드의 일부를 고정시키는 것에 대응한다. 이로써 더 좁은 제어 워드가 발행되게 되므로, 전력 소비 및 (마이크로) 코드 크기가 모두 감소한다. 이 기술은 제어 워드 호이스팅의 일종으로 간주될 수 있으며, 여기서 컴파일러 용어 '호이스팅'은 루프로부터의 이동 루프 불변 제어 신호(예컨대 op코드, 어드레스 등)를 의미한다. 그러나, 컴파일러에 대해서, 인스트럭션 스케쥴이 변하지 않기 때문에 이 기술은 거의 영향을 미치지 않는다. 각각의 코드 워드 시퀀스, 즉 루프 내의 인스트럭션의 인코딩만이 영향을 받는다. 특히, 제어 워드의 불변 부분, 즉 고정부는 인스트럭션 디코더 또는 마이크로 저장부로부터 더 이상 나오지 않으며, 예컨대 별도의 메모리로부터 어디든지 올 수 있다. 다른 방안으로, 예컨대 FPGA(Field Programmable Gate Array)와 같은 재구성 가능한 하드웨어가 불변부의 배선을 다루는 데 사용될 수 있다.
제어 워드의 불변부가 모든 제어 워드에서 여분으로 복제되지 않기 때문에, 필요한 마이크로 코드 메모리 크기가 감소된다.
다른 방안의 전용 메모리로, 전용 메모리가 룩업 테이블 또는 컨텐츠 주소 지정 가능 메모리로 구현될 수 있다. 전용 메모리는 데이터 경로의 복수의 기능 유닛들 간에 할당될 수 있거나 혹은 복수의 전용 메모리가 데이터 경로의 각각의 기능 유닛에 할당될 수 있다.
또한, 전용 메모리를 주소 지정하는 데 불변 코드 워드부가 사용되어서 데이터 경로를 제어하는 데 사용되는 확장된 새로운 코드 워드를 획득할 수 있다. 이는 코드 워드의 원래의 시퀀스와 같은 접속을 사용해서 달성될 수 있다. 따라서, 접속은 멀티플렉싱 기능을 통해서 선택될 수 있다.
불변 코드 워드부의 비트 위치는 구성 마스크를 사용해서 코드 워드에 명시될 수 있다. 특히 제어 워드 로딩 기능이 구성 마스크에 기초해서 제어될 수 있어서, 제어 레지스터의 적절한 위치로 코드 워드의 비트를 전송할 수 있다. 이는 구성 마스크를 사용해서 제어 레지스터에 접속하기 위한 스위칭 신호를 생성함으로써 달성될 수 있다. 전용 메모리의 크기는 인스트럭션 레지스터의 크기에 대응할 수있다.
다른 방안의 재구성 가능한 하드웨어에서, 구성 컨텍스트는 불변 코드 워드부에 기초해서 선택될 수 있다. 또한, 재구성 가능한 하드웨어에 매핑된 회로를 제어하는 제어 비트의 수는 불변 제어의 일부를 구성에 포함시킴으로써 감소될 수 있다. 따라서, 코드 워드의 불변부가 호이스트(hoisted)될 수 있어서, 재구성 가능 하드웨어에 매핑되는 회로를 제어하는 데 필수적인 인스트럭션 워드 폭을 감소시킨다. 또한, 가장 큰 불변 코드 워드부를 가진 인스트럭션이 적어도 하나의 인스트럭션으로부터 선택될 수 있고, 선택된 인스트럭션은 재구성 가능 하드웨어에 매핑하는 데 사용될 수 있다. 따라서, 재구성 가능 하드웨어가 이들 인스트럭션 또는 호이스팅으로부터 이익을 취할 수 있는 인스트럭션 시퀀스에 사용된다.
다른 유익한 개선점이 독립항에 정의된다.
바람직한 실시예가, 디지털 신호 프로세서의 코드 시퀀스의 예로서, 루프 기능의 디코딩 및 프로세싱에 기초해서 설명될 것이다. 바람직한 실시예에 따라서, 데이터 흐름 그래프의 일부는 루프에 들어가기 전에 구성되고, 루프 동안에는 고정될 것이다. 이는 데이터 경로의 일부를 고정하는 것에, 즉 제어 워드의 일부를 고정하는 것에 대응한다.
일반적으로 루프 불변 데이터 흐름 그래프용 제어 워드의 일부를 고정시킨다는 것은 다음을 의미한다.
기능 유닛과 레지스터 파일 사이의 접속을 고정
레지스터 파일 공간 내의 어드레스 고정
기능 유닛용 op코드 고정
임시 루프 불변 데이터 흐름 그래프와 관련된 제어 워드의 고정된 부분을 생성하는 것은 루프용 코드 생성 또는 인스트럭션 디코딩 동안 이루어진다. 이후에, 루프 수행 동안, 제어 워드의 표준 또는 가변 부분이 로컬 인스트럭션 디코더 또는 마이크로 저장부로부터 획득된다. 제어 워드의 고정 부분 또는 불변 부분은 데이터 경로 중 코드 워드의 시퀀스 동안 고정될 부분을 구성하는데 사용된다.
제 1 바람직한 실시예에 따라서, 코드 워드의 고정된 부분은 룩업 테이블 또는 컨텐츠 어드레싱가능 메모리(CAM)로서 구현된 전용 메모리 블록으로부터 획득된다. 고려되는 아키텍쳐의 인스트럭션 계층에 따라서, 전용 메모리 블록이 프로세서 아키텍쳐 전체에 또는 국부적으로 위치될 수 있다.
제 2 바람직한 실시예에 따라서, 제어 워드의 고정부는 재구성 가능한 하드웨어 재구성 가능한 측면 또는 프로세서 아키텍쳐에 제공되는 로직 유닛을 고정시키는데 사용될 수 있다.
이하에서는, 제 1 바람직한 실시예의 구현예가 도 1 및 도 6을 참조로 설명된다.
도 1은 전용 메모리 블록을 위치시키는 2가지 방안에 대해서, 디지털 신호 프로세서 아키텍쳐의 일부를 개략적으로 도시하고 있다. 도 1의 좌측 상단에 도시된 바와 같이 제어 워드(10)는 표준 또는 가변부(11) 및 고정 또는 불변부(12)로 이루어진다. 고정부(12)는 루프동안 변하지 않는다. 도 1의 우측 상부에 도시된제 1 방안에 따라서, 전용 메모리 블록(26)이, 레지스터 파일(21)이 접속된 제 1 기능 유닛 클러스터(23)의 인스트럭션 디코더(24)에 접속된다. 레지스터 파일(21)은 멀티플렉서(22)를 통해서 상호 접속 라인으로부터 액세스될 수 있다. 따라서, 제 1 방안에서, 전용 메모리 블록(26)은 전체적으로 위치되어서 제어 워드의 고정부가 다수의 기능 유닛 클러스터 사이에 공유된다. 레지스터 파일(21)의 레지스터는 멀티플렉서(22)를 거치지 않고, 디코더(24)로부터 직접 어드레스될 수도 있다. 어드레싱 부분은 제어 워드의 고정부(12)에 대응할 것이며, 루프 동안 변하지 않을 것이다.
도 1의 우측 하단에 도시된 제 2 가능 방안에 따라서, 전용 메모리 블록(25)은 주어진 기능 유닛 클러스터, 예컨대 기능 유닛 클러스터(23) 내에 배치된다. 다시, 전용 메모리 블록(25)은 기능 유닛 클러스터(23)의 인스트럭션 디코더(24)에 접속된다. 제어 워드(12)의 고정부는 두 방안에 모두에서 원래의 비트 폭을 줄이도록 인코딩된다(예컨대, 컴파일러 또는 어셈블러에 의해서). 이후에, 각각의 전용 메모리 블록(25, 26)에서 수정된 인스트럭션 타입이 획득되는 데 기초가 되는 새로운 제어 워드로 확장되거나 디코딩된다.
도 2는 표준 및 수정 인스트럭션 타입 모두에 의해 제어될 수 있는 레지스터 파일(21)의 예를 도시한다. 표준 인스트럭션 타입은 제어 워드(10)의 표준부(11)에 기초해서 획득되고, 반면에 수정 인스트럭션 타입은 각각의 전용 메모리 블록(25, 26)을 통해서 제어 워드(10)의 고정부(12)에 기초해서 획득된다. 특히, 루프 동안, 루프의 원하는 프로세싱 및 레지스터 기능을 제공하도록, 표준 및 수정 인스트럭션 타입 모두 인스트럭션 디코더(24)에 의해 생성된다. 제어 워드(10)의 고정부(12) 및 표준부(11)를 각각 표준 인스트럭션 타입 및 수정 인스트럭션 타입으로 변환하는 것은 도 2에 도시되어 있지 않다. 전체 구현 비용, 특히 배선 구현 비용을 감소시키기 위해서, 각각의 전용 메모리 블록(25, 26)에 의해 생성된 이 새로운 제어 워드는 표준 인스트럭션 디코더(24)와 같은 제어 자원으로의 접속을 사용할 수 있다. 도 2에 도시된 바와 같이, 레지스터 파일(21)의 각각의 입력단에 제공된 로컬 멀티플렉서를 사용해서 선택이 행해질 수 있다. 따라서, 제어 워드(10)의 표준부(11) 및 고정부(12)로부터 획득된 제어 신호는 모두 레지스터 파일(21)을 제어하는 데 사용될 수 있다.
제어 워드(10)의 루프 불변부 또는 고정부(12)가 루프 가변부 또는 표준부(11)로부터 분리되기 때문에, 각각의 애플리케이션의 루프는 루프 불변부 또는 구성을 그대로 가질 것이다. 유지부는 루프 수행 동안 변화될 수 있다. 구성부가 루프 내의 모든 제어 워드에서 여분으로 복제되는 것이 아니기 때문에, 이는 필요한 마이크로 코드 메모리 크기를 감소시킨다. 실제로, 루프 수행 동안 변화하지 않는 제어 비트는 제어 워드에 대해서 임의로 분산될 수 있다. 문제는, 수행하는 동안 적절한 구성 및 표준 비트를 마이크로 코드 메모리로부터 인스트럭션 디코더(24)의 제어 레지스터의 적절한 비트 위치로 로딩하는 것으로, 이에 기초해서 프로세서 데이터 경로의 리소스가 제어된다. 이는 애플리케이션에 각각의 루프에 대해서, 제어 레지스터 내의 어느 비트 위치가 루프 불변이고, 어느 비트 위치가 그렇지 않은지를 나타내는 구성 마스크를 제공함으로써 해결된다. 이후에, 제어 워드로더는 구성 마스크의 제어하에서 제어 레지스터의 적절한 위치로 구성부 내의 비트를 전송할 것이다. 이후에 루프의 수행이 개시될 수 있다. 표준부(11)로부터 유도된 모든 제어 워드에 대해서, 전용 메모리 블록(25, 26)에 정의된 바에 따라, 그 루프의 사전 로딩된 구성을 변화시킴없이, 제어 워드 로더는 각각의 비트를 제어 레지스터의 적절한 위치로 전송할 것이다.
도 3은 표준부로부터 구성부를 분리하기 위해서 제어 데이터 내의 일부 지점에서 간단한 컷에 의한 제어 데이터의 간단한 생성을 도시하고 있다. 도 3에 따라서, 제어 레지스터(50)가 제공되어서, 2개의 산술 논리 유닛(ALU:54) 및 2개의 곱셈 누산 유닛(Multiply/Acculate units(MAC):53)을 각각의 레지스터 파일 및 RAM(52)과 함께 포함하는 프로세서 데이터 경로(41)를 제어한다. 도 3에 도시된 바와 같이, 루프 수행 동안 변하지 않는 제어 비트, 즉 구성부(62)의 비트는 제어 레지스터(50)의 대응 부분에 직접 전송되고, 마이크로 코드 메모리(51)에 저장된 제어 데이터의 표준부(11)는 루프 수행 동안 변화되어서 제어 레지스터(50)의 나머지 부분에 전송된다. 이런 간단한 상황은 아키텍쳐에 의해 실시될 수 있으며, 호이스팅 가능성을 희생해서 컴파일러에 의해 사용될 수 있으며, 일반적인 경우에, 도 3에 도시된 바와 같이 루프 불변 비트가 순서대로 서로 인접하는 것은 보장되지 않는다. 제어 워드 호이스팅 성능을 완전히 사용하기 위해서는 더 일반적인 솔루션이 필요하다.
따라서, 도 4는 일반적인 경우를 도시하고 있으며, 여기서 제어 레지스터(50)의 칸막이된 위치는 루프 불변 비트 또는 구성 비트에 대응한다. 도 4로부터알 수 있는 바와 같이, 루프 수행 동안 변하지 않는 제어 비트는 제어 레지스터(50) 내의 제어 워드에 정해진 순서없이 임의로 분배된다. 루프 수행 동안 문제는 적절한 구성 비트 및 표준 비트를 마이크로 코드 메모리(51)로부터 제어 레지스터의 적절한 비트 위치로 로딩하는 것이다. 이를 위해서, 위에 설명된 바와 같이, 구성 마스크(61)는 도 1의 전용 메모리 블록(25, 26)의 모든 구성과 함께 제공된다. 새로운 루프가 수행되어야 한다면, 대응하는 구성 마스크(61)가 제어 워드 로더(64)의 구성 마스크 레지스터(63)에 로딩되며, 이는 구성 마스크 레지스터(63)에 정의된 바와 같이 마이크로 코드 메모리(51)로부터 제어 레지스터(5)의 적절한 위치로 제어 데이터를 로딩한다. 이후에 루프의 수행이 개시된다. 표준부(11)의 모든 제어 데이터에 대해서, 제어 워드 로더(64)는 전용 메모리(25, 26)로부터 획득된 사전 로딩된 구성(62)을 변화시키지 않고, 각각의 비트를 제어 레지스터(50)의 적절한 위치로 전송할 것이다.
구성 마스크 레지스터(63) 내의 0 및 1의 패턴은 제어 신호가 아니며, 제어 워드 내의 비트 위치가 루프 불변부인지 아닌지를 간단하게 나타내는 것이라는 것에 주의한다. 반면에, 루프 구성(62) 내의 0 및 1은 프로세서 데이터 경로를 제어할 제어 신호로, 예컨대 기능 유닛의 op코드, 레지스터 어드레스, 멀티플렉서 선택 입력 등이 될 수 있다.
도 5는 도 4에 도시된 제어 워드 로더(64)의 아키텍쳐를 나타내는 개략도를 도시하고 있다. 도 5에 도시된 바와 같이, 프로그램 카운터(PC)는 마이크로 코드 저장부(51) 또는 인스트럭션 메모리 또는 캐시에 저장된, 컨트롤 워드(10)의 현재표준부를 포인팅하고 있다. 이미 설명한 바와 같이, 나머지 고정부 또는 구성은 전용 메모리(25, 26)에 저장된다. 따라서, 일반 인스트럭션 메모리 또는 마이크로 코드 저장부(51)는 제어 워드(10)의 표준부만을 포함한다. 이후 새로운 구성은 소프트웨어의 제어하에서 제어 레지스터(50)로 로딩된다. 그러나, 이 로딩 기능은 도 5에 도시되지 않았다. 전용 메모리(25, 26) 내의 각각의 제어 워드의 크기는 인스트럭션 레지스터(50)와 같다. 각각의 구성(62)과 함께 이런식으로 대응 루프 내의 제 1 제어 워드 또는 인스트럭션의 표준부(11)에 대응하는 비트도 전용 메모리 블록(25, 26)에 저장될 수 있다. 워드 크기가 같기 때문에, 도 5에 도시된 제어 워드 로더(64)에 제공된 프로그래밍 가능 교차점 스위치(73)를 완전히 우회해서, 전용 메모리 블록(25, 26)의 워드(구성)는 프로세서의 인스트럭션 레지스터에 직접 로딩될 수 있다. 이로써, 루프의 제어 워드의 제 1 표준부(11)는 자동적으로 동시 로딩된다.
프로그래밍 가능 교차점 스위치(73)는 멀티플렉서 체인으로 이루어질 수 있으며, 각각의 멀티플렉서는 마스크 해석 로직(71)으로부터 입력되는 비트의 세트에 의해 제어된다. 특히, 프로그래밍 가능 교차점 스위치(73)는 제어 가능한 3상 버퍼도 포함할 수 있으며, 모든 개개의 멀티플렉서 및 버퍼 제어 비트의 집합이 스위치 제어 신호(72)를 이룬다. 마스크 해석 로직(71)은 구성 마스크 레지스터(63)의 컨텐츠를 스위치 제어 신호(72)로 변환한다. 마스크 해석 로직(71)을 사용함으로써 다음 2가지 이점을 제공한다. 우선, 이는 루프 구성 마스크(61)의 시멘틱(semantics)으로부터 특정 스위치 아키텍쳐를 분리시킨다. 예컨대 이는 이전 버전과의 2진 코드 호환성을 보존하면서 스위치 업그레이드를 가능하게 한다. 두 번째로, 구성 마스크 레지스터(63)의 비트 수는 전형적으로 스위치 제어 신호(72)를 이루는 비트의 수보다 더 적을 것이며, 이로써 루프 구성(61)에 필요한 메모리 용량을 줄일 수 있다. 그럼에도 불구하고, 시스템은 루프 구성 마스크(63)가 제공되지 않고, 마스크 해석 로직(71)이 제공되지 않도록 구성될 수도 있다. 이 경우, 루프 구성(61)의 비트는 직접 스위치 제어 신호(72)를 형성한다.
위에 설명된 바와 같이, 제 1 바람직한 실시예에서 구성 마스크 내의 0 및 1의 패턴은 제어 워드 내의 비트 위치가 루프 불변인지 아닌지를 인코딩하고 있다. 실제로, 마스크 해석 로직(71)이 스위치 아키텍쳐로부터 루프 구성 마스크의 시멘틱을 디커플링시키기 때문에, 구성 마스크의 정보를 인코딩하는 몇 가지 다른 형태가 사용될 수도 있으며, 이는 정보 저장에 필요한 비트 폭을 감소시킬 수 있다.
프로그래밍 가능한 교차점(73)이 완전 접속될 수는 있지만 그럴 필요는 없다. 예컨대, 표준부(11)의 제 1 비트가 제어 레지스터(50)의 임의의 비트 위치로 라우팅될 수 있고, 반면에 표준부(11)의 제 2 비트는 제어 레지스터(50)의 제 1 비트 위치로 라우팅가능할 필요는 없다. 또한, 표준부(11)의 제 3 비트 위치가 제어 레지스터(50)의 제 1 및 제 2 비트 위치로 라우팅가능할 필요는 없다. 유사한 관계가 고차원 비트에도 적용될 수 있다. 이러한 관계를 적용함으로써, 접속 중 일부는 교차점 스위치(73)로부터 물리적으로 제거될 수 있으며, 이는 이들이 결코 사용될 수 없기 때문이다.
도 6은 마이크로 코드 저장부(51)로부터 획득된 인스트럭션의 표준부(11)가2개의 비트만을 포함하고, 제어되는 프로세서 데이터 경로가 제어 레지스터(50)에서 4비트의 제어 워드를 필요로 하는 간단한 경우에 대해서 프로그래밍 가능한 교차점 스위치(73)의 실시예를 도시하고 있다. 따라서, 마이크로 코드 저장부(51)로부터 획득된 인스트럭션은 2비트를 포함하고, 제어 레지스터(50)는 4비트를 포함한다. 교차점 스위치(73)의 접속 경로는 스위치 제어 신호(72)에 기초해서 멀티플렉서 및 3상 버퍼를 통해서 제어될 수 있다. 제시된 경우에, 인스트럭션, 즉 표준부(11)의 좌측 비트는, 가장 우측의 비트 위치를 제외한 제어 레지스터(50)의 모든 비트 위치로 스위칭될 수 있으며, 인스트럭션의 우측 비트는 가장 좌측의 비트를 제외한 제어 레지스터(50)의 모든 비트 위치로 스위칭될 수 있다.
도 7은 제 2 바람직한 실시예에 따른 디코딩 아키텍쳐의 개략도를 도시하고 있으며, 여기서 제어 워드(10)의 고정부(12)가 재구성 가능한 레지스터 파일(31)을 제어하는 데 사용된다. 재구성 가능한 하드웨어 자원의 특성으로 인해서, 더 높은 융통성을 획득할 수 있고, 이는 비용 효율을 더 개선하는 데 사용될 수 있다. 제 2 바람직한 실시예에 사용될 수 있는 재구성 가능한 하드웨어 유닛의 예가 내장형 FPGA이다.
레지스터 파일(31)이 재구성 가능 로직에서 구현될 때, 모든 자원은 공간적으로 매핑된다. 리소스에 대한 제어는 구성 메모리 비트를 통해서 이루어진다. 구성 메모리(32)에는 새로운 타입의 데이터 흐름 그래프가 수행될 때 새로운 구성 컨텍스트가 로딩된다. 내부 구성 컨트롤러(33)는 제어 워드(10)의 고정부(12)에 기초해서 우측 구성 컨텍스트의 선택을 다룬다. 제어 워드(10)의 고정부(12)가 많은 사이클 동안 변하지 않고 남아 있기 때문에, 구성 메모리 컨텍스트의 재로딩과 관련된 잠재적인 재구성 시간의 단점이 크게 중요하지 않다.
재구성 가능 레지스터 파일(31)이 표준 제어 워드를 사용하도록 배열되면, 구성 컨텍스트가 여기에 적용되어야 한다.
재구성 가능한 레지스터 파일(31)은 구성 메모리(32) 내의 비트 상태에 기초해서 제어되는 구성 가능한 로직 어레이(34)를 더 포함한다. 따라서, 구성 가능한 인터페이스(35)는 필요한 입력, 출력 및/또는 제어 워드를 포함하도록 구성될 수 있다. 따라서, 기능 유닛으로의 접속이 프로그래밍될 수 있을 뿐만 아니라, 예컨대 레지스터 파일(21)의 깊이도 프로그래밍될 수 있다. 또한, FIFO(First-In-First-Out) 및 스택과 같은 특정 레지스터 파일 아키텍쳐의 구현도 재구성 가능 로직에서 가능하다. FIFO 및 스택과 같은 구조체에 필요한 간단한 어드레싱 방안으로 인해서, 레지스터 파일을 어드레싱하는 데 필요한 제어 워드의 표준부(11)의 크기는 상당히 감소될 수 있다.
도 8a는 데이터 경로를 제어하는 프로세서 컨트롤러(40)를 구비한 제 2 바람직한 실시예에 따른 프로세서 아키텍쳐를 도시하며, 이 데이터 경로는 프로세서 데이터 경로(41) 및 FPGA 블록(31)을 재구성 가능 하드웨어로서 포함하고 있다. FPGA 블록(31)은 ASU(application specific unit) 및 관련 레지스터 파일(RF)로 이루어진 회로를 구현하도록 배치된다. ASU는 애플리케이션의 서로 다른 루프 내에서 사용될 수 있도록 충분히 융통성을 가지고 만들어진다.
도 8a에 도시된 경우에서, ASU 및 레지스터 파일(RF)은 애플리케이션의 중요한 루프를 가속하도록 배치되며, 그 아키텍쳐는 FPGA 블록(31)이 모든 중요한 루프에서 사용되기에 충분하도록 융통성이 있다. 서로 다른 루프는 ASU가 서로 다른 동작을 수행하거나 관련 레지스터 파일(RF)의 서로 다른 레지스터를 어드레싱할 것을 요구한다. 이러한 융통성을 가능하게 하기 위해서, 관련 레지스터 파일(RF)의 포트 및 ASU는 프로세서 데이터 경로(41)에서 발행되는 인스트럭션 및 제어 워드의 비트에 의해 제어된다. 도 8a에서, 관련 레지스트 파일(RF)로의 판독 어드레스, 관련 레지스터 파일로의 기록 어드레스 및 ASU용 op코드를 각각 제공하는 데 12개의 제어 비트가 필요하다.
그러나, 많은 이들 제어 파라미터는 특정 루프 내에서는 변하지 않을 것이다. 따라서, 특정 루프 또는 다른 인스트럭션 시퀀스에 대해서, FPGA 블록(31)으로 매핑된 회로를 제어하는 데 인스트럭션 워드의 12개의 제어 비트를 제공할 필요는 없다. 따라서, 인스트럭션 워드 폭이 감소되어서 인스트럭션 메모리를 절감할 수 있다.
도 8b는 루프의 제어 워드의 루프 불변부가 호이스트될 때의 FPGA 블록(31)의 구성을 도시한다. 특히, 특정 루프 내에서 ASU 및 관련 레지스터 파일(RF) 사이의 6개의 접속은 결코 변하지 않으므로, 이들 6개의 레지스터가 분명하게 어드레싱될 필요는 없다. 이는 판독 어드레스의 폭을 3개에서 1개로 감소시킨다. 또한, 각각의 op코드의 특정 비트가 그 루프에서 여분이여서, FPGA 구성 자체에서 배선될 수 있도록 ASU의 동작의 서브셋만이 특정 루프에서 필요하다. 결과적으로, 인스트럭션 워드에서 총 7개의 비트(3개의 기록 어드레스 비트, 1개의 판독 비트, 3개의op코드 비트)가 특정 루프 내의 FPGA 블록(31)을 제어하는 데 필요하다.
FPGA 블록(31)이 융통성이 있기 때문에, 여기에 매핑된 다양한 하드웨어 구조가 감소된 제어 비트의 수를 적절하게 해석하도록 재구성될 수 있다. 도 8b에서, 예컨대 생성된 관련 레지스터 파일(RF)의 레지스터와 ASU 사이의 점대점 접속(6개의 대응 화살표로 표시된), 관련 레지스터 파일(RF)의 어드레스 디코더 멀티플렉서 및 ASU의 내부 구조는 더 작은 3비트 op코드를 적절하게 해석하도록 변화된다. 잠재적으로, ASU 자체는 소프트 회로 중 주어진 루프 내에서 수행되지 않을 동작에 대응하는 부분을 폐기함으로써, 더 작아질 수 있다.
따라서, 일반적인 방안은 FPGA 블록(31)을 제어하는 데 사용될 수 있는 인스트럭션 워드의 비트의 수를 제한하는 것으로, 이로써 인스트럭션 메모리를 절감한다. 이러한 감소에도 불구하고, FPGA 블록(31)은 호이스팅 개념을 사용함으로써, 애플리케이션 내의 다수의 서로 다른 중요 루프에 의해 사용될 수 있다.
다른 일반적인 방안은 애플리케이션의 중요 루프가 가장 큰 루프 불변부를 갖고, 호이스팅으로부터 많은 이득을 취할 수 있는지 조사하는 것이다. 이들 루프는 FPGA 블록(31)과 같은 재구성가능 하드웨어 유닛에 매핑하도록 선택되며, 이는 프로세서 데이터 경로(41)의 나머지 부분의 고정 배선된 유닛 및 레지스터 파일로 매핑되는 대신에 호이스팅을 이용할 수 있다.
본 발명이 여기 설명되는 바람직한 실시예로 제한되는 것이 아니라, 데이터 처리 프로그램의 적어도 2개의 인스트럭션의 시퀀스가 데이터 경로를 제어하는 데 사용되는 코드 워드의 시퀀스로 디코딩되는 어떤 프로세서 환경에서도 사용될 수있다. 특히 제안된 호이스팅 개념은 가변부와 불변부를 가진 코드 워드 시퀀스로 디코딩된 다른 인스트럭션 시퀀스에 대해서 사용될 수 있다. 바람직한 실시예는 첨부된 청구 범위 내에서 변할 수 있다.

Claims (26)

  1. 데이터 처리 프로그램의 적어도 2개의 인스트럭션의 시퀀스를 데이터 경로를 제어하는 데 사용되는 코드 워드의 시퀀스로 디코딩하는 방법에 있어서,
    a) 상기 코드 워드의 시퀀스에서 변하지 않는 불변 코드 워드부를 분리하는 단계와,
    b) 상기 불변 코드 워드부를 사용해서 상기 코드 워드의 시퀀스 동안 상기 데이터 경로의 일부를 고정하도록 구성하는(configure) 단계
    를 포함하는 인스트럭션 시퀀스 디코딩 방법.
  2. 제 1 항에 있어서,
    상기 분리된 불변 코드 워드부를 사용해서 전용 메모리를 어드레싱하는 단계
    를 더 포함하는 인스트럭션 시퀀스 디코딩 방법.
  3. 제 2 항에 있어서,
    상기 전용 메모리를 룩업 테이블 또는 컨텐츠 어드레싱 가능 메모리로서 구현하는 단계
    를 더 포함하는 인스트럭션 시퀀스 디코딩 방법.
  4. 제 2 항 또는 제 3 항에 있어서,
    상기 전용 메모리를 상기 데이터 경로의 복수의 기능 유닛에 공유시키는 단계
    를 더 포함하는 인스트럭션 시퀀스 디코딩 방법.
  5. 제 2 항 내지 제 4 항 중 어느 한 항에 이어서,
    상기 데이터 경로의 각각의 기능 유닛에 할당된 복수의 전용 메모리를 제공하는 단계
    를 더 포함하는 인스트럭션 시퀀스 디코딩 방법.
  6. 제 2 항 내지 제 5 항 중 어느 한 항에 있어서,
    상기 불변 코드 워드부를 새로운 코드 워드로 확장하는 단계와,
    상기 새로운 코드 워드를 사용해서 상기 데이터 경로를 제어하는 단계
    를 더 포함하는 인스트럭션 시퀀스 디코딩 방법.
  7. 제 6 항에 있어서,
    상기 코드 워드의 시퀀스와 동일한 접속부를 사용해서, 상기 새로운 코드 워드에 의해서 상기 데이터 경로를 제어하는 단계
    를 더 포함하는 인스트럭션 시퀀스 디코딩 방법.
  8. 제 7 항에 있어서,
    멀티플렉싱 기능부를 통해서 상기 같은 접속부를 선택하는 단계
    를 더 포함하는 인스트럭션 시퀀스 디코딩 방법.
  9. 제 2 항 내지 제 8 항 중 어느 한 항에 있어서,
    구성 마스크를 사용해서 제어 워드 내의 상기 불변 코드 워드부의 비트 위치를 명시하는 단계
    를 더 포함하는 인스트럭션 시퀀스 디코딩 방법.
  10. 제 9 항에 있어서,
    상기 구성 마스크는 인코딩되는
    인스트럭션 시퀀스 디코딩 방법.
  11. 제 10 항에 있어서,
    상기 코드 워드의 비트를 제어 레지스터의 적절한 위치로 전송하도록 상기 구성 마스크에 기초해서 제어 워드 로딩 기능부를 제어하는 단계
    를 더 포함하는 인스트럭션 시퀀스 디코딩 방법.
  12. 제 10 항 또는 제 11 항에 있어서,
    상기 구성 마스크는 2진 패턴인
    인스트럭션 시퀀스 디코딩 방법.
  13. 제 12 항에 있어서,
    상기 구성 마스크를 사용해서 상기 제어 레지스터로의 접속을 위해 스위칭 신호를 생성하는 단계
    를 더 포함하는 인스트럭션 시퀀스 디코딩 방법.
  14. 제 2 항 내지 제 13 항 중 어느 한 항에 있어서,
    인스트럭션 레지스터의 크기에 대응해서 상기 전용 메모리의 크기를 선택하는 단계
    를 더 포함하는 인스트럭션 시퀀스 디코딩 방법.
  15. 제 1 항에 있어서,
    재구성가능 하드웨어를 사용해서 상기 데이터 경로의 상기 부분을 구성하는 단계
    를 더 포함하는 인스트럭션 시퀀스 디코딩 방법.
  16. 제 15 항에 있어서,
    상기 불변 코드 워드부에 기초해서 구성 컨텍스트를 선택하는 단계
    를 더 포함하는 인스트럭션 시퀀스 디코딩 방법.
  17. 제 15 항 또는 제 16 항에 있어서,
    상기 코드 워드 시퀀스가 요구하는 구성에 따라서 상기 재구성가능 하드웨어를 제어하는 제어 비트의 수를 감소시키는 단계
    를 더 포함하는 인스트럭션 시퀀스 디코딩 방법.
  18. 제 15 항 내지 제 17 항 중 어느 한 항에 있어서,
    적어도 2개의 인스트럭션의 상기 시퀀스로부터 가장 긴 불변 코드 워드부를 가진 인스트럭션을 선택하는 단계와,
    상기 선택된 인스트럭션을 사용하여 상기 재구성가능 하드웨어에 매핑하는 단계
    를 더 포함하는 인스트럭션 시퀀스 디코딩 방법.
  19. 제 1 항 내지 제 18 항 중 어느 한 항에 있어서,
    상기 적어도 2개의 인스트럭션의 시퀀스가 상기 데이터 처리 프로그램의 루프 바디를 형성하는
    인스트럭션 시퀀스 디코딩 방법.
  20. 데이터 처리 프로그램의 적어도 2개의 인스트럭션의 시퀀스를 데이터 경로를 제어하는 데 사용되는 코드 워드의 시퀀스로 디코딩하는 장치에 있어서,
    a) 상기 코드 워드의 시퀀스에서 변하지 않는 불변 코드 워드부를 별도로 생성하는 생성 수단과,
    b) 상기 불변 코드 워드부를 수신해서, 상기 코드 워드의 시퀀스 동안 상기데이터 경로의 일부를 고정하도록 구성하는 구성 수단
    을 포함하는 인스트럭션 시퀀스 디코딩 장치.
  21. 제 20 항에 있어서,
    상기 구성 수단은 상기 불변 코드 워드부에 대응하는 새로운 제어 워드를 저장하는 전용 메모리 수단을 포함하는
    인스트럭션 시퀀스 디코딩 장치.
  22. 제 21 항에 있어서,
    상기 구성 수단은 상기 전용 메모리 수단으로부터의 상기 새로운 제어 워드를 제어 신호로 디코딩해서 상기 데이터 경로를 제어하는 디코딩 수단을 더 포함하는
    인스트럭션 시퀀스 디코딩 장치.
  23. 제 20 항에 있어서,
    상기 코드 워드의 시퀀스의 가변 코드부 내의 비트를 제어 레지스터의 적절한 비트 위치로 로딩하도록 제어 워드 로딩 수단을 제어하는 구성 마스크 레지스터
    를 더 포함하는 인스트럭션 시퀀스 디코딩 장치.
  24. 제 23 항에 있어서,
    상기 제어 워드 로딩 수단은 프로그래밍 가능 교차점 스위치(a programmable cross-point switch)를 포함하는
    인스트럭션 시퀀스 디코딩 장치.
  25. 제 24 항에 있어서,
    상기 제어 워드 로딩 수단은 상기 프로그래밍 가능 교차점 스위치와 상기 구성 마스크 레지스터에 접속된 마스크 해석 로직부(a mask interpretation logic)를 더 포함하는
    인스트럭션 시퀀스 디코딩 장치.
  26. 제 20 항에 있어서,
    상기 구성 수단은 상기 불변 코드 워드부에 기초해서 구성된 재구성 가능 하드웨어 수단을 포함하는
    인스트럭션 시퀀스 디코딩 장치.
KR10-2004-7018661A 2002-05-22 2003-04-25 인스트럭션 시퀀스 디코딩 방법 및 장치 KR20040111650A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP02077020 2002-05-22
EP02077020.2 2002-05-22
PCT/IB2003/001849 WO2003098431A2 (en) 2002-05-22 2003-04-25 Method and apparatus for decoding instruction sequences

Publications (1)

Publication Number Publication Date
KR20040111650A true KR20040111650A (ko) 2004-12-31

Family

ID=29433173

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2004-7018661A KR20040111650A (ko) 2002-05-22 2003-04-25 인스트럭션 시퀀스 디코딩 방법 및 장치

Country Status (8)

Country Link
US (1) US20060059475A1 (ko)
EP (1) EP1509840B1 (ko)
JP (1) JP3924577B2 (ko)
KR (1) KR20040111650A (ko)
CN (1) CN1324458C (ko)
AU (1) AU2003223057A1 (ko)
TW (1) TW200404256A (ko)
WO (1) WO2003098431A2 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE602005018736D1 (de) * 2004-12-22 2010-02-25 Ericsson Telefon Ab L M Wasserzeichenmarkierung eines Computerprogrammcodes mittels äquivalenter mathematischer Ausdrücke
US9477467B2 (en) 2013-03-30 2016-10-25 Intel Corporation Processors, methods, and systems to implement partial register accesses with masked full register accesses
US9904549B2 (en) * 2015-12-26 2018-02-27 Intel Corporation Method and apparatus for loop-invariant instruction detection and elimination
US10229470B2 (en) * 2016-08-05 2019-03-12 Intel IP Corporation Mechanism to accelerate graphics workloads in a multi-core computing architecture
US11044099B2 (en) * 2018-12-28 2021-06-22 Intel Corporation Technologies for providing certified telemetry data indicative of resources utilizations
CN114489792B (zh) * 2021-03-25 2022-10-11 沐曦集成电路(上海)有限公司 处理器装置及其指令执行方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01284926A (ja) * 1988-05-12 1989-11-16 Fujitsu Ltd 演算装置の命令読出方式
US5941986A (en) * 1993-04-30 1999-08-24 Intel Corporation Micro-code sequencer with branch-taken and branch-not-taken micro-code vectors sharing common address to eliminate taken branch penalties
JPH09198254A (ja) * 1996-01-17 1997-07-31 Nec Ic Microcomput Syst Ltd コンパイラの最適化装置及びその方法
US5812856A (en) * 1997-06-23 1998-09-22 Motorola, Inc. Efficient ROM and PLA recoding to save chip area
US6198691B1 (en) * 1997-07-03 2001-03-06 Microchip Technology Incorporated Force page paging scheme for microcontrollers of various sizes using data random access memory
US6044429A (en) * 1997-07-10 2000-03-28 Micron Technology, Inc. Method and apparatus for collision-free data transfers in a memory device with selectable data or address paths
GB2359641B (en) * 2000-02-25 2002-02-13 Siroyan Ltd Mapping circuitry and method

Also Published As

Publication number Publication date
CN1656444A (zh) 2005-08-17
AU2003223057A8 (en) 2003-12-02
WO2003098431A3 (en) 2004-03-11
JP2005526322A (ja) 2005-09-02
WO2003098431A2 (en) 2003-11-27
CN1324458C (zh) 2007-07-04
TW200404256A (en) 2004-03-16
EP1509840A2 (en) 2005-03-02
AU2003223057A1 (en) 2003-12-02
US20060059475A1 (en) 2006-03-16
EP1509840B1 (en) 2018-08-08
JP3924577B2 (ja) 2007-06-06

Similar Documents

Publication Publication Date Title
US5925124A (en) Dynamic conversion between different instruction codes by recombination of instruction elements
US7249351B1 (en) System and method for preparing software for execution in a dynamically configurable hardware environment
JP4104538B2 (ja) リコンフィギュラブル回路、リコンフィギュラブル回路を備えた処理装置、リコンフィギュラブル回路における論理回路の機能決定方法、回路生成方法および回路
US6457116B1 (en) Method and apparatus for controlling contexts of multiple context processing elements in a network of multiple context processing elements
US7266672B2 (en) Method and apparatus for retiming in a network of multiple context processing elements
US6895452B1 (en) Tightly coupled and scalable memory and execution unit architecture
US5933855A (en) Shared, reconfigurable memory architectures for digital signal processing
JP4484756B2 (ja) リコンフィギュラブル回路および処理装置
US20060245225A1 (en) Reconfigurable elements
JP2004516728A (ja) 設定可能な機能ユニットを備えるデータ処理装置
WO2006129722A1 (ja) 再構成可能な装置
WO2006046711A1 (ja) 再構成可能な論理回路を有するデータ処理装置
JP2010171994A (ja) データ処理装置
WO2002003592A2 (en) System and method for executing hybridized code on a dynamically configurable hardware environment
JP2006236106A (ja) データ処理装置及びデータ処理方法
US20190213289A1 (en) Method and apparatus for implementing an application aware system on a programmable logic device
KR20040111650A (ko) 인스트럭션 시퀀스 디코딩 방법 및 장치
JP2006302132A (ja) 信号処理装置及び再構成可能論理回路装置及び再構成可能順序回路
JP2004334429A (ja) 論理回路及びその論理回路上で実行するプログラム
EP0862111B1 (en) Dynamic conversion between different instruction codes by recombination of instruction elements
JP4562679B2 (ja) データフローグラフ生成装置
Rullmann et al. An integrated tool flow to realize runtime-reconfigurable applications on a new class of partial multi-context FPGAs
JP2005277673A (ja) 処理装置
Chattopadhyay et al. rASIP Design Space
JP2008090869A (ja) 処理装置

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid