KR20000064518A - X86코어와dsp코어를가져x86명령을dsp명령에맵하는dsp디코더를포함하는중앙처리장치 - Google Patents

X86코어와dsp코어를가져x86명령을dsp명령에맵하는dsp디코더를포함하는중앙처리장치 Download PDF

Info

Publication number
KR20000064518A
KR20000064518A KR1019980705419A KR19980705419A KR20000064518A KR 20000064518 A KR20000064518 A KR 20000064518A KR 1019980705419 A KR1019980705419 A KR 1019980705419A KR 19980705419 A KR19980705419 A KR 19980705419A KR 20000064518 A KR20000064518 A KR 20000064518A
Authority
KR
South Korea
Prior art keywords
dsp
digital signal
signal processing
core
instructions
Prior art date
Application number
KR1019980705419A
Other languages
English (en)
Other versions
KR100464101B1 (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 KR20000064518A publication Critical patent/KR20000064518A/ko
Application granted granted Critical
Publication of KR100464101B1 publication Critical patent/KR100464101B1/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
    • G06F9/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7839Architectures of general purpose stored program computers comprising a single central processing unit with memory
    • G06F15/7842Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers)
    • G06F15/7857Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers) using interleaved memory
    • 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/3017Runtime instruction translation, e.g. macros
    • 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/3017Runtime instruction translation, e.g. macros
    • G06F9/30174Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
    • 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
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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
    • G06F9/30196Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
    • 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/382Pipelined decoding, e.g. using predecoding
    • 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
    • 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/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • 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/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • 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/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
    • 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)
  • Computer Hardware Design (AREA)
  • Advance Control (AREA)

Abstract

본 발명은 X86 코어와 같은 범용 CPU 구성요소와 DSP 코어를 포함하는 중앙처리장치(CPU) 또는 마이크로프로세서에 관한 것이다. 상기 CPU는 X86 연산코드순서를 검사하고 DSP 기능이 수행되는지를 판단하는 지능 DSP기능 디코더 또는 전처리기를 포함한다. DSP 기능이 수행된다고 DSP기능 디코더가 판단하면, DSP기능 디코더는 연산코드를 DSP 코어에 제공되는 DSP 마크로명령으로 변환하거나, DSP 마크로명령에 맵한다. DSP 코어는 마크로명령에 대응하여 원하는 DSP기능을 실행하기위해 DSP 명령을 수행한다. DSP 코어는 더적은 수의 명령과 감소된 클럭사이클을 사용하여 DSP 기능을 수행함으로서 시스템의 성능을 향상시킨다. 명령캐시 또는 명령메모리의 X86 연산코드가 DSP기능을 수행하지 않을 때, 종래의 컴퓨터시스템에서와 같이 연산코드가 X86 코어에 전달된다. X86 코어와 DSP 코어는 서로 연결되어있어, 동기목적을 위해 데이터와 타이밍신호를 송수신한다. 따라서, DSP 코어는 X86코어에서 수학적 연산기능을 오프로드시킴으로서 시스템의 성능을 향상시킨다. 또한 DSP 코어는 X86 코어와 동시에 작동하여 더 나은 성능의 이득을 제공한다. 본 발명은 X86코어와 DSP코어를 포함하는 본 발명에 따른 X86 CPU 또는 CPU 에서 명백하게 작용하는 코드를 생성한다. 따라서 본 발명은 기존의 소프트웨어와 호환이 가능하다.

Description

X86 코어와 DSP 코어를 가져 X86 명령을 DSP 명령에 맵하는 DSP디코더를 포함하는 중앙처리장치
퍼스널 컴퓨터시스템과 일반목적의 마이크로프로세서는 원래 워드프로세싱, 스프레드시트 등의 사무목적으로 개발되었으나, 최근 컴퓨터시스템은 비디오와 오디오, 비디오캡쳐와 플레이백, 전화통신, 음성인식과 합성, 통신등의 멀티미디어기능을 포함하는 다양한 실시간 DSP에 관한 응용들을 처리하는데 이용되고 있다.
그러나, 문제는 사무목적으로 설계된 마이크로프로세서는 실시간요구와 멀티미디어와 통신의 응용과 같은 현대 DSP에 관한 응용에서 수학적 연산요구에 적합하지않다는 점이다. 예를 들어, 인텔의 X86 마이크로프로세서는 정수에 의한 연산과 메모리관리동작을 위해 설계되어, DSP형 기능을 효율적으로 수행할수 없다.
퍼스널컴퓨터 시스템은 실시간과 멀티미디어 가능시스템을 위해서 발전됨에 따라, 일반적으로 쓰이는 CPU 는 더욱 수학적기능이 강한 DSP기능을 수행하도록 요구되어왔다. 따라서, 현재 많은 컴퓨터시스템들이 복잡한 수학적기능을 수행에 전용되는 한 개이상의 디지털신호프로세서를 구비하고 있다.
컴퓨터시스템의 구성에 있어서 최근의 경향은 원시신호처리(NSP:Native Signal Processing)에 관한 것이다. 원래 원시신호처리(NSP)는 DSP의 일정한 기능을 오프로드하여, 이러한 기능을 메인 CPU 또는 범용 CPU에서 수행하기위한 방법으로 인텔사에 의해서 도입되었다. 상기 방법은 범용 CPU의 동작과 클럭속도가 증가함에 따라 범용의 CPU 가 이전에 DSP 에 의해 수행된 다양한 기능을 수행할수있다고 가정한다. 따라서, 마이크로 프로세서산업의 경향의 하나로 고속으로 작동하고 더욱 강력한 부동소수점처리기등의 DSP성능을 가진 CPU 를 제공하기위해 노력하고 있다. 또 다른 경향은 DSP 제조업자들이 고속으로 작동될뿐만 아니라, 메모리관리기능과 같은 CPU 성능을 대행할 수 있는 DSP를 제공하기위해 노력을 기울이고 있다.
디지털신호 처리기는 본질적으로 범용 마이크로프로세서로서, 주로 마이크로프로세서와 관련이 없는 속도와 효율로 수학적연산기능을 실행하기 위한 특별한 하드웨어를 포함한다. 현재 컴퓨터시스템의 구성에 있어서 DSP는 공동프로세서로서 사용되고, 시스템의 범용 CPU 와 연결되어 작동한다. 예를 들어, 현재 컴퓨터시스템은 메인 CPU 의 기능을 하는 범용 CPU 와 전용 DSP 를 갖는 한 개이상의 멀티미디어 또는 통신확장카드를 포함한다. 상기 CPU 는 수학적기능을 디지털신호프로세서로 오프로드하여 시스템의 효율성을 향상시킨다.
디지털신호프로세서는 파이프라인방식의 복잡한 수학적알고리듬을 실행하는 하드웨어곱셈기에 연결된 한 개이상의 수학연산부(ALU)를 갖는 실행부를 포함한다. 명령세트는 DSP형 명령과 소수의 DSP 기능을 갖지않는 명령으로 이루어져있다.
상기 DSP는 일반적으로 수학적 알고리듬을 위해 최적화되고, 이러한 알고리듬에는 상관관계, 회선, 유한임펄스응답필터(FIR), 무한임펄스응답필터(IIR), 고속프리에변환(FFT), 행렬계산, 내적등이 있다. 이러한 수학적 알고리듬의 실행함에 있어서 일반적으로 시스템 산수/곱셈 연산의 긴 순서절차를 갖는다. 이러한 동작은 결정명령에 의한 다양한 이유로 인해 중단되는 경우가 있다. 일반적으로 DSP 순서는 한정된 시간의 70% 에서 90% 실행되는 매우 작은 명령세트의 모사이다. 나머지 10% 에서 30%의 명령은 본래 부울(Boolean)/결정동작 (또는 일반 데이터프로세싱) 이다.
범용 CPU 는 실행부, 메모리관리부, 부동소수점처리부, 또한 다른 논리로 구성되어 있다. 범용 CPU 의 태스크는 코드를 실행하고 메모리의 데이터동작을 수행하여 연산플랫폼을 관리하는 것이다. 일반적으로 범용 CPU의 구조는 부울/관리/데이터조작결정동작을 하도록 설계되어있다. 그러나, 이러한 수학적기능은 복잡한 DSP 수학적연산에 잘 적합하지 않는다. 따라서 범용 CPU 는 기본적인 DSP 기능을 위해 많은 수의 연산코드 또는 명령을 실행해야한다.
따라서, 컴퓨터시스템과 CPU 구조는 범용 CPU 를 포함하고, 증대된 수행능력을 가지고 DSP 수학적연산기능을 수행하는 것이 요구된다. 또한 CPU 구조는 범용 CPU 가 모든 수학적 연산을 실행한다고 가정하는 현존하는 기존의 소프트웨어응용과의 호환성이 요구된다. 더나아가 새로운 CPU 에서는 현존하는 소프트웨어응용을 위해 증가된 수학적연산동작을 제공하도록 요구되어진다.
퍼스널 컴퓨터시스템에서 대중적으로 쓰이는 마이크로프로세서중의 하나는 X86 계통의 마이크로프로세서이다. 이 X86 계통 마이크로프로세서에는 인텔사의 8088, 8086, 80186, 80286, 80386, i486, 펜티엄, P6 마이크로프로세서등이 있다. 또한 X86 계통의 마이크로프로세서는 X86 호환가능프로세서를 포함하고, 이러한 프로세서에는 Advanced Micro Devices사의 4486, K5 프로세서, Cyrix사의 M1프로세서, NextGen사의 NextGen 5x86, 6x86 프로세서등이 있다. 상기 X86 계통의 마이크로프로세서는 원래 사무에 응용하기 위해 설계되고 개발되었다. 일반적으로, X86 계통 마이크로프로세서의 명령어세트는 새로운 멀티미디어와 통신응용을 위한 수학적 또는 DSP 기능을 충분히 갖추고 있지않는다. 따라서, 현재의 X86 프로세서 보다 더 효율적으로 DSP 기능을 실행하나, X86 프로세서를 위한 추가적 연산코드를 필요로 하지않는 새로운 X86 CPU 구조가 요구되고 있다.
[발명이이루고자하는 기술적과제]
따라서, 본 발명은 X86 코어와 같은 범용 CPU 구성장치와 DSP 코어를 포함하는 CPU 또는 마이크로프로세서를 제공하는 것이다. 상기 CPU는 명령 또는 연산코드(X86연산코드)의 순서를 검사하고, DSP 기능이 실행되는지를 판단하는 지능 DSP 디코더 또는 전처리기를 포함한다. 만약 DSP 기능디코더가 DSP 기능이 수행된다고 판단할 때, 상기 디코더는 명령순서를 DSP 마크로명령 또는 DSP 의 기능식별자로의 변환 또는 맵한다. 상기 DSP 코어는 DSP 마크로 또는 기능식별자가 명령한 특정한 DSP 기능을 실행하기 위해 하나이상의 DSP 명령을 수행한다. DSP 코어는 범용 CPU 코어에 의해 수행되는 다른 동작과 동시에 DSP 기능을 수행한다. 또한 DSP 코어는 적은수의 명령어를 사용하고 클럭사이클의 수가 감소된 상태에서도 DSP 기능을 수행함으로서, 시스템의 성능을 향상시킨다.
본 발명의 실시예에 따른 CPU 는 시스템의 메모리로부터 마이크로프로세서의 명령 또는 연산코드를 입력받고, CPU 의 동작을 위해 상기 연산코드를 저장하는 명령메모리 또는 명령캐시를 포함한다. 또한, CPU 는 DSP 기능디코더 또는 명령캐시의 명령순서를 분석하고, DSP 기능이 명령순서에 의해서 실행되거나 나타나는 시기를 지능적으로 판단하는 기능 전처리기(명령순서 전처리기)를 포함한다. 상기 기능 전처리기는 DSP 기능을 실행하는 상기 명령캐시의 명령순서를 앞서서 주사한다.
실시예에서 상기 기능 전처리기는 DSP 기능을 실행하는 명령순서를 표시하는 다수의 비트패턴을 저장하는 패턴인식검출기를 포함한다. 상기 패턴인식검출기는 각 패턴을 명령순서와 비교하여, 패턴이 명령순서와 충분히 매치하는지 결정한다. 실시예에서 패턴과 명령순서가 90% 이상 매치할 때 매치동작이 일어난다. 다른 실시예에서는 기능 전처리기는 룩업테이블을 포함하고 이러한 룩업테이블은 DSP 기능을 실행하는 명령순서를 지시하는 다수의 비트패턴 입력을 저장한다. 이때, 기눙 전처리기는 각각의 패턴입력을 명령순서와 비교하여 입력이 명령순서와 정확히 매치하는지를 판단한다. 또한 다른 실시예에서는 룩업테이블과 패턴인식검출기의 두단계의 판단을 할 수 있다.
본 발명에 따른 실시예에서 기능 전처리기가 회선, 상관관계, 유한임펄스응답필터(FIR), 무한임펄스응답필터(IIR), 고속프리에변환(FFT), 행렬계산, 내적등의 DSP 기능을 수행하는 X86 명령순서를 검출한다.
만약 명령캐시 또는 명령메모리안의 명령이 DSP 기능을 실행하지않으면, 범용코어 또는 X86 코어, 또는 X86 실행부에 공급되고, 이러한 동작은 종래의 컴퓨터시스템에서도 일어난다. 따라서, DSP 기능을 나타내지않는 X86 코어는 X86 명령을 실행한다.
기능 전처리기 DSP 기능을 실행하는 X86 명령의 순서를 검출할 때, 기능 전처리기는 X86 명령의 순서를 디코딩하고, X86 명령의 순서에 의해 지시되는 기능을 나타내는 단일 마크로 또는 기능식별자를 생성한다. 또한, 상기 기능 전처리기는 X86 명령순서의 정보를 검사하고, DSP 동작에 사용되는 데이터값을 나타내는 파라미터를 생성한다. 이때 기능 전처리기는 기능식별자와 다양한 파라미터를 DSP 코어 또는 DSP 실행부에 공급한다.
DSP 코어는 마크로 또는 기능식별자와 각각의 파라미터를 입력받아, 마크로를 DSP 기능을 실행하는 DSP 마이크로코드순서에 인덱스로 사용한다. 상기 DSP 코어 또한 DSP 기능수행에 있어서 파라미터를 사용한다. DSP 코어는 이러한 DSP 수학적연산동작을 위해 최적화되기 때문에, 일반적으로 원하는 기능을 명령어와 클럭사이클이 감소된 상태에서 수행할 수 있다.
DSP 코어는 범용 CPU 와 동시에 동작을 실행한다. 따라서, 데이터의 독립성이 있다 가정하여, X86 연산코드는 DSP 기능과 함께 CPU 코어 또는 X86 코어에 의해서 잠재적으로 실행되어진다. 범용의 코어과 DSP 코어는 서로 연결되어있고, 동기 목적을 위해 데이터와 타이밍신호를 전달한다. 또한 두 코어의 정보의 전달을 위해서 캐시 또는 버퍼가 상기 범용 코어와 DSP 코어사이에 존재한다.
따라서, CPU 는 종래 시스템에서도 X86 명령을 실행한다. 그러나, DSP 기능을 수행하는 명령순서는, 기능 전처리기가 지능적으로 명령순서를 검출하고 해당하는 마크로와 파라미터를 DSP 코어에 공급한다. 따라서, DSP 코어는 범용 코어로 부터 수학적 기능을 오프로드시킴으로서 시스템의 운영을 향상시킨다. 또한 DSP 코어는 범용 코어와 함께 동작하여, 시스템운영의 더 많은 이익을 제공한다.
따라서, 본 발명은 DSP 동작을 수행하는 DSP 코어를 포함하는 범용 CPU 로 구성된다. 상기 CPU 는 명령순서를 검사하여 DSP 코어에 의한 동작실행을 위하여 DSP 기능을 수행하는 명령순서를 DSP 마크로명령으로 변환하거나 마크로명령과 맵하는 지능 DSP 기능디코더 또한 전처리기를 포함한다. 상기 DSP 코어는 원하는 DSP 기능을 실행하기위해 DSP 마크로명령을 이용한다. DSP 코어는 적은수의 명령과 클럭사이클로 DSP 기능을 실행하여 시스템기능 향상시킨다. 따라서, 본 발명에 따른 CPU 는 X86 연산코드를 추가하지않고 X86 논리보다 더욱 효율적으로 DSP 기능을 실행할 수 있다. 또한 본 발명에 따른 CPU 는 X86-CPU 에서 동작하는 코드를 실행함으로서, 현재 사용되고 있는 소프트웨어와 호환이 가능하다. 또한, 본 발명에 따른 CPU 을 위해 쓰인 코드는 X86-CPU 에 적합하게 작동한다.
본 발명은 범용코어와 DSP 코어를 포함하는 컴퓨터시스템인 CPU 또는 마이크로프로세서에 관한 것으로서, CPU는 DSP타입 기능을 실행하는데 이용되는 일반적인 연산코드 순서를 검사하고, 이러한 연산코드를 DSP 코어의 의한 실행을 위해 해당 DSP 마크로로 변환하는 DSP 디코더를 포함한다.
도 1은 본 발명에 따른 범용 CPU 코어와 DSP 코어를 갖는 CPU 를 포함하는 컴퓨터시스템의 블록도.
도 2는 도 1에 있어서 범용 CPU 코어와 DSP 코어를 포함하고 DSP 기능전처리기를 포함하는 본 발명에 따른 CPU 의 블록도.
도 3은 본 발명에 따른 동작 순서도.
도 4는 도 1의 CPU 의 상세 블록도.
도 5는 도 4의 명령디코드부의 블록도.
도 6은 본 발명의 일 실시예에 따른 기능 전처리기의 블록도.
도 7은 본 발명의 일 실시예에 따른 패턴인식검출기를 포함하는 기능 전처리기의 블록도.
도 8은 도 7의 패턴인식검출기의 동작설명도.
도 9는 본 발명의 일 실시예에 따른 룩업테이블을 포함하는 기능 전처리기의 블록도.
도 10은 도 9의 룩업테이블의 동작설명도.
도 11은 본 발명의 일 실시예에 따른 패턴인식검출기와 룩업테이블을 포함하는 기능 전처리기의 블록도.
[발명의구성및작용]
컴퓨터 시스템 블록도
도 1은 본 발명에 따른 중앙처리장치 CPU 또는 마이크로프로세서(102)를 포함하는 컴퓨터시스템의 블록도를 나타낸다. 도 1의 컴퓨터시스템은 하나의 예이고, 본 발명의 CPU(102)는 컴퓨터시스템에서 다양한 형태로 구체화될 수 있다.
도 1에서와 같이, CPU(102)는 범용 CPU 코어(212)와 DSP 코어(214)를 포함한다. 범용 CPU 코어(212)는 범용 (DSP 기능이 아님) 연산코드를 실행하고, DSP 코어(214)는 DSP 기능을 수행한다. 본 발명에 따른 실시예에서 일반적 CPU 코어(212)는 X86 계통의 마이크로프로세서와 호환가능한 X86 코어이나, PowerPC, DEC Alpha, SunSparc 프로세서계통 등의 어떠한 형태로든지 나타날 수 있다. 아래에 설명될 예에서는 범용 CPU 코어(212)는 편의상 X86 코어가 이용되었다. 범용 CPU 코어(212)는 하나이상의 범용실행부로 구성되고, DSP 코어(214)는 하나이상의 디지털신호처리 실행부로 구성된다.
CPU(102)는 호스트/PCI/캐시 브리지 또는 칩세트(106)와 CPU 로칼버스(104)를 통해 연결되어있다. 칩세트(106)는 인텔사의 Triton 칩세트와 같은 종류가 바람직하다. 제 2 레벨 또는 L2 캐시메모리(도시되어 있지않음)는 칩세트의 캐시제어부에 연결되어있다. 또는 어떠한 프로세서에 있어서는 외부 캐시가 L1 또는 제 1 레벨캐시 일 수 있다. 브리지 또는 칩세트(106)는 주 메모리(110)와 메모리버스 (108)를 통해 연결되어있다. 상기 주 메모리(110)는 사용자가 원하는 대로 DRAM (dynamic random access memory) 또는 EDO (extended data out)메모리 또는 다른 형태의 메모리가 사용될 수 있다.
칩세트(106)는 여러 가지의 주변장치를 포함한다. 이러한 주변장치는 인터럽트시스템, 실시간 클럭 (RTC)과 타이머, DMA (direct memory acces)시스템, ROM/플래쉬 메모리, 전달포트, 진단포트, 명령/상태 레지스터, 휘발성이 아닌 스태틱 랜덤 억세스메모리(NVSRAM)등이 (모두 도시되지 않음) 있다.
상기 호스트/PCI/캐시 브리지 또는 칩세트(106)는 주변장치연결(PCI)버스 (120)와 인터페이스한다. 본 발명에 따른 실시예에서는 PCI 로칼버스가 사용된다. 그러나, VESA(Video Electronics Standards Association) VL 버스와 같은 여러 다른 로칼버스도 사용될 수 있다는 것을 인지하여야한다. 여러 가지 장치들이 PCI 버스(120)와 연결될 수 있다. 도 1에 도시된 실시예에서 비디오/그래프 제어부 또는 어뎁터(170)와 네트워크 인터페이스제어부(140)가 상기 PCI 버스(120)에 연결되어있다. 비디오어뎁터(170)는 비디오모니터(172)와 연결되어있고, 상기 네트워크 인터페이스제어부(140)는 LAN (Local area network)(142)과 연결되어 있다. SCSI (small computer systems interface) 어뎁터(122)는 또한 상기 PCI 버스(120)와 연결되고, CD-ROM 드라이브, 테잎드라이브등의 여러 SCSI 장치들과 연결되어있다. 또한 종래의 기술에서와 같이 다양한 장치들이 PCI 버스(120)와 연결될 수 있다.
또한 확장버스브리지로직(150)도 상기 PCI 버스(120)에 연결되어 있다. 상기 확장버스브리지로직(150)은 확장버스(152)와 인터페이스한다. 확장버스(152)는 ISA (industry standard architecture)버스를 포함하고, AT 버스 또한 EISA (extended industry standard architecture)버스 또한 MCA (MicroChannel architecture)버스로 불린다. 확장버스 메모리(154), 모뎀(156)등의 다양한 장치들이 상기 확장버스(152)에 연결되어있다.
CPU 블록도
도 2는 도 1의 CPU(102)의 구성을 나타내기위한 블록도이다. 도시된바와 같이 CPU(102)는 시스템메모리(110)로부터 명령 또는 연산코드를 입력받는 명령캐시 또는 명령메모리(202)를 포함한다. 기능 전처리기(204)는 상기 명령메모리(202)에 연결되어있고, 명령메모리(202)의 명령순서 또는 연산코드순서를 검사한다. 또한 기능 전처리기(204)는 X86 코어(212) 와 DSP코어(214)에 연결되어있다. 도시한바와 같이 기능 전처리기(204)는 명령 또는 연산코드를 X86코어(212)에 공급하고, DSP코어(214)에는 정보를 공급한다.
상기 X86코어(212)와 DSP코어(214)는 서로 연결되어있고, 데이터와 타이밍신호를 서로 전달한다. CPU(102)는 데이터전달을 용이하게하기위해 X86코어(212)와 DSP코어(214)사이에서 인터페이스하는 한 개이상의 버퍼(미도시)를 포함한다.
도 3 - 순서도
도 3은 본 발명의 동작순서를 설명한 순서도로서, 둘 이상의 스텝이 동시에 동작할 수 있다. 스텝 302 에서 명령메모리는 복수의 X86 명령을 입력받고 저장한다. 복수의 X86 명령은 DSP 기능을 수행하는 하나이상의 명령순서를 포함한다. 스텝 304 에서는 기능 전처리기가 명령메모리(202)의 연산코드 즉 명령순서를 분석하고, 스텝 306 에서 전처리기는 명령의 순서가 DSP 기능을 수행하는지, 즉 명령순서가 DSP 기능을 실행하는지를 지능적으로 판단한다. 본 발명에서는 DSP 기능은 회선, 상관관계, 유한임펄스응답필터, 무한임펄스응답필터, 고속프리에변환, 행렬계산, 내적 등의 하나 이상의 수학적기능을 포함한다. 기능 전처리기(204)의 동작은 도 4의 설명과 함께 더욱 상세하게 설명될 것이다.
명령캐시(202)에 저장된 명령 또는 연산코드가 DSP 기능에 대응하지않을 때, 스텝 308에서 명령은 X86코어(212)에 전달된다. 따라서, 종래 기술의 X86 호환가능한 CPU에서 같이, 이러한 명령 또는 연산코드는 명령캐시(202)에서 X86코어(212)로 직접적으로 전달된다. 스텝 310에서 연산코드가 X86코어(212)로 전달되면, X86코어(212)는 명령을 실행한다.
만약 스텝 306 에서 기능 전처리기(204)가 DSP 기능에 대응하거나 DSP 기능을 수행하는 명령들의 순서를 검출하면, 스텝 312 에서는 기능 전처리기(204)는 명령의 순서를 분석하고 실행될 각각의 DSP 기능을 결정한다. 스텝 312 에서 기능 전처리기(204)는 명령의 순서를 기능식별자라고 불리는 각각의 DSP 마크로식별자에 맵한다. 또한 스텝 312 에서 상기 기능 전처리기(204)가 연산코드의 순서의 정보를 분석하고, 기능식별자을 실행하는 DSP코어 또는 가속기(214)가 사용을 위한 파라미터를 생성한다. 도시된바와 같이, 스텝 314 에서 기능전처리기(204)는 DSP코어(214)에 기능식별자와 파라미터를 공급한다.
DSP코어(214)는 기능식별자와 관련파라미터를 기능 전처리기(204)로 부터 입력받아, 스텝(316)에서는 각 DSP 기능을 수행한다. 본 발병에 따른 실시예에서는 DSP코어(214)는 DSP명령 또는 연산코드의 순서를 수행하기위해, DSP 마이크로코드 RAM 또는 ROM 에 인덱스하는 기능식별자를 이용한다. DSP명령은 DSP가 원하는 DSP 기능을 수행하도록 한다. 또한 DSP코어(214)는 DSP 기능을 수행하는데 각각의 파라미터를 이용한다.
상기에서 설명한바와 같이, X86코어(212)와 DSP코어(214)는 서로 연결되어있고, 데이터와 타이밍신호를 공급한다. 본 발명에 따른 실시예에서는 X86코어(212)과 DSP코어(214)는 병렬로 작동한다. 따라서, X86코어(212)가 연산코드의 하나의 순서를 실행하는 동안, DSP 가속기(214)는 다른 연산코드의 순서에 해당하는 DSP 기능을 수행한다. 따라서, DSP코어(214)는 슬레이브가 아닌 독립실행부 또는 파이프라인으로서 동작한다. 상기 DSP코어(214)와 X86코어(212)는 서로 동작상태를 알리고, 데이터출력결과를 공급하고 또한 데이터 결합/독립상태를 안정시키기 위해 서로 데이터와 타이밍신호를 제공한다.
동작의 설명
아래의 설명은 본 발명에 따라서 X86 연산코드의 스트링 또는 순서가 기능식별자로 전환되고, DSP코어 또는 가속기(214)에 의해서 수행되는 일예를 기술한 것이다. 다음은 단순한 내적연산을 수행하는 X86 연산코드 순서를 나타낸 것이다. 이때, 내적은 20 값을 갖는 벡터이상의 평균을 갖는다.
X86 코드
(간단한 내적)
1 Mov ECX, num_samples;{마크로의 파라미터 설정}
1 Mov ESI, address_1;
1 Mov EDI, address_2;
1 Mov EAX, 0; {벡터인덱스를 초기화}
1 Mov EBX, 0;
4 FLdZ; {곱의 합을 초기화}
Again;
{카운터 갱신}
4 Fld dword ptr[ESI+EAX*4]; {벡터성분을 구함}
1 Inc EAX; {인덱스 갱신}
4 Fld dword ptr[EDI+EAX*4];
1 Inc EBX;
13 FMulP St(1), St; {곱 항을 연산}
7 FAddP St(1), St; {항을 합에 더함}
1 LOOP Again; {항이 있으면 계속함}
상기에서 보는바와 같이, 간단한 내적을 위한 X86 연산코드 명령은 다수의 이동명령, 다음으로 F-load 기능으로 구성되어, 이러한 순서가 여러번 반복된다. 만약 X86 연산코드가 X86코어(212)에 의해서 실행되면, 상기 내적연산을 위한 수행시간은 709 사이클(9+20×35)을 요구한다. 이는 i486 타이밍, 부동소수점처리의 동시실행, 내적연산에 필요한 모든 명령과 데이터를 위한 캐시적중 등의 동작이 행하여진다. 상기 기능 전처리기(204)는 연산코드의 순서를 분석하고, 연산코드가 내적연산을 수행하는지를 검사한다. 이후, 기능 전처리기(204)는 X86 연산코드의 전체순서를 단일 마크로 또는 기능식별자와 파라미터로 변환한다. X86 연산코드 순서에 따라 생성된 마크로 또는 기능식별자는 아래와같다.
마크로의 예
(as it appears in assembler)
Inner_product_simple(
address_1, {데이터 벡터}
address_2, {데이터 벡터}
num_samples); {벡터의 길이}
기능식별자와 파라미터는 DSP코어(214)에 공급된다. 상기 DSP코어(214)는 DSP 기능을 수행하는 DSP 연산코드 또는 명령을 로딩하기위해서 기능 전처리기(204)로부터 공급된 마크로를 이용한다. 본 발명에 따른 실시예에서는 DSP 기능을 수행하는데 사용되는 명령을 포함하는 ROM 로 인덱스되는 DSP코어(214)는 마크로를 이용한다. 이때, 상기와 같은 마크로를 입력받아 DSP코어(214)에 의해서 실행되는 DSP코어 또는 명령은 아래와 같다.
DSP 코드
(간단한 내적)
1 Cntr = num_samples; {마크로에서 파라미터설정}
1 ptr1 = address_1;
1 ptr2 = address_2;
1 MAC = 0; {곱의 합을 초기화}
1 reg1 = *ptr1++; {승수입력레지스터를 프리로드}
reg2 = *ptr2++;
1 Do LOOP until ce; {루프 파라미터를 지정}
1 MAC += reg1 *reg2, {곱의 합을 형성}
reg1 = *ptr1++,
reg2 = *ptr2++;
LOOP: {항이 있으면 계속함}
상기 예에서, DSP코어(214)는 평균적으로 20 값을 갖는 1 벡터이상의 내적을 수행하고, 모두 26 사이클(6+20×1)을 소모한다. 이러한 동작은 명령의 단일사이클동작, 제로오버헤드 루핑작업, 모든 명령과 데이터의 캐시 적중동작을 포함, DSP 타이밍동작을 수행한다.
도 4 - CPU 블록도
도 4 에는 본 발명에 따른 CPU (102)의 내부구성을 더욱 상세하게 나타내고 있다. 본 발명의 이해에 필요하지 않은 CPU(102)의 소자들은 설명에서 제외되었다. CPU(102)는 버스 인터페이스부(440), 명령캐시(202), 데이터캐시(444), 명령디코드부(402), 다수의 실행부(448), 로드/저장부(450), 재배열버퍼(452), 레지스터파일(454), DSP실행부(214)를 포함한다.
버스 인터페이스부(440)는 CPU 버스(104)와 송수신하는 회로소자를 포함하고, 데이터캐시(444), 명령캐시(202)와 인터페이스한다. 명령캐시(202)는 시스템 메모리(110)로 부터 명령을 사전인출(prefetch)하고, CPU(102)가 사용하기위한 명령을 저장한다. 상기 명령디코드부(402)는 기능 전처리기(204)를 포함한다. 상기 기능 전처리기(204)는 명령캐시(202)와 연결되어있다. 또한 명령디코드부(402)는 명령정렬부와 다른 로직을 더 포함한다.
상기 명령디코드부(402)는 다수의 실행부(448), 재배열버퍼(452), 로드/저장부(450)와 연결되어있다. 다수의 실행부는 집합적으로 실행부(448)라고 부른다. 각각의 재배열버퍼(452), 실행부(448), 로드/저장부(450)는 전송버스(458)와 연결되어 수행결과를 전송한다. 상기 로드/저장부(450)는 데이터캐시(444)와 연결되어있고, DSP실행부(214)는 DSP 인출버스(456)를 통해 명령디코드부(402)와 직접 연결되어있다. 이때, 한 개이상의 DSP실행부(214)가 명령디코드부(402)에 연결될 수 있다.
버스 인터페이스부(440)는 마이크로프로세서(102)와 시스템버스(104)에 연결된 소자들사이의 송수신을 위해 구성되어있다. 예를 들어, 명령캐시(202)에 적중실패할 때, 명령인출은 버스 인터페이스부(440)에 의해 주 메모리(110)로부터 전송된다. 또한, 데이터캐시(444)에의 적중실패한 로드/저장부(450)에 의해 수행되는 데이터요구는 버스 인터페이스부(440)에 의해 주 메모리(110)로부터 전송된다. 또한, 데이터캐시(444)는 마이크로프로세서(102)에 의해 변경된 데이터의 캐시라인을 버릴 수 있다. 버스 인터페이스부(440)는 변경된 라인을 주 메모리(110)에 전송한다.
명령캐시(202)는 명령을 저장하는 고속 캐시메모리이다. 이때, 명령캐시(202)는 세트가 조합되거나, 직접 맵되는 구성을 가진다. 명령캐시(202)는 부가적으로 사용되거나, 그렇지않은 분기명령을 예측하는 분기예측장치를 포함한다. 사용되는 분기예측은 명령인출과 실행이 분기명령의 목표어드레스에서 계속되고, 사용되지않은 분기예측은 명령인출과 실행은 분기명령이후의 명령에서 계속된다. 명령은 명령캐시(202)로부터 인출되고, 디코드와 실행부로의 디스패치를 위해 명령디코드부(402)로 이동된다. 또한, 명령캐시(202)는 마크로명령을 예측하고 적절한 동작을 행하기위한 마크로예측장치를 포함한다.
명령디코드부(402) 명령캐시(202)로부터 수신한 명령을 디코드하고, 디코드된 명령을 실행부(448) 또는 로드/저장부(450) 또는 DSP실행부(214)에 공급한다. 명령디코드부(402)는 명령을 실행부(448)에 디스패치한다.
명령디코드부(402)는 기능 전처리기(204)를 포함한다. 본 발명에 따른 명령디코드부(402)의 기능 전처리기(204)는 DSP 기능에 대응하거나, 기능을 수행하는 명령캐시(202)의 X86 명령순서를 검출한다. 만약 이러한 명령순서가 검출되면, 기능 전처리기(204)는 해당 마크로나 파라미터를 생성, 해당 DSP마크로 또는 파라미터를 DSP 디스패치버스(456)를 통해 DSP실행부(214)에 전송한다. DSP실행부(214)는 DSP기능마크로와 파라미터정보를 명령디코드부(402)로부터 입력받아 정해진 DSP 기능을 수행한다. 또한, DSP실행부(214)는 데이터오퍼랜드를 위해 데이터캐시(444)를 억세스하도록 구성된다. 데이터오퍼랜드는 빠른 억세스동작을 위해 DSP실행부(214)안의 메모리에 저장되거나, 필요할 때마다 데이터캐시(444)로 부터 직접적으로 억세스될 수 있다. 기능 전처리기(204)는 마크로검색을 위해 이용할 수 있는 예견명령이 충분한지를 보장하기위해 피드백을 명령캐시(202)에 공급한다.
만약 명령캐시(202)의 X86 명령이 DSP기능을 수행하도록 되어있지않으면, 명령디코드부(402)는 명령캐시(202)로부터 인출된 명령을 디코드하고 실행부(448)와(또는) 로드/저장부(450)로 명령을 디스패치한다. 또한, 명령디코드부(402)는 명령이 사용하는 레지스터 오퍼랜드를 검출하고, 재배열버퍼(452)와 레지스터파일(454)로부터 이러한 오퍼랜드를 요구한다. 실행부(448)는 본 발명의 분야에서 널리 알려져있듯이 X86명령을 실행한다.
또한, DSP실행(214)가 CPU(102)에 포함되지 않거나 소프드웨어를 통해서 디스에이블될 때, 명령디코드부(402)는 모든 X86명령을 실행부(448)로 디스패치한다. 실행부(448)는 종래의 기술과 같이 X86명령을 실행한다. 이와 같은 방법으로 DSP실행부(214)가 디스에이블되면, 종래의 X86 마이크프로세서와 같은 방법으로 DSP 기능을 수행하는 명령을 포함한 X86 코드는 X86 코어에 의해서 실행된다. 따라서, DSP실행부(214)가 디스에이블될 때, 오퍼레이션이 DSP실행부(214)의 해당루틴의 수행능력보다 효율적이지 못하더라도 프로그램은 정확한 동작을 수행한다. CPU(102)의 DSP코어(214)가 인에이블/디스에이블되는 상태나 존재/부재의 상태는 프로그램의 정확한 동작에 영향을 미치지않는다.
본 발명에 따른 일 실시예에서 실행부(448)는 각각의 실행부가 마이크로프로세서(102)가 이용하는 명령세트를 수행하는 대칭적인 실행부이다. 다른 실시예에서는 실행부(448)는 각 실행부가 다른 명령서브세트를 실행하는 비대칭적 실행부이다. 예를 들어, 실행부(448)는 분기명령을 수행하는 분기실행부, 산술과 논리명령을 수행하는 산술/논리부, 부동소수점명령을 수행하는 부동소수점부를 포함한다. 상기 명령디코드부(402)는 명령을 실행하는 실행부(448) 또는 로드/저장부(450)에 명령을 디스패치한다.
상기 로드/저장부(450)는 실행부(448)과 데이터캐시(444)사이에서 인터페이스를 공급한다. 로드와 저장메모리동작은 데이터캐시(444)에 맞추어 로드/저장부(450)에 의해 수행한다. 또한, 로드와 저장메모리동작사이의 메모리 의존상태는 로드/저장부(450)에 의해 검출되어 처리된다.
실행부(448)와 로드/저장부(450)는 오퍼랜드가 공급되지않은 명령을 저장하는 예약부를 포함한다. 만약, (1) 명령의 오퍼랜드가 공급되고, (2) 선택되는 명령 이전의 명령이 오퍼랜드를 입력받지않을 때, 명령은 실행을 위해서 예약부에 저장된 명령들로부터 선택된다. 이때, 복수개의 예약부대신에 중앙예약부가 제공될 수 있다. 이러한 중앙예약부는 명령디코드부(402), 실행부(448), 로드/저장부(450)사이에서 연결되어있다. 이러한 실시예에서는 중앙 예약부안에서 디스패치기능을 수행하게된다.
CPU(102)는 규칙에 어긋난 실행동작을 지지하고 재배열버퍼(452)를 이용하여 추론적으로 실행된 명령의 실행결과를 저장하고 이러한 결과를 프로그램의 순서에 따라 레지스터파일(454)에 저장한다. 이는 종속성검사, 레지스터이름변경 등의 동작을 수행하고 잘못 예견되는 분기와 예외적인 복구에 대비하기 위한 것이다. 명령디코드부(402)가 명령을 디코딩할 때, 레지스터 오퍼랜드의 요구는 재배열버퍼(452)와 레지스터파일(454)로 전달된다. 레지스터 오퍼랜드요구에 응하여, 다음의 3 개의 값중 하나가 명령을 수신한 실행부(448)와(또는) 로드/저장부(450)로 전달된다: (1) 값이 추론적으로 생성되면 재배열버퍼(452)에 저장된 값, (2) 값이 추론적으로 생성되지않으면 결과를 저장하는 재배열버퍼(452)안에서 위치를 식별하는 태그(tag), (3) 재배열버퍼(452)안의 명령이 레지스터를 변경하지않을 때, 레지스터파일(454)안의 레지스터에 저장된 값. 또한, 재배열버퍼(452)안의 기억장치의 위치는 명령디코드부(402)에 의해 디코딩되는 명령의 결과를 저장하기위해 정해진다. 기억장치의 위치는 명령을 입력하는 입력부로 전달되는 태그에 의해서 식별된다. 이때, 만약 재배열버퍼 기억장치의 위치가 특정 레지스터에 해당하는 결과를 저장하기위해 정해질 때, 마지막 결과에 해당하는 값 또는 태그가 상기 특정 레지스터를 위한 레지스터 오퍼랜드의 요구에 따라서 전달된다.
실행부(448) 또는 로드/저장부(450)가 명령을 실행할 때, 재배열버퍼(452)에 의해 명령에 할당된 태그는 명령의 결과와 함께 버스(458)로 전달된다. 재배열버퍼(452)는 정해진 저장위치에 결과를 저장한다. 또한, 실행부(448)와 로드/저장부(450)는 상기 버스(458)로 전달된 태그를 저장된 명령을 수행하기위한 오퍼랜드의 태그와 비교한다. 만약 매치가 이루어지면, 버스(458)로부터 전달된 결과를 수집하여 해당명령과 함께 저장한다. 이러한 방법으로 명령은 오퍼랜드를 받을 수 있다. 명령의 이용을 위해 버스(458)로 부터 결과를 수집하는 것은 '결과 포워딩'이라고 한다.
명령결과는 재배열버퍼(452)에 의해서 프로그램순서에 따라서 레지스터파일(454)에 저장된다. 명령의 결과를 저장하고, 재배열버퍼(452)에서 명령을 제거하는 것은 '퇴거(retiring)'명령이라고 한다. 프로그램의 순서에 따라서 명령을 퇴거시킴으로서, 부정확한 실행으로 부터의 복구가 이루어질 수 있다. 예를 들어, 예측이 정확하지 않은 분기명령을 뒤따르는 명령은 부정확하게 실행될 수 있다. 예외를 일으키는 예측이 빗나간 분기명령이나 명령이 검출되면, 재배열버퍼(452)는 잘못 예측된 분기명령을 뒤따르는 명령을 버린다. 또한 이렇게 버려진 명령은 실행부(448), 로드/저장부(450), 명령디코드부(402)로부터 플러시된다.
레지스터파일(454)은 마이크로프로세서(102)가 이용하는 마이크로프로세서 장치에 의해서 정의된 각각의 레지스터의 기억장치위치를 포함한다. 예를 들어, CPU(102)가 X86 마이크로프로세서장치를 포함하는 본 발명에 따른 실시예에서, 레지스터파일(454)은 EAX, EBX, ECX, EDX, ESI, EDI, EBP 레지스터값을 저장하는 장소를 포함한다.
데이터캐시(444)는 마이크로프로세서(102)에 의해 동작되는 데이터를 저장하는 고속 캐시메모리이다. 이때, 데이터캐시(444)는 세트가 조합되거나, 직접적으로 맵하는 구조일 수 있다.
도 5 - 명령디코드부
도 5는 본 발명에 따른 명령디코드부의 일 실시예이다. 명령디코드부(402)는 명령정렬부(460), 다수의 디코더회로(462), DSP 기능전처리기(204)로 구성된다. 상기 명령정렬부(460)는 명령캐시(202)로 부터 인출된 명령을 수신하여 정렬하기위해 디코더회로(462)와 연결되어있다.
명령정렬부(460)는 명령을 디코더회로(462)로 전송한다. 상기 명령정렬부(460)는 명령캐시(202)로 부터 인출된 명령바이트가 대기행렬에 넣어진 바이트 대기행렬을 포함한다. 명령정렬부(460)는 바이트대기행렬로부터 유효한 명령의 위치를 정하고, 상기 명령을 각 디코더회로(462)에 디스패치한다. 본 발명의 다른 실시예에서는 명령캐시(202)는 명령캐시(202)에 저장되어있을 때, 명령바이트를 사전디코딩하는 사전디코드(predecode)회로를 포함한다. 명령의 시작과 끝을 나타내는 시작과 종료 바이트명령이 생성되어 명령캐시(202)에 저장된다. 사전디코드 데이터는 명령정렬부(460)에 전송되고, 명령정렬부(460)는 사전디코드 정보에 따라서 명령을 디코더회로(462)에 전송한다.
또한, 기능 전처리기(204)는 명령캐시(202)와 연결되어있고, DSP명령을 수행하는 명령캐시(202)의 명령순서를 검출하기위한 동작을 수행한다. 디코더회로(462)와 기능 전처리기(204)는 명령정렬부(460)로부터 X85명령을 수신한다. 기능 전처리기(204)는 명령 디스에이블신호를 DSP버스를 통해 각각의 디코더회로(462)에 제공한다.
각각의 디코더회로(462)는 명령과 명령을 수신하는 장치에 의해 조작되는 레지스터오퍼랜드를 결정하기위해 명령정렬부(460)로부터 수신한 명령을 디코드한다. 명령자신과 명령 수신부의 지시는 다수의 디스패치버스(468)에 의해서 실행부(448)와 로드/저장부(450)에 전송된다. 미도시된 다른 버스들은 재배열버퍼(452)와 레지스터파일(454)로부터 레지스터오퍼랜드를 요구한다.
기능 전처리기(204)는 명령캐시(202)로부터 입력된 X86명령의 스트림 또는 순서를 분석하고, DSP 기능이 수행되는지를 판단한다. 기능이 수행되면, 기능 전처리기(204)는 X86명령의 스트림을 DSP 마크로와 파라미터에 맵하고, 이러한 정보를 DSP실행부(214)에 제공한다. 각 명령순서가 디코더회로(462)에 도달하면, 기능 전처리기(204)는 검출된 명령순서를 위해 디코더(462)의 동작을 디스에이블하기위해 디스에이블신호를 각각의 디코더회로(462)에 입력한다. 디코더회로(462)가 디스에이블신호를 기능 전처리기(204)로부터 검출할 때, 디코더회로(462)는 디스에이블신호가 릴리스될때까지 디코딩동작을 중단한다. DSP기능에 대응하는 명령순서가 명령캐시(202)에서 나간뒤에, 기능 전처리기(204)는 디스에이블신호를 각 디코더회로(462)로 이동한다. 즉, 기능 전처리기(204)가 X86명령순서의 결과를 검출하면, 기능 전처리기(204)는 디스에이블신호를 각각의 디코더회로(462)에 전송하여, 디코더회로(462)는 동작을 개시한다.
각각의 디코더회로(462)는 명령을 수신하는 장치의 지시와 함께 디스패치버스(468)를 통해 명령을 전달한다. 본 발명에 따른 실시예에서는, 각 실행부(448)와 로드/저장부(450)의 지시에는 1 비트가 포함된다. 특정 비트가 세트되면, 해당부는 명령을 수행한다. 만약 하나이상의 장치에 의해 특정 명령이 실행되면, 지시에 1 비트이상이 세트될 수 있다.
기능 전처리기
도 6은 본 발명의 실시예에 따른 기능 전처리기(204)의 블록도이다. 도시된바와같이, 기능 전처리기(204)는 명령메모리 또는 명령캐시(202)의 명령의 순서를 검사하거나 주사하는 스캔-어헤드(scan-ahead)회로(502)를 포함한다. 스캔-어헤드회로 또는 수단(502)은 주사되는 각각의 명령의 순서를 구성하는 명령을 디코딩하는 명령디코더(402)의 동작에 앞서서 명령메모리(202)에 저장된 명령의 순서를 검사한다. 따라서, 스캔-어헤드회로(502)는 각각의 명령이 명령디코더(402)에 제공되기전에 명령캐시(202)의 명령순서를 예견한다.
또한, 기능 전처리기(204)는 명령순서 판단회로(504)를 포함하여 구성된다. 상기 명령순서 판단회로(504)는 명령메모리(202)의 명령의 순서가 디지털신호처리기능을 실행하는지를 판단한다. 상기 판단동작은 아래에서 설명되듯이 여러 가지 방법으로 수행된다.
또한, 기능 전처리기(204)는 디지털신호 처리기능을 수행하는 명령메모리(202)의 명령의 순서를 디지털신호처리기능 식별자 또는 마크로 식별자와 파라미터로 변환하는 변환/매핑회로(506)를 포함한다. 따라서, 명령순서 결정회로(504)가 명령메모리(202)의 명령순서가 FFT 기능을 수행한다고 판단할 때, 변환/매핑회로(506)는 명령의 순서를 FFT 기능식별자와 파라미터로 변환한다.
도 7 - 패턴인식회로
도 7는 본 발명의 일 실시예에 따른 기능 전처리기(204)를 나타낸 것으로, 명령메모리(202)안의 명령의 순서가 디지털신호처리기능을 실행하는지를 판단하는 패턴인식회로 또는 패턴인식검출기(512)를 포함한다. 패턴인식검출기(512)는 디지털신호처리기능을 수행하는 다수의 명령순서패턴을 저장한다. 패턴인식회로(512) FFT, 내적, 매트릭스조정, 상관관계, 회선 등의 DSP기능을 수행하는 장치언어명령의 연산코드 순서에 대응하는 비트패턴을 저장한다.
패턴인식검출기(512)는 명령메모리(202)에 저장된 명령의 순서를 검사하고, 이러한 명령의 순서를 다수의 저장된 패턴과 비교한다. 패턴인식검출기(512)의 동작은 도 8 에 도시되어있다. 패턴인식검출기(512)는 각각의 패턴을 명령순서의 간헐적위치의 명령순서와 비교한다. 다른 방법으로는, 패턴인식검출기(512)는 각각의 패턴을 명령순서의 정의된 위치의 명령순서와 비교한다. 또한, 패턴인식검출기(512)는 패턴비교를 수행하는 룩업테이블을 포함할 수 있다. 패턴인식검출기(512)는 동작을 향상시키기위해 명령순서의 마크로예측을 수행할 수 있다.
패턴인식검출기(512)는 명령메모리(202)의 명령의 순서가 다수의 저장된 패턴중의 하나와 실제로 매치하는지를 판단한다. 사실상의 매치는 명령의 순서가 디지털신호처리기능을 수행한다는 것을 나타낸다. 본 발명의 실시예에서는, 사실상의 매치는 명령순서가 저장된 패턴과 90% 이상 매치하는 것을 말한다. 다른 매칭문턱값으로서 95%, 100% 가 사용될 수 있다. 만약 매치가 일어나면, 패턴인식검출기(512)는 명령 순서와 매치하는 DSP 기능패턴의 타입을 결정하고 상기 DSP 기능패턴타입을 변환/매핑회로(506)에 전송한다.
도 9 - 룩업 테이블
도 9는 기능 전처리기(204)의 다른 실시예를 도시한 것으로, 이러한 기능 전처리기(204)는 룩업테이블(514)을 포함한다. 상기 룩업테이블(514)은 명령메모리(202)의 명령의 순서가 디지털신호처리기능을 수행하는지를 결정한다. 룩업테이블(514)는 패턴인식검출기(512)에 부가적으로 구성되거나, 검출기(512)를 대신하여 구성될 수 있다.
기능 전처리기(204)이 룩업테이블(514)만을 포함하는 본 발명의 실시예에서는, 룩업테이블(514)은 다수의 패턴을 포함하고, 각각의 패턴은 디지털신호처리기능을 수행하는 명령순서의 서브세트이다. 따라서, 상기 실시예는 기능전처리기(204)가 DSP 기능을 수행하는 명령순서를 검출하는 패턴인식검출기(512) 대신 룩업테이블(514)을 포함하는 경우를 제외하고, 위에서 설명한 도 6의 실시예와 유사하다. 또한, 이러한 실시예에서는 룩업테이블(514)은 DSP 기능을 수행하는 명령의 더작은 순서, 즉 명령순서의 서브세트에 대응하는 더 작은 패턴을 저장한다. 이때, 룩업테이블(514)은 해당하는 명령의 순서와의 정확한 매치를 요구한다. 만약 정확한 매치가 이루어지지 않으면, 명령의 순서는 범용 CPU코어 등의 범용 실행부로 전송된다.
도 10은 룩업테이블(514)의 동작을 나타내고 있다. 도시된바와같이, 명령캐시(202)의 명령의 순서는 명령래치(542)에 일시적으로 저장된다. 명령래치(542)의 내용는 요소(546)에 의해 룩업테이블(514)에 각 입력과 비교된다. 만약 명령래치(542)의 내용이 룩업테이블(514)의 입력중의 하나와 정확하게 매치하면, 이 입력에 대응하는 DSP기능 또는 명령(548)이 DSP 실행부(214)에 제공된다.
상기 도 7과 9의 실시예에서는, 패턴인식검출기(512)와(또는) 룩업테이블(514)은 판단이 비교적 정확할때만 명령순서가 DSP 기능을 수행하는지를 판단한다. 이는 범용코어 또는 실행부가 명령순서를 수행하므로, 적중되지않은 명령순서, 즉 DSP 기능을 수행하나 검출되지않은 명령순서가 CPU(102)의 동작에 영향을 끼치지않기 때문이다. 그러나, DSP기능을 실행하는 순서로 잘못 인식된 DSP기능을 수행하지 않는 명령순서가 더욱 큰 문제를 일으켜, 시스템의 오동작을 일으킬 수 있다. 따라서, 패턴인식검출기(512) 또는 룩업테이블(514)가 DSP기능을 수행하는 모든 명령순서를 정확하게 검출하지 못하는 경우가 예상된다. 이때, 명령순서는 범용실행부중의 하나로 전송되고, 이러한 동작을 종래기술에서도 나타나있다.
도 11 - 룩업테이블과 패턴인식회로
도 11은 기능 전처리기(204)의 또다른 실시예를 도시하고 있다. 이 기능 전처리기(204)는 룩업테이블(514)과 패턴인식검출기(512)를 포함한다. 상기 실시예에서는 기능디코더(204)가 명령메모리(202)의 명령의 순서가 디지털신호처리기능을 수행하는가를 판단하기위해 각 룩업테이블(514)과 패턴인식검출기(512)를 이용한다. 상기 실시예에서는 X86 명령의 순서에 대한 2 단계분석이 이용된다. 이러한 2 단계분석에서는 먼저 룩업테이블(514)이 명령순서가 DSP 기능을 수행할것같은지를 판단하고, 그 뒤 패턴인식검출기(512)는 수행되는 DSP 기능의 타입을 결정한다. 다른 방법으로서, 먼저 패턴인식검출기(512)가 명령순서가 DSP 기능을 수행할것같은지를 판단하고, 그 뒤 룩업테이블(514)이 수행되는 DSP 기능의 타입을 결정한다.
상기 실시예에서, 룩업테이블(514)은 아토믹 DSP명령에 대응하는 작은 패턴을 저장한다. 예를 들어, 룩업테이블(514)은 DSP 구조에서는 일반적인 곱셈, 누산, 덧셈기능을 수행하는 X86명령의 패턴을 저장한다. 또한, 룩업테이블(514)은 아토믹 DSP 기능을 수행하는 다른 패턴들을 저장한다. 패턴인식검출기(512)는 FFT, 상관관계, 회선 등의 전체 DSP기능에 대응하는 패턴을 모두 저장한다.
먼저, 룩업테이블(514)은 각 입력을 들어오는 명령순서와 비교하여, 적중된 명령순서의 수 또는 순서의 매치된 수를 저장한다. 만약, 매치된 수가 정의된 문턱값보다 클 때, 순서는 다수의 DSP 타입명령을 갖고 DSP 기능을 수행한다고 예측한다. 이러한 경우, 패턴인식검출기(512)는 X86 명령순서에 의해서 수행되는 DSP 기능의 타입을 판단하기위해 순서 전체를 각각의 저장된 패턴과 비교할 수 있다. 상기에서 설명한바와 같이 패턴인식검출기(512)는 명령순서가 저장된 패턴과 실제로 매치하는지를 판단한다.
결론
따라서, 본 발명은 기존 소프트웨어와 호환이 가능하며, DSP 기능과(또는) 수학적연산을 최대한 수행할 수 있는 새로운 CPU 장치 또는 마이크로프로세서구조로 구성된다.
상기 발명이 전술된 실시예에 대해 주로 기술되었지만, 본 발명은 반드시 이런 실시예로 제한되지 않는다. 따라서, 여기에서 기술되지 않은 다른 실시예 변형 및 증진에 대한 것은 반드시 본 발명의 범주로부터 배제되지 않고 아래의 첨부된 청구항의 범위에 의해 한정된다.

Claims (16)

  1. 디지털신호처리기능을 수행하는 중앙처리장치에 있어서,
    디지털신호처리기능을 수행하는 명령의 순서를 저장하는, 다수의 명령을 저장하는 명령메모리;
    상기 명령메모리에 연결되고, 명령메모리에 저장된 명령의 순서를 검사하는 검사수단, 상기 명령메모리의 명령의 순서가 디지털신호처리기능을 수행하는지를 판단하는 판단수단, 디지털신호처리기능을 수행하는 명령메모리의 명령의 순서를 디지털신호처리기능 식별자로 변환하는 변환수단을 포함하는 기능 전처리기;
    상기 기능 전처리기에 연결되어, 명령메모리의 명령을 수행하는 범용처리 코어;
    상기 기능 전처리기에 연결되어, 상기 기능전처리기로부터 디지털신호처리기능 식별자를 수신하여 이에 대응하여 디지털신호처리기능을 수행하는 디지털신호처리 코어를 포함하는 것을 특징으로 하는 중앙처리장치.
  2. 제 1 항에 있어서, 상기 명령메모리는 디지털신호처리기능을 수행하지않는 명령의 첫 번째 순서를 저장하고, 디지털신호처리기능을 수행하는 명령의 두 번째 순서를 저장하고, 이때 범용처리 코어는 상기 명령의 첫 번째 순서를 수행하고, 디지털신호처리 코어는 수신된 상기 디지털신호처리기능 식별자에 대하여 상기 디지털신호처리기능을 수행하고, 상기 디지털신호처리 코어에 의해서 수행되는 디지털신호처리기능이 상기 명령의 두 번째 순서의 실행과 같은것을 특징으로 하는 중앙처리장치.
  3. 제 1 항에 있어서, 상기 디지털신호처리 코어는 데이터와 타이밍신호를 상기 범용처리 코어에 공급하는 것을 특징으로 하는 중앙처리장치.
  4. 제 1 항에 있어서, 상기 기능 전처리기는 명령메모리의 명령의 순서가 디지털신호기능을 수행하는지를 판단하는 상기 판단수단에 대하여 디지털신호처리기능 식별자와 파라미터를 생성하는 것을 특징으로 하는 중앙처리장치.
  5. 제 1 항에 있어서, 상기 범용처리 코어는 X86 계통의 마이크로프로세서와 호환이 가능한 것을 특징으로 하는 중앙처리장치.
  6. 제 5 항에 있어서, 명령은 X86 연산코드인 것을 특징으로 하는 중앙처리장치.
  7. 제 1 항에 있어서, 상기 디지털신호처리 코어는 회선, 상관관계, 고속 프리에변환, 내적 등의 수학적연산을 수행하는데 적용되는 것을 특징으로 하는 중앙처리장치.
  8. 제 1 항에 있어서, 상기 범용처리 코어와 디지털신호처리 코어는 실제로 동시에 동작하는 것을 특징으로 하는 중앙처리장치.
  9. 범용 중앙처리장치(CPU)코어와 디지털신호처리(DSP)코어를 포함하는 CPU의 명령을 수행하는 방법에 있어서,
    CPU의 수행을 위해 명령메모리의 명령의 순서를 저장하는 첫 번째 과정;
    명령메모리안의 명령의 순서를 검사하는 두 번째 과정;
    명령메모리의 명령의 순서가 디지털신호처리기능를 수행하는지를 판단하는 세 번째 과정;
    디지털신호처리기능을 수행하는 명령메모리의 명령의 순서를 디지털신호처리기능 식별자로 변환하는 네 번째 과정;
    디지털신호처리 코어가 상기 디지털신호처리기능 식별자를 수신하는 다섯 번째 과정;
    상기 디지털신호처리 코어가 수신된 디지털신호처리기능 식별자에 대응하여 디지털신호처리 기능을 수행하는 여섯 번째 과정을 포함하는 것을 특징으로 하는 CPU의 명령을 수행하는 방법.
  10. 제 9 항에 있어서, CPU의 명령을 수행하는 방법에 있어서,
    상기 첫 번째 과정은 첫 번째 디지털신호처리기능을 수행하는 명령메모리의 명령의 첫 번째 순서를 저장하는 과정을 포함하고;
    상기 첫 번째 과정은 디지털신호처리기능을 수행하지않는 명령메모리의 명령의 두 번째 순서를 저장하는 과정을 포함하고;
    상기 네 번째 과정은 상기 첫 번째 디지털신호처리기능을 수행하는 명령메모리의 명령의 첫 번째 순서를 첫 번째 디지털신호처리기능 식별자로 변환하는 과정을 포함하고;
    상기 여섯 번째 과정은 첫 번째 디지털신호처리기능을 수행하는 것이 상기 명령의 첫 번째 순서의 실행과 실질적으로 같은, 디지털신호처리 코어가 첫 번째 디지털신호처리기능 식별자에 대응하여 첫 번째 디지털신호처리기능을 수행하는 과정을 포함하고;
    범용 중앙처리장치 코어가 상기 명령의 두 번째 순서를 실행하는 것을 특징으로 하는 CPU의 명령을 수행하는 방법.
  11. 제 10 항에 있어서, 상기 디지털신호처리 코어와 범용 중앙처리장치 코어가 동시에 동작하는 것을 특징으로 하는 CPU의 명령을 수행하는 방법.
  12. 제 10 항에 있어서, 상기 디지털신호처리 코어가 데이터와 타이밍신호를 상기 범용 중앙처리장치 코어에 제공하는 것을 특징으로 하는 CPU의 명령을 수행하는 방법.
  13. 제 9 항에 있어서, 상기 기능 전처리기가 명령메모리의 명령의 순서가 디지털신호기능을 수행하는지를 판단하는 세 번째 과정에 대응하여 디지털신호처리기능 식별자와 파라미터를 생성하는 것을 특징으로 하는 CPU의 명령을 수행하는 방법.
  14. 제 9 항에 있어서, 상기 범용 중앙처리장치 코어는 X86 계통의 마이크로프로세서와 호환이 가능한 것을 특징으로 하는 CPU의 명령을 수행하는 방법.
  15. 제 14 항에 있어서, 명령의 순서는 X86 연산코드로 구성되는 것을 특징으로 하는 CPU의 명령을 수행하는 방법.
  16. 제 9 항에 있어서, 상기 디지털신호처리 코어는 회선, 상관관계, 고속 프리에변환, 내적 등의 수학적연산을 수행하는 것을 특징으로 하는 CPU의 명령을 수행하는 방법.
KR10-1998-0705419A 1996-03-18 1997-01-23 Dsp펑션을수행하도록의도된명령시퀀스들을dsp펑션식별자로변환하는dsp펑션프리프로세서를갖는cpu KR100464101B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US08/618,243 1996-03-18
US8/618,243 1996-03-18
US08/618,243 US5794068A (en) 1996-03-18 1996-03-18 CPU with DSP having function preprocessor that converts instruction sequences intended to perform DSP function into DSP function identifier
PCT/US1997/001067 WO1997035252A1 (en) 1996-03-18 1997-01-23 Central processing unit having an x86 and dsp core and including a dsp function decoder which maps x86 instructions to dsp instructions

Publications (2)

Publication Number Publication Date
KR20000064518A true KR20000064518A (ko) 2000-11-06
KR100464101B1 KR100464101B1 (ko) 2005-06-17

Family

ID=24476907

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-1998-0705419A KR100464101B1 (ko) 1996-03-18 1997-01-23 Dsp펑션을수행하도록의도된명령시퀀스들을dsp펑션식별자로변환하는dsp펑션프리프로세서를갖는cpu

Country Status (6)

Country Link
US (1) US5794068A (ko)
EP (1) EP0888584B1 (ko)
JP (1) JP3662258B2 (ko)
KR (1) KR100464101B1 (ko)
DE (1) DE69724771T2 (ko)
WO (1) WO1997035252A1 (ko)

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6085314A (en) * 1996-03-18 2000-07-04 Advnced Micro Devices, Inc. Central processing unit including APX and DSP cores and including selectable APX and DSP execution modes
US6032247A (en) * 1996-03-18 2000-02-29 Advanced Micro Devices, Incs. Central processing unit including APX and DSP cores which receives and processes APX and DSP instructions
US7225436B1 (en) 1998-12-08 2007-05-29 Nazomi Communications Inc. Java hardware accelerator using microcode engine
US6332215B1 (en) 1998-12-08 2001-12-18 Nazomi Communications, Inc. Java virtual machine hardware for RISC and CISC processors
US20050149694A1 (en) * 1998-12-08 2005-07-07 Mukesh Patel Java hardware accelerator using microcode engine
US7941647B2 (en) 1999-01-28 2011-05-10 Ati Technologies Ulc Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination
US7111290B1 (en) 1999-01-28 2006-09-19 Ati International Srl Profiling program execution to identify frequently-executed portions and to assist binary translation
US8065504B2 (en) 1999-01-28 2011-11-22 Ati International Srl Using on-chip and off-chip look-up tables indexed by instruction address to control instruction execution in a processor
US7013456B1 (en) 1999-01-28 2006-03-14 Ati International Srl Profiling execution of computer programs
US6954923B1 (en) 1999-01-28 2005-10-11 Ati International Srl Recording classification of instructions executed by a computer
US6826748B1 (en) 1999-01-28 2004-11-30 Ati International Srl Profiling program execution into registers of a computer
US7275246B1 (en) 1999-01-28 2007-09-25 Ati International Srl Executing programs for a first computer architecture on a computer of a second architecture
US8074055B1 (en) 1999-01-28 2011-12-06 Ati Technologies Ulc Altering data storage conventions of a processor when execution flows from first architecture code to second architecture code
US8127121B2 (en) 1999-01-28 2012-02-28 Ati Technologies Ulc Apparatus for executing programs for a first computer architechture on a computer of a second architechture
US6978462B1 (en) 1999-01-28 2005-12-20 Ati International Srl Profiling execution of a sequence of events occuring during a profiled execution interval that matches time-independent selection criteria of events to be profiled
US7065633B1 (en) 1999-01-28 2006-06-20 Ati International Srl System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU
US6779107B1 (en) 1999-05-28 2004-08-17 Ati International Srl Computer execution by opportunistic adaptation
US6549959B1 (en) 1999-08-30 2003-04-15 Ati International Srl Detecting modification to computer memory by a DMA device
US6934832B1 (en) 2000-01-18 2005-08-23 Ati International Srl Exception mechanism for a computer
US6912469B1 (en) 2000-05-05 2005-06-28 Kenneth J. Cool Electronic hybridization assay and sequence analysis
AU2001266571A1 (en) * 2000-05-11 2001-11-20 Hanna, Michael Cryptographic data processing systems, computer program products, and methods of operating same, using parallel execution units
US7020766B1 (en) * 2000-05-30 2006-03-28 Intel Corporation Processing essential and non-essential code separately
US7162426B1 (en) * 2000-10-02 2007-01-09 Xybernaut Corporation Computer motherboard architecture with integrated DSP for continuous and command and control speech processing
KR20020028814A (ko) * 2000-10-10 2002-04-17 나조미 커뮤니케이션즈, 인코포레이티드 마이크로코드 엔진을 이용한 자바 하드웨어 가속기
US6832305B2 (en) * 2001-03-14 2004-12-14 Samsung Electronics Co., Ltd. Method and apparatus for executing coprocessor instructions
US7162716B2 (en) * 2001-06-08 2007-01-09 Nvidia Corporation Software emulator for optimizing application-programmable vertex processing
US8769508B2 (en) 2001-08-24 2014-07-01 Nazomi Communications Inc. Virtual machine hardware for RISC and CISC processors
US8189591B2 (en) 2001-10-30 2012-05-29 Exar Corporation Methods, systems and computer program products for packet ordering for parallel packet transform processing
US7017030B2 (en) * 2002-02-20 2006-03-21 Arm Limited Prediction of instructions in a data processing apparatus
US7114042B2 (en) * 2003-05-22 2006-09-26 International Business Machines Corporation Method to provide atomic update primitives in an asymmetric heterogeneous multiprocessor environment
JP2006126482A (ja) * 2004-10-28 2006-05-18 Seiko Epson Corp 音声データ処理装置
US7689402B2 (en) 2006-11-17 2010-03-30 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for retrieving application-specific code using memory access capabilities of a host processor
US8095917B2 (en) * 2007-06-04 2012-01-10 Microsoft Corporation Debugger for virtual intermediate language operations
US8065506B2 (en) * 2007-08-17 2011-11-22 Texas Instruments Incorporated Application specific instruction set processor for digital radio processor receiving chain signal processing
CN104185838B (zh) * 2011-12-30 2017-12-22 英特尔公司 使用精减指令集核
US11113058B1 (en) * 2018-11-20 2021-09-07 Facebook, Inc. Reconfigurable processing unit
US20230099989A1 (en) * 2021-09-24 2023-03-30 Intel Corporation Scalable toggle point control circuitry for a clustered decode pipeline

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4439828A (en) * 1981-07-27 1984-03-27 International Business Machines Corp. Instruction substitution mechanism in an instruction handling unit of a data processing system
JPS5932045A (ja) * 1982-08-16 1984-02-21 Hitachi Ltd 情報処理装置
JPH0267602A (ja) * 1988-09-02 1990-03-07 Hitachi Ltd 数値演算装置
EP0843254A3 (en) * 1990-01-18 1999-08-18 National Semiconductor Corporation Integrated digital signal processor/general purpose CPU with shared internal memory
US5241636A (en) * 1990-02-14 1993-08-31 Intel Corporation Method for parallel instruction execution in a computer
US6230255B1 (en) * 1990-07-06 2001-05-08 Advanced Micro Devices, Inc. Communications processor for voice band telecommunications
US5519873A (en) * 1990-08-31 1996-05-21 International Business Machines Corporation Apparatus for switching digital command execution between a general purpose microprocessor and dedicted execution logic
US5588118A (en) * 1991-08-21 1996-12-24 Zilog, Inc. Single chip dual processor
US5574872A (en) * 1991-12-10 1996-11-12 Intel Corporation Method and apparatus for controlling the saving of pipelines in pipelined processors during trap handling
JPH05181673A (ja) * 1991-12-27 1993-07-23 Fujitsu Ltd マイクロプロセッサ
DE69326705T2 (de) * 1992-02-14 2000-04-27 Motorola Inc Verfahren und Anordnung zur Feststellung der Befehlsablauffolge in einem Datenverarbeitungssystem
US5619665A (en) * 1995-04-13 1997-04-08 Intrnational Business Machines Corporation Method and apparatus for the transparent emulation of an existing instruction-set architecture by an arbitrary underlying instruction-set architecture
US5649138A (en) * 1996-01-04 1997-07-15 Advanced Micro Devices Time dependent rerouting of instructions in plurality of reservation stations of a superscalar microprocessor

Also Published As

Publication number Publication date
EP0888584B1 (en) 2003-09-10
JP2001502448A (ja) 2001-02-20
EP0888584A1 (en) 1999-01-07
DE69724771T2 (de) 2004-07-15
US5794068A (en) 1998-08-11
WO1997035252A1 (en) 1997-09-25
JP3662258B2 (ja) 2005-06-22
KR100464101B1 (ko) 2005-06-17
DE69724771D1 (de) 2003-10-16

Similar Documents

Publication Publication Date Title
KR20000064518A (ko) X86코어와dsp코어를가져x86명령을dsp명령에맵하는dsp디코더를포함하는중앙처리장치
US5784640A (en) CPU with DSP function preprocessor having look-up table for translating instruction sequences intended to perform DSP function into DSP macros
US5754878A (en) CPU with DSP function preprocessor having pattern recognition detector that uses table for translating instruction sequences intended to perform DSP function into DSP macros
US5790824A (en) Central processing unit including a DSP function preprocessor which scans instruction sequences for DSP functions
US6032247A (en) Central processing unit including APX and DSP cores which receives and processes APX and DSP instructions
US5781792A (en) CPU with DSP having decoder that detects and converts instruction sequences intended to perform DSP function into DSP function identifier
US6662294B1 (en) Converting short branches to predicated instructions
US5826089A (en) Instruction translation unit configured to translate from a first instruction set to a second instruction set
EP0891583B1 (en) A microprocessor configured to detect a subroutine call of a dsp routine and to direct a dsp to execute said routine
US5881265A (en) Computer processor with distributed pipeline control that allows functional units to complete operations out of order while maintaining precise interrupts
US5968162A (en) Microprocessor configured to route instructions of a second instruction set to a second execute unit in response to an escape instruction
US6085314A (en) Central processing unit including APX and DSP cores and including selectable APX and DSP execution modes
US6728872B1 (en) Method and apparatus for verifying that instructions are pipelined in correct architectural sequence
JPH09223013A (ja) 高性能プロセッサにおける投機ロード命令の実行方法
EP0976028B1 (en) A microprocessor configured to switch instruction sets upon detection of a plurality of consecutive instructions
US5884062A (en) Microprocessor with pipeline status integrity logic for handling multiple stage writeback exceptions
US5864689A (en) Microprocessor configured to selectively invoke a microcode DSP function or a program subroutine in response to a target address value of branch instruction
US5721945A (en) Microprocessor configured to detect a DSP call instruction and to direct a DSP to execute a routine corresponding to the DSP call instruction
US5898864A (en) Method and system for executing a context-altering instruction without performing a context-synchronization operation within high-performance processors
US5872948A (en) Processor and method for out-of-order execution of instructions based upon an instruction parameter
WO1990010267A1 (en) Distributed pipeline control for a computer
CA2356805A1 (en) Converting short branches to predicated instructions
US6697933B1 (en) Method and apparatus for fast, speculative floating point register renaming
KR20030017982A (ko) 브이.엘.아이.더블유. 프로세서에서 부분적으로파이프라인으로 연결된 명령을 동기시키는 방법
WO1997031310A1 (en) A microprocessor configured to execute instructions which specify increment of a source operand

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
FPAY Annual fee payment

Payment date: 20121129

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20131129

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20141201

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20151118

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20161123

Year of fee payment: 13

EXPY Expiration of term