KR19980069870A - 벡터 처리기용 실행 장치 데이터 패스 - Google Patents

벡터 처리기용 실행 장치 데이터 패스 Download PDF

Info

Publication number
KR19980069870A
KR19980069870A KR1019970036425A KR19970036425A KR19980069870A KR 19980069870 A KR19980069870 A KR 19980069870A KR 1019970036425 A KR1019970036425 A KR 1019970036425A KR 19970036425 A KR19970036425 A KR 19970036425A KR 19980069870 A KR19980069870 A KR 19980069870A
Authority
KR
South Korea
Prior art keywords
data
bit
cycle
adder
instruction
Prior art date
Application number
KR1019970036425A
Other languages
English (en)
Other versions
KR100267103B1 (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 KR19980069870A publication Critical patent/KR19980069870A/ko
Application granted granted Critical
Publication of KR100267103B1 publication Critical patent/KR100267103B1/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
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3812Devices capable of handling different types of numbers
    • G06F2207/382Reconfigurable for different fixed word lengths
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3828Multigauge devices, i.e. capable of handling packed numbers without unpacking them
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Advance Control (AREA)

Abstract

벡터 처리기는 다른 슬라이스와 병렬로 처리되어 각 슬라이스를 적은 데이타의 슬라이스로 구분되도록 데이타 패스를 제공한다. 게다가, 실행 장치는 작은 산술 및 한 사이클 연산을 공유하여 멀티 사이클을 요구하는 더욱 복잡한 마이크로프로세서 연산을 수행하기 위해 서로 연결된 기능적 장치를 제공함으로써 마이크로프로세서의 비용 및 크기 모두를 절감할 수 있다. 한 실시예에서 36비트 데이터 패스 슬라이스를 사용하여 288비트 데이타 폭을 처리한다. 다른 실시예에서는 한 사이클의 연산 로직 장치를 사용하여 정수 곱셈-및-어큐뮬레이트 및 부동 소수점 가산/감산 및 곱셈 연산을 실행한다. 다른 실시예에서는 8비트, 9비트, 16비트 및 32비트 정수 데이타 형태 및 32비트 부동 데이타 형태를 지원한다.

Description

벡터 처리기용 실행 장치 데이타 패스
본 발명은 데이터 처리기에 관한 것으로, 특히 데이터 처리기 내에 있는 실행장치에 관한 것이다. 그리고 본 발명은 1996. 8. 19일에 출원된 미국 특허출원 NO. 08/699.579의 연속출원이다.
오늘날 대부분의 마이크로프로세서는 32비트 데이터 패스를 사용하고, 처리능력을 증가시키기 위해 데이터 패스 폭을 증가시켜오고 있는 경향이다. 데이터 패스의 폭이 증가함에 따라 사이클당 처리될 데이터의 비트는 더욱 증가하게 된다. 그러나, 종래의 마이크로프로세서 구조는 데이터 패스의 폭을 단순하게 증가시킴으로써 데이터 요소의 사이즈 예를 들면, 32비트에서 64비트로 증가시켜 왔으며, 그리고 어떤 계산에 있어서는 정밀도를 향상시켜 왔으나, 데이터 요소의 처리 속도를 증가시키지는 못했다. 또한 데이터 패스의 폭이 증가함에 따라 용량이 큰 레지스터와 더욱 복잡한 ALUs 가 필요하게 되었으며, 이에 따라 마이크로프로세서의 크기 및 복잡성이 증가하였다.
처리 능력의 증가는 구현되는 많은 종류의 데이터 동작의 수에 따라 증가된다. 정수 가산/감산과 같은 어떤 기본 연산은 비교적 단순한 회로에 의해서 구현될 수 있다. 그러나, 부동 소수점 곱셈과 같이 더욱 복잡한 연산은 더욱 복잡하고 큰 회로를 필요로 한다. 이러한 연산동작의 성능을 최대로 하기 위해서, 종종 각각의 연산이 구현되도록 특별하게 설계되며, 이것은 마이크로프로세서에서 처리회로의 수를 증가시키게 된다. 결론적으로, 마이크로프로세서 칩은 더 많은 연산과 복잡한 연산을 지원하기 위해서 크기와 비용이 증가하게 된다.
본 발명의 목적은 상기 마이크로프로세서 설계에서 가장 중요한 비용과 칩의 면적을 최소화하는 것이다. 그러므로, 칩의 크기와 비용 모두를 감소시키고자 실행 장치 데이터 패스는 곱셈데이터 요소 내에 있는 큰 데이터 스트림을 처리하여 복잡한 연산이 수행된다.
본 발명에 따라, 처리기는 데이터 패스를 구비하고 있으며, 상기 입력 데이터 스트림은 적은 데이터인 슬라이스(Slice)로 나뉘어 진다. 다른 슬라이스와 병렬로 각각의 데이터 슬라이스가 처리됨에 따라서 큰 데이터의 폭과 곱셈 데이터 요소가 더 적은 시간에 처리된다. 일 실시예에서, 288비트 데이터 스트림은 8개의 36비트 슬라이스로 구분된다. 상기 36비트 슬라이스 각각은 4개의 8비트, 4개의 9비트, 2개의 16비트 또는 1개의 32비트 데이터 요소를 지원할 수 있다. 상기 288비트 데이터 스트림은 8개의 36비트 슬라이스에서 병렬 연산으로 처리된다. 이와 같은 경우에, 어떤 큰 데이터 스트림은 병렬로하여 적은 폭의 데이터 패스를 부가하여 적은 기능 및 연산 장치를 포함하는 처리기에 의해 처리된다.
본 발명의 다른 실시예에서, 처리기 실행 장치는 하나의 복잡한 회로가 각각 복잡한 멀티 사이클 마이크로프로세서를 수행하는 대신에, 적은 기능 장치로 나누어져 있으며, 이러한 적은 기능 장치는 복잡한 마이크로프로세서를 수행하도록 서로 연결되어 있다. 상기와 같은 적은 기능적 장치는 한 사이클 장치이고, 많은 다른 형태의 마이크로프로세서에 사용되고 공유되어 전체적으로 처리 회로의 수는 감소하게 된다. 하나의 실시예에서, 한 사이클 곱셈기, 누산 로직 장치 및 어큐뮬레이터가 연결되어 36비트 정수 곱셈, 정수곱셈 및 어큐뮬레이터(MAC), 부동소수점 가산/감산 및 부동소수점 곱셈 연산을 수행한다.
정수 곱셈을 위한, 제1기능 장치는 제1클럭 사이클에서 64비트 부분 캐리와 64비트 부분 합을 발생하는 32비트 곱셈기이다. 제2클럭 사이클에서, 제1ALU에 포함된 36비트 가산기는 부분 캐리 및 합의 32 하위 비트를 가산하고, 상기 제2ALU에서 36비트 가산기는 부분 캐리 및 합의 32 상위 비트를 가산한다. 또한 제2ALU는 상기 가산기가 36비트보다 큰 폭을 가진 데이터 형태를 가산할 때에, 상기 제1ALU로부터 입력되는 캐리 비트를 가산한다. 상기 두개의 ALU의 출력은 두개의 정수의 곱으로 레지스터 파일 또는 어큐뮬레이터에 저장된다.
정수 MAC의 연산은 정수 곱셈과 같다. 다만, 제1클럭 사이클에서, 가산되는 상기 어큐뮬레이터내의 값은 상기 두개의 에엘유 위로 전송된다. 제2사이클에서, 제1 및 제2ALU는 상기 어큐뮬레이터 또는 레지스터 파일에 대한 결과를 제공받도록 부분 합 및 캐리 비트 뿐만 아니라 상기 어큐뮬레이터 비트를 더한다. 그러므로, 정수 곱셈 및 정수 MAC는 2클럭 사이클에서 실행되고, 곱셈기, 두개의 ALU 및 어큐뮬레이터를 공유한다.
이와 같이, 부동 소수점 가산/감산 및 부동 소수점 곱셈 연산은 정수를 위한 곱셈기, ALU 및 어큐뮬레이터를 사용함으로써 단순화 시킬 수 있다. 제1클럭 사이클에서, 부동 소수점 가산/감산, 제1ALU는 지수들 사이의 편차를 결정하여 그 편차를 정렬하고, 상기 지수 편차와 같은 값에 의해서 적은 가수를 오른쪽으로 이동하여 정렬한다. 상기 공통지수는 두개의 오퍼랜드중에서 큰 값이다. 또한, 제1사이클에서, 만약 이동량이 1이하일 경우에, 상기 제1ALU는 가수를 더하고 제2ALU에 그 결과를 전송한다. 그러나 이동량이 2이상일 경우에, 정렬된 오퍼랜드는 직접 제 2ALU로 전송된다.
제2클럭 사이클에서, 만약 이동량이 1이상일 경우, 상기 제2ALU는 정렬된 오퍼랜드의 가수를 더한다. 제2ALU의 제1ALU 또는 가산기중 어느 하나로부터, 만약 오버플로워가 생길 경우, 그 결과는 가수를 오른쪽으로 이동함으로써 또는 지수를 증가 또는 공통지수에서 그 값을 감산하여 가수를 왼쪽으로 이동시킴으로써 정규화된다. 여기서 이동량은 리딩제로의 수와 같게 된다. 부동 소수점 가산/감산은, 본 실시예의 4라운딩 모드 중 하나에 따라서 제2ALU에서 라운드된 후, 제2클럭 사이클에서 완료된다. 그리고, 이러한 결과는 전송되고 저장된다.
상기와 같은 3개의 멀티 사이클 마이크로프세서가 완료 되는데는 2개의 클럭 사이클이 요구되나, 부동 소수점 곱셈의 연산에는 3개의 클럭 사이클이 요구된다. 상기와 같은 곱셈기는 제1사이클에서 2개의 오퍼랜드의 가수로부터 캐리와 합을 생성한다. 제2사이클에서, 상기 제1ALU는 상기 캐리 및 합의 최상 유효비트를 더하고 또한, 상기 오퍼랜드의 2지수를 더한다. 제3클럭 사이클에서, 제2ALU는 이러한 결과를 정규화하고 반올림하고, 그리고 마지막 결과를 전송한다.
결론적으로, 상기에 기술한 바와 같은 멀티 사이클 마이크로프로세서가 실행되도록 4개의 큰 지수 회로가 요구되는 마이크로프로세서는 한 사이클 곱셈기, 두개의 한 사이클 ALU 및 어큐뮬레이터를 구비하여 마이크로프로세서와 같은 기능을 수행할 수 있다. 이러한 한 사이클 장치는 특이하게도 크기가 적고 저렴하기 때문에 많은 다양한 기능의 한 사이클 장치에 공유될 수 있으며 크기 및 가격을 감소시킬 수 있다. 본 발명은 데이터 형태, 데이터 폭 및 데이터 포맷과 같은 다른 명령어에도 적용될 수 있으며, 이러한 사양은 한정적인 의미를 가지지 않는다.
도 1은 288비트 데이타 스트림용 데이타 패스를 보여주는 블록 다이아 그램.
도 2는 본 발명에 따른 슬라이드로 분해된 288 데이타 스트림의 다이아 그램,
도 3은 본 발명에 따른 데이타 슬라이스 내에 있는 다양한 데이타 형태를 도시한 테이블.
도 4는 본 발명의 일 실시예를 위해 각각의 곱셈 데이타 패스 슬라이스로 나누어진 실행 데이타 패스를 도시한 블록 다이아그램.
도 5는 도 4의 데이타 패스 슬라이스의 블록 다이아그램.
도 6은 도 5의 연산 로직 장치(ALU)의 블록 다이아그램.
도 7은 정수 곱셈 및 MAC 및 부동 소수점 가산/감산 및 곱셈 연산을 실행하는 도 4의 데이터 패스 슬라이스의 블록 다이아그램.
도 8은 도 7의 가산기에 대한 블록 다이아그램.
* 도면의 주요부분에 대한 부호의 설명 *
110:레지스터 파일120, 130:멀티플렉서
150:곱셈기160:연산로직장치
170:어큐뮬레이터210:슬라이스
510:곱셈기530:36비트 ALU
540:어큐뮬레이터610:ALUI
710:정렬회로730:36비트 가산기
본 발명은 적분 회로의 가격 및 크기 모두를 감소시키면서, 큰 데이터 스트림을 처리하고 복잡한 연산이 수행되는 벡터처리기용 실행 장치 데이터 패스를 제공하는데 있다. 큰 벡터기는 데이터를 처리하기 위해 슬라이스로 적게 구분된다. 이러한 구성에서, 상기 슬라이스는 종래의 연산 로직 장치(ALUs) 및 레지스터를 사용하여 병렬로 처리될 수 있으며, 이러한 커다란 벡터기의 처리시간은 슬라이스 각각의 처리시간과 같다. 게다가, 각 슬라이스는 기능적 장치가 함께 연쇄적으로 단순화되어 처리되므로, 각각의 장치는 한 클럭 사이클만 동작하기 때문에 기능적 장치의 연쇄작용은 더욱 복잡한 멀티 사이클의 연산을 수행한다. 왜냐하면 이러한 다양한 기능적 장치는 많은 연산을 공유함으로써 특별히 복작한 연산을 위한 많은 기능적 장치의 집적회로보다 적은 비용과 작게 만들 수 있다.
도 1에서는 본 발명의 실시예에 따른 벡터 처리기의 288비트 데이터 패스(100)를 도시하고 있다. 공동 소유인 미합중국 특허출원 제08/699,597호의 멀티미디어 신호 처리기에서 하나의 마이크로프로세서 곱셈 데이터 처리는 1996. 8. 19자로 출원되었으며, 이러한 내용을 참고하여 본 발명의 벡터 처리기용 288비트 데이터 패스 및 마이크로프로세서 세트를 포함하고 있는 벡터 처리기에 관해 기술한다. 여기서는 마이크로프로세서 실행 파이프라인의 실행 장치 및 실행 단계의 특별 내용에 촛점을 맞추어 설명한다. 미합중국 특허출원 제 08/699,579호에서는 바람직한 마이크로프로세서 및 오퍼랜드 페치 단계 및 저장단계가 기술되어 있다.
도 1에서, 데이터는 레지스터 파일(110)로부터, 로드/저장 장치를 지나 메모리로부터 또는 명령어페치 장치(IFU)를 지나 명령어의 순간 값으로부터 엑세스되고, 상기 레지스터 파일(110)은 스칼라의 곱셈 뱅크 및 벡터 데이터 레지스터를 포함한다. 그러면 멀티플렉서(120, 130)는 다양한 입력 포트로부터 실행 장치 데이터 패스(140)를 위한 소스 오퍼랜드를 선택한다. 상기 실행 장치 데이터 패스(140)는 곱셈기(150), 연산 로직 장치(160) 및 벡터 어큐뮬레이터(170)를 포함한다. 멀티 플렉서(180, 190)는 연산 로직 장치(160)에 의해 수행되는 바람직한 오퍼랜드를 선택하며, 상기 연산 로직 장치(160)는 벡터 어큐뮬레이터(170)로 또는 멀티플렉서(185, 195)에 이러한 결과를 출력함으로써 레지스터 파일(110) 또는 로드/저장 장치로 출력되게 된다.
도 2에서는 본 발명의 실시예에 따른 8개의 36비트인 슬라이스(210)로 구분되어 있는 288비트 데이터 스트림(200)의 포맷을 도시하고 있다. 각각의 36비트 슬라이스(210)는 곱셈 데이터 형태로 되어 있다. 본 발명의 도 3에 도시된 바와 같이, 각 36비트 슬라이스(210)는 하나의 32비트 데이터 워드, 두개의 16비트 데이터 워드, 4개의 9비트 데이터 워드 또는 4개의 8비트 데이터 워드를 처리한다. 부록 테이블 A1에서는 데이터 영역 위치에 특정 비트를 삽입함으로써 곱셈 데이터 형태로 가산하는 방법을 기술하고 있다. 1996. 11. 18자로 출원되어 출원번호가 아직 알려지지 않은 곱셈 데이터를 다른 데이터 형태로 처리하는 가산기라는 발명의 명칭을 갖는 미합중국 특허출원 명세서(변리사 참조번호:M-4601)의 내용은 본 발명에서 참조로 인용된다.
도 1의 일실시예에서, 실행 장치 데이터 패스(140)는 8개의 작은 실행 장치 데이터 패스로 구성되어 있다. 곱셈기(150)는 각 데이터 패스 슬라이스중 하나인, 8개의 독립적인 36*36 비트 곱셈기를 포함하고 있다. 각각의 36*36비트 곱셈기는 데이터의 종류에 따라, 하나의 곱셈기, 2개의 16*16 비트 곱셈기 또는 4개의 8*8비트 곱셈기로 구성될 수 있다. 이와 비슷하게, 연산 로직 장치(160)는 논리적, 정수 및 곱셈 데이터 형식의 부동 소수점 연산을 수행하는 8개의 36비트 연산 로직장치[FALU_36]를 포함하고 있으며, 벡터 어큐뮬레이터(170)는 8개의 72비트 또는 데이터를 저장하고 전송하는 2배 길이의 어큐뮬레이터를 포함하고 있다. 상기 각각의 8개의 슬라이스에서의 데이터는 288비트 벡터기가 36비트 데이터 스트림을 요구된 시간에 동작시키기 위해서, 종래의 곱셈기, ALU 및 어큐뮬레이터를 사용하여 병렬로 처리한다.
도 4에서의 2개의 288비트 벡터 오퍼랜드 즉, A[287:0] 및 B[287:0]를 포함하며, 이들 각각은 8개의 36비트 슬라이스(210)로 분리된후 데이터 패스 슬라이스(410)를 통해서 처리된 각각의 36비트 슬라이스(210)을 갖지고 있다. 오퍼랜드A[287:0] 및 B[287:0]는 도 1에 도시된 멀티플렉서(120, 130) 각각의 다양한 입력 포트로부터 선택된다. 8개의 데이터 패스 슬라이스(410)는 도 1에 도시된 실행 장치 데이터 패스(140)를 이루고 있으며, 각각의 데이터 패스 슬라이스(410)는 36*36 비트 곱셈기, 36비트 폴(FALU) 및 72비트 어큐뮬레이터를 포함하고 있다. 데이터 패스 슬라이스(410)는 공지된 곱셈기, ALUs 및 바람직하게는 마이크로프로세서 연산을 처리할 수 있는 레지스터가 결합될 수 있다. 1996. 10. 21자로 출원되어 다른 비트 길이를 갖는 곱셈수를 지원하는 곱셈기라는 발명의 명칭을 갖는 미합중국 특허출원 제08/734, 277호 (변리사 참조번호:M-4451)의 출원 명세서에는 4가지 데이터 형식을 처리하는 적절한 곱셈기가 기재되어 있다. 1996. 11. 18자로 출원되어 비디오 처리용 명령어를 지원하는 변조기 계산 구조라는 발명의 명칭을 갖는 미합중국 특허출원 제08/746,881호(변리사 참조번호:M-4608)의 출원 명세서에는 곱셈 데이터 형식에서 연산 정수 연산을 실행하는 바람직한 ALU가 기재되어 있다. 1996. 11. 18자로 출원되어 출원번호가 아직 알려지지 않은 캐리 정정을 하도록 퓨즈된 부동 소수점 곱셈 및 어큐뮬레이트라는 발명의 명칭을 갖는 미합중국 특허출원 명세서(변리사 참조번호:M-4604)에는 부동 소수점 가산/감산, 곱셈 및 MAC 연산을 수해하는 적절한 ALU가 기술되어 있다. 상기 세개의 미합중국 특허출원 명세서의 내용은 본 발명에서 참조로 인용된다.
계속해서, 본 발명의 일 실시예에 따라서, 데이터 패스 슬라이스(410)는 기능적 장치를 포함하고 있으며, 이들 각각은 간단한 명령어를 수행한다. 더욱 복잡한 명령어는 기능적 장치와 연결하고 공유되어 수행될 수 있다.
도 5에서는 곱셈기(510), 멀티플렉서(520), 36비트 ALU(FALU_36)(530) 및 72비트 어큐뮬레이터(540)를 포함하는 데이터 패스 슬라이스(410)의 블록다이아그램을 도시하고 있다. 곱셈기(510)는 2개의 32비트 오퍼랜드를 동작하고, 이들 각각의 A 및 B는 1개의 32비트, 2개의 16비트, 2개의 9비트 또는 4개의 8비트 데이터 성분을 포함하고 있다. 그리고 상기 곱셈기(510)는 부분 곱을하며, 64비트 부분 캐리 및 64비트 부분 합 출력을 가져온다. 하나의 이러한 곱셈기는 부스(booth)디코더, 부분 곱셈 발생기, 선택 로직 및 월레스(wallace) 트리 구조를 구현하는 캐리 저장 가산기를 포함한다. 상기 부스 디코더는 상기 부분 곱셈 발생기가 이동하거나 2' 보수 또는 사인 디코딩 연산을 수행하며, 오퍼랜드 A의 곱셈을 수행하는 동안에는, 오퍼랜드 B를 레코딩한다. 상기 선택 로직은 레코드된 오퍼랜드 B에 따라서 오퍼랜드 A의 부분 곱셈을 선택하고 게다가, 상기 캐리 저장 가산기에 선택된 부분 곱셈을 제공한다. 그러면 상기 가산기는 부분 캐리 및 부분 합에 대한 부분 곱셈을 감소시킨다. 상기 멀티플렉서(520)는 36비트 ALU(FALU_36)(530)이 부분 합 및 캐리를 수행하는지 또는 오퍼랜드 A 및 B를 수행하는지에 따라 선택된다. 이와 동시에, 36비트 ALU(FALU_36)(530)는 72비트 어큐뮬레이터(540)에서 데이터가 처리되도록 상기 72비트 어큐뮬레이터(540)는 2배 길이의 레지스터에 데이터를 저장한다. 본 발명에 따라서, 36비트 ALU(FALU_36)(530)는 필요한 마이크로프로세서 명령어를 수행하도록 적은 ALU로 분해된다.
마이크로프로세서 명령어는 분류하는 한가지 방법은 명령어가 수행되는 필요한 사이클의 수에 의한 방법이다. 일반적으로, 한 사이클 명령어는 용이하게 멀티 사이클 명령어를 실행하는 것보다 적은 칩 면적을 필요로 한다. 그러므로, 한 사이클 기능적 장치를 연결하거나 공유함으로써 멀티 사이클 명령어를 실행하는 것은 각각의 명령어에 대해서, 멀티 사이클 기능적 장치보다 칩면적과 비용을 절감할 수 있다. 부록 테이블 A2 내지 A8에는 본 발명의 바람직한 실시예에 따른 벡터 처리기용 명령어 세트를 기술하고 있다. 정수 곱셈 및 MAC 및 부동 소수점 가산/감산 및 곱셈은 연속적으로 한 사이클 명령어를 수행함으로써 처리되는 멀티 사이클 명령어이다.
도 6에는 36비트 ALU(FALU_36)(530)를 도시한 일반적인 블록다이아그램을 도시하고 있으며, 상기 36비트 ALU(FALU_36)(530)는 ALUs, ALU1(610), ALU2(620) 및 ALU3(630)과 함께 테이블 A2 내지 A8에 있는 명령어를 실행하는데 필요한 72비트 어큐뮬레이터(540)에 대한 패스를 도시하고 있다. ALU1(610)는 로직컬계열의 세트(테이블 A2), 시프트 및 회전계열(테이블 A3), 엠펙계열(테이블 A5), 데이터 타입 변환급(테이블 A6) 및 인터 요소 연산계열(테이블 A7)을 실행한다. ALU3(630)은 테이블 A8에 있는 명령어의 인터 요소 이동계열 세트를 수행한다. (테이블 A4)에 있는 연산계열 명령어는 ALU1(610), ALU2(620), 곱셈기(510)의 다양한 결합을 통해서 수행되며, 이들 모두는 한 클럭 사이클 연산을 수행한다.
ALU1(610), ALU2(620) 및 72비트 어큐뮬레이터(540)는 모두 데이터 전송이 이루어지고 멀티 사이클 연산 명령어를 수행하도록 함께 연결되어 있는데, 왜냐하면 ALU3의 한 사이클 명령어는 멀티 사이클 명령어가 필요없기 때문이다. ALU3(630) 및 ALU1(610) 또는 ALU2(620)에 연결되지 않으며, 상기, ALU1(610) 및 ALU2(620)는 상기 ALU2(620)이 멀티 사이클 명령어를 요구할 때, ALU1(610)으로부터 결과를 수행하도록 연결되어 있다.
도 7은 ALU1(610) 및 ALU2(620) 내에 있는 기능적 블록과 정수 곱셈 및 MAC 및 부동 포이트 가산/감산 및 곱셈 연산을 수행하는 데이터 패스 슬라이스(410)의 다양한 요소 사이의 상호 결합을 보여준 데이터 패스 슬라이스(410)의 더욱 상세한 블록 다이아그램을 도시하고 있다. 도 7은 본 발명의 일 실시예를 도시하고 있으며, 멀티 사이클 연산은 한 사이클 명령어 및 기능적 장치의 연속으로 수행된다. ALU1(610)은 정렬회로(710), 9비트 가산기(720) 및 36비트 가산기(730)를 포함한다. ALU2(620)은 36비트 가산기(735), 및 정규화 회로(740) 및 라운딩 회로(750)를 포함한다.
정수 MAC 연산은 한 사이클 명령어와 기능적 장치를 사용하는 두 클럭 사이클로 실행된다, 정수곱셈 또는 MAC의 제1클럭 사이클 동안에, 곱셈기(510)는 64비트 부분 캐리 및 36비트 데이터 슬라이스 A 및 B로부터 64비트 부분 합을 만든다. 상기 36비트 데이터 슬라이스 A 및 B는 1개의 32비트 정수, 두개의 16비트 정수, 2개의 9비트 정수 또는 4개의 8비트 정수로 표현될 수 있다. 64비트 부분 캐리는 두 개의 32비트로 나누어지고, 캐리-로우(CRYL[31:0])는 비트 0-31을 나타내고, 캐리-하이는(CRYL[63:32])32-63비트를 나타낸다. 이와 같이, 64비트 부분 합은 캐리-로우 및 캐리-하이로 구분된다.
또한, 제1클럭 사이클 동안에, 72비트 어큐뮬레이터(540)는 명령어가 곱셈 또는 MAC인가에 따라 ALU1(610) 및 ALU2(620)용 데이터를 페치한다. 만약 MAC 연산이 적당하다면, 72비트 어큐뮬레이터(540)는 ALU2(620)의 36비트 가산기(735)와 ALU1(610)의 36비트 가산기(730)로 각각 하위 비트(ACCL[35:0]) 및 상위 비트(ACCH[71:36])를 전송한다. 72비트 어큐뮬레이터(540)는 기능적 장치의 이전 출력 또는 오퍼랜드 데이터 A 및 B를 포함한다. 제2클럭 사이클 동안에, ALU1(610) 및 ALU2(620)에 포함되어 있어 36비트 가산기(730) 및 36비트 가산기(735)는 72비트 어큐뮬레이터(540) 및/또는 멀티플렉서(185, 195)에 36비트 결과를 각각 제공하도록, 부분 캐리 비트, 부분 합 비트 및 어큐뮬레이터 비트를 가산한다. 캐리비트 C:는 36비트 가산기가 36비트 보다 큰 폭을 갖는 입력 신호를 더할때, ALU2의 36비트 가산기(735)로부터 32비트 데이터 타입용 ALU1의 36비트 가산기(730)로 전송된다. 특허출원 번호가 아직 알려지지 않은 다른 데이터 형태로 곱셈 데이터를 처리하는 가산기라는 발명의 명칭을 갖는 미합중국 특허 출원 명세서(변리사 참조번호:M-4601)에는 곱셈 데이터 형태를 처리하는 바람직한 가산기가 기술되어 있으며, 상기 미합중국 특허출원 명세서의 내용은 본 발명에서 참조로 인용된다.
도 8은 ALU1(610) 및 ALU2(620)의 36비트 가산기(730) 및 36비트 가산기(735)의 일 실시예를 도시한 블록 다아이그램이다. 각각의 ALU는 36개의 3:2 캐리저장 가산기(810)와 하나의 36비트 캐리 룩어헤드(lookahead) 가산기(820)를 포함하고 있다. ALU1(610)의 36비트 가산기(730)에 있는 36개의 캐리 저장 가산기(810) 각각은 상위 합, 상위 캐리 및 하이 어큐뮬레이터 비트를 가산하여 36개의 합 및 캐리 비트 쌍이 된다. 이와 같이, ALU2(620)의 36비트 가산기(735)에 있는 상기 36개의 캐리 저장 가산기(810)는 하위 합, 하위 캐리 및 하위 어큐뮬레이터 비트를 가산한다. 그러면 이러한 캐리 및 합의 비트는 두개의 36비트 캐리 룩어헤드가산기(820)가 더해져서 마지막 결과를 얻으며, 이러한 마지막 결과는 멀티플렉서(185, 195) 또는 72비트 어큐뮬레이터(540)로 전송된다. 상기 ALU2(620)의 36비트 가산기(735)에 있는 캐리-룩 어헤드 가산기는,입력 오퍼랜드가 36비트 가산기(730)에 있는 캐리 룩어헤드 보다 데이터 폭이 클 때, 최대 유효 비트로부터 ALU1(610)의 36비트 가산기(820)의 최소 유효 비트 위치로 캐리 비트가 전달된다.
도 7을 참고하면, 또한 한 사이클 ALUs는 부동 소수점 가산/감산 및 부동소수점 곱셈 연산을 구현하도록 공유한다. 부동 소수점 표현을 위한 포맷은 이미 잘 알려진 공지 내용이다. 본 발명은 바람직한 실시예는 가수를 나타내는 23비트, 지수를 나타내는 8비트 및 사인을 나타내는 1비트를 포함하고 있는 32비트를 사용하여 나타내는 IEEE-754 하나의 정밀 데이터 타입을 지원한다. 이러한 32 데이터 비트는 32비트 데이타 타입용 도 3에 도시된 자리에 위치한다.
게다가, 도 7은 상기에 기술한 바와 같이 정수 연산을 위해 기능적 장치를 사용한 2개의 클럭 사이클에서 부동 소수점 가산/감산을 수행하는 동작을 기술하고 있다. 추가적인 요구에 따라서, ALU2(620)는 정렬 오퍼랜드 A' 및 B' 또는 제1클럭 사이클에서, ALU1(610)의 A' 및 B'의 추가로부터 결과 C중에서 어느 하나를 수용한다. 그러면, ALU2는 제2클럭 사이클에서 바람직한 결과를 얻도록 수행을 계속한다. 그러므로, 부동 가산/감산 ALU1 및 ALU2는 정수 곱셈 및 MAC 연산을 위해 병렬보다는 연속적으로 사용되는 편이 바람직하다.
ALU1(610)에서, 정렬회로(710)는 제1클럭 사이클 동안에 오퍼랜드 A 및 B의 8비트 지수 값을 비교한다. 그러면 정렬회로(710)는 정렬된 오퍼랜드 A 및 B를 제공하는 지수 사이의 차이와 같은 비트의 수 만큼 오른쪽으로 작은 오퍼랜드의 23비트 가수를 시프트 시킨다. 그러면 상기 정렬된 오퍼랜드 A' 및 B'는 제1클럭 사이클 동안 더 수행되는 ALU1(610)의 36비트 가산기(730)에 전송되거나 또는 상기 지수에서의 차이의 가수가 1이하이면, 예를 들면 시프트량이 1 또는 0비트에 따라 제2클럭 사이클 동안 수행되도록 ALU2(620)의 36비트 가산기(735)에 전송된다.
만약 가수가 1비트 이상 이동되면, 정렬회로(710)는 정렬된 오퍼랜드 A' 및 B'를 제2클럭 사이클에서 처리되도록 ALU2(620)의 36비트 가산기(730)로 출력한다. 그렇지 않으면, ALU1(610)은 제1클럭 사이클에서, 36비트 가산기(730)에서 정렬된 오퍼랜드 A' 및 B'의 23비트 가수를 가산함으로써 연산을 수행한다. ALU1로 기술된 시프터 및 가산기의 회로 및 설계는 이미 공지 기술로 널리 알려져 있다.
그러면 ALU2(620)는 제2클럭 사이클에서 ALU1(610)이 시작된 과정을 완료한다. 만약 가수가 1비트 이상 시프트된다면, ALU2(620)의 36비트 가산기(730)는 23비트 정렬된 가수 A' 및 B'를 가산한다. 정규화 회로(740)는 ALU1(610) 또는 ALU2(620)중에서 어느 하나의 A' 및 B'를 가산한다. 가산기(735)로부터 결과C를 정규화하도록 종래의 방법을 사용한다. 이러한 가산 이유는 제2클럭 사이클에서 부동 소수점 가산/감산 연산을 완료하는 가수 시프트량에 따라서 ALU1(610) 또는 ALU2(620)중에서 어느 하나를 수행하기 때문이다. 만약 한비트 이상 가수가 시프트된다면, 사전 정규화 연산은 ALU1이 1사이클에서 사전 정규화를 수행한다. 그리고 ALU2는 제2클럭 사이클에서 가산 및 사후 정규화를 수행한다. 그러나, 만약 가수가 1 또는 0비트 시프트된다면, 사후 정규화는 리딩 제로의 대부분이 될 가능성을 나타낸다. 그러므로, ALU1은 사전 정규화 및 제1클럭 사이클에서 가산 모두를 실행하고, ALU2는 제2클럭 사이클에서 사후 정규화를 수행한다. 만약 결과 C가 오버플로우된다면, 상기 가수는 1비트 오른쪽으로 시프트됨으로써 공통 지수가 증가하게 된다. 그렇지 않으면, 상기 가수가 왼쪽으로 시프트되고 공통 지수가 상기 가수의 최대 유효 비트의 위치를 정정하기 위해 요구되는 이동량 만큼 감소된다. 상기 이동량은 리딩 제로의 수와 같고 리딩 제로 검출기에 의해 검출된다. 정규화된 후, 상기 가수는 제2클럭 사이클 동안에 라운딩 회로(750)에서 라운드된다. 라운딩 회로(750)는 4개의 라운딩 모드: 근접 값(RN)에 대한 언바이어스 라운딩, 초핑 및 트런케이팅(RZ), 마이너스 무한대(RN)쪽으로 라운드 및 플러서 무한대(RP)쪽으로 라운드되는 모드 중에서 어느 하나에 따라서 가수를 라운딩한다. 정규화 회로(740) 및 라운딩 회로(750)는 이미 널리 알려진 공지 기술이다.
도 7은 또한 부동 소수점 곱셈 연산을 수행하는 한 사이클 ALUs를 공유하고 있는 것을 도시하고 있다. 제1클럭 사이클에서, 곱셈기(510)는 오퍼랜드A 및 B의 가수에서 48비트 부분 합 및 48비트 부분 캐리를 생성한다. 바람직한 곱셈기는 이미 공지된 기술이며 상기에 기술된 내용을 포함하고 있다. 제2클럭 사이클에서, ALU1(610)의 36비트 가산기(730)는 36개의 부분 합 및 캐리의 최대 유효 비트를 가산하고, 9비트 가산기(720)는 A 및 B의 2개의 9비트 지수값을 가산한다. 9비트 가산기는 정수 연산 또는 다른 형태의 공지된 설계에 따라 기술되는 것과 유사한다. 제3클럭 사이클에서, ALU2(620)정규화 회로(740)는 정규화되고 ALU2(620)의 라운딩 회로(750)는 23비트 가수, 8비트 지수 및 1비트 사인으로 이루어져서 36비트 결과를 가져오도록 ALU1(610)의 36비트 가산기(730)에서 결과를 반올림한다. 상기 정규화 및 반올림 로직은 상기에 기술된 부동 소수점 가산/감산 연산과 같다. 이러한 과정의 결과는 72비트 어큐뮬레이터(540) 또는 멀티플렉서(185, 195)에 전송된다.
결론적으로, 정수 곱셈 및 MAC 및 부동 소수점 가산/감산 및 곱셈의 멀티 사이클 명령어는 한 사이클 곱셈기, 2개의 한 사이클 ALUs 및 어큐뮬레이터와 함께 연쇄적으로 수행된다. 이와 같이 적으면서도 저렴한 회로를 공유하여 다른 연산을 수행함으로써 프로세서의 사이즈와 비용을 절감할 수 있다.
본 발명을 특정의 바람직한 실시예에 관련하여 도시하고 설명하였지만, 본 발명이 그에 한정되는 것은 아니다. 특히 IEEE-754 데이터 포멧을 참고한 과정 설명, 고정 정수 데이터 형태, 288비트 데이터 폭 및 4개의 멀티 사이클 마이크로프로세서 명령어는 비록 본 발명의 다른 실시예로서, 다른 데이터 형태, 포맷, 폭 뿐만아니라 다른 멀티 사이클 명령어에 적용될 수 있다. 따라서, 이하의 특허청구범위에 의해 마련되는 본 발명의 정신이나 분야를 이탈하지 않는 한도내에서 본 발명이 다양하게 개조 및 변화될 수 있다는 것을 당 업계에서 통상의 지식을 가진 자는 용이하게 알 수 있다.
부록
테이블 A1은 하나의 32비트 추가, 2개의 16비트 병렬로 추가 또는 4개의 8비트 병렬로 추가 되는 것 중에서 어느 하나가 실행되도록 36비트 가산기를 사용하는 방법을 설명하고 있다. 어텐드의 비트를 포함하는 8, 17 및 26비트는 수행되는 비트로부터 캐리를 차단하는 대신에 수행되는 비트로부터 캐리비트를 전송하므로, 캐리를 발생하는 값을 가지고 있다. 테이블 A1에서, FB는 캐리를 차단하도록 어텐드 양쪽의 비트 위치에 0을 삽입한다. FG는 캐리를 발생하도록 어텐드 양쪽의 비트 위치에 1을 삽입하며, 그리고 FP는 캐리가 발생되도록 하나의 어텐드의 비트 위치에 1을 삽입하고 다른 어텐드의 비트 위치에 0을 삽입한다.
[테이블 A1]
본 발명의 실시예에 따라, 벡터 처리기의 바람직한 실시예의 명령어 세트의 서브세트를 설명한다. 게다가, 상기 벡터 처리기의 바람직한 실시예의 명령어 세트는 멀티미디어 신호 처리기에서 하나의 명령 곱셈 데이터 처리라는 발명의 명칭을 갖는 미합중국 특허출원 제08/699,597호에 기재되어 있으며, 상기 미합중국 특허출원 명세서의 내용은 본 발명에서 참조로 인용된다.
로직계열은 부울 데이터 타입을 지원하고 ALU1에 의해 실행된다. 테이블 A2는 논리 명령어를 나타내고 있다.
[테이블 A2]
논리 명령어
이동/회전 계열 명령어는 8비트, 9비트, 16비트 및 32비트 정수 데이터 타입으로 연산되고 ALU1에 의해 실행된다. 테이블 A3은 이동/회전 계열 명령어를 나타내고 있다.
[테이블 A3]
이동 및 회전 계열
테이블 A4에 기술된 상기 연산 계열 명령어는 일반적으로, 8비트, 9비트, 16비트, 32비트 정수 및 32비트 부동 소수점 데이터 형태를 지원한다. 상기 연산 계열은 ALU1, ALU2, 곱셈기 및 어큐뮬레이터가 다양하게 결합함으로써 수행될 수 있다.
[테이블 A4]
연산 계열
테이블 A5는 엠펙 명령어를 나타내고 있다. 상기 엠펙 명령어는 8비트, 9비트, 16비트, 32비트 정수 데이터 형태를 지원하고 ALU1에 의해 수행된다.
[테이블 A5]
엠펙 계열
각 데이터 형태 변환 명령어는 특수한 데이터 형태를 지원한다. 아키텍쳐는 레지스터에서 하나의 데이터 형태 이상을 지원하지 않는다. 테이블 A6은 ALU1에 의해 수행되던 데이터 형태 변환 명령어를 나타내고 있다.
[테이블 A6]
데이터 형태 변환 계열
테이블 A7은 ALU1에 의해 실행되던 명령어의 인터-요소 연산 계열을 나타내고 있다. 상기 인터-요소 연산 계열은 8비트, 9비트, 16비트, 32비트 정수 및 32비트 부동 소수점 데이터 형태를 지원하다.
[테이블 A7]
인터-요소 연산 계열
명령어의 인터-요소 이동 계열은 8비트, 9비트, 16비트, 32비트 정수 및 32비트 부동 소수점 데이터 형태를 지원한다. 테이블 A8은 ALU3에 의해 수행되는 명령어의 인터-요소 이동 계열을 나타내고 있다.
[테이블 A8]
인터 요소 이동 계열

Claims (12)

  1. 한 사이클 기능적 장치를 구성하고 있는 프로세서내에서 명령어를 실행하는 실행 장치에 있어서,
    상기 한 사이클 기능적 장치는 멀티 사이클 명령어를 연속 연산으로 실행하도록 함께 결합되어 있으며, 한 사이클 기능적 장치가 연속적으로 동작되는 것은 명령어가 실행됨에 따라 선택되는 것을 특징으로 하는 실행 장치.
  2. 제1항에 있어서,
    상기 한 사이클 기능적 장치는 제1연산 로직 장치와,
    상기 제1연산 장치에 결합된 제2연산 로직 장치로 구성되어 있으며, 상기 제1 및 제2연산 장치는 제1명령어가 실행될 때, 연속적으로 동작되며, 제2명령어가 실행될 때 병렬로 동작되는 것을 특징으로 하는 실행 장치.
  3. 제2항에 있어서,
    상기 한 사이클 기능적 장치는,
    상기 제1 및 제2연산 로직 장치에 결합된 곱셈기와,
    입력 데이터 및 상기 제1 및 제2연산 로직 장치에 결합되어 있는 어큐뮬레이터를 더 포함하여 이루어진 것을 특징으로 하는 실행 장치.
  4. 제3항에 있어서,
    상기 제1연산 로직 장치는 정렬 회로 및 가산기를 형성하고 있으며, 상기 제2연산 로직 장치는 정규화 회로, 라운딩 회로 가산기를 형성하고 있는 것을 특징으로 하는 실행 장치.
  5. 제1항에 있어서,
    상기 실행 장치는 멀티 데이터 요소를 가지고 있는 벡터 데이터를 처리하는 것을 특징으로 하는 실행 장치.
  6. 제5항에 있어서,
    상기 각 데이터 요소는 8비트, 9비트, 16비트 또는 32비트 형태를 포함하는 세트로부터 선택된 데이터 형태를 가지고 있는 것을 특징으로 하는 실행 장치.
  7. 제1항에 있어서,
    상기 실행 장치는 정수 또는 부동 소수점 데이터를 실행하는 것을 특징으로 하는 실행 장치.
  8. 데이터 레지스터를 포함하는 레지스터 파일과, 상기 데이터 레지스터에 결합된 실행 장치로 구성되어 있으며,
    상기 데이터 레지스터내에 있는 데이터는 복수개의 데이터 요소로 구분되며, 각 데이터 요소는 가능한 데이터 타입의 세트로부터 선택된 데이터 타입이며,
    상기 실행 장치는 병렬로 연산되는 독립 데이터 패스 슬라이스로 구분되어 있으며, 가능한 데이터 형태중에서 가장 큰 데이터 폭을 가지고 있는 것을 특징으로 하는 벡터 처리기.
  9. 제8항에 있어서,
    상기 가능한 데이터 형태의 세트는 8비트, 9비트, 16비트 또는 32비트 데이터 형태로 이루어진 것을 특징으로 하는 벡터 처리기.
  10. 제8항에 있어서,
    상기 가능한 데이터 형태의 세트는 정수 및 부동 소수점 데이터 형태로 구성되어 있는 것을 특징으로 하는 벡터 처리기.
  11. 제8항에 있어서,
    상기 각 데이터 패스 슬라이스는 서로 결합되고 멀티 사이클 연산을 수행하도록 공유된 한 사이클 기능적 장치를 형성하고 있는 것을 특징으로 하는 벡터 처리기.
  12. 벡터 레지스터내에 있는 데이터를 저장하는 단계와,
    데이터를 복수의 데이터 요소로 구분하는 단계와,
    병렬로 각 데이터 요소내에 있는 데이터를 데이터 레지스터의 다른 데이터 요소로 처리하는 단계를 포함하여 이루어진 것을 특징으로 하는 데이터 처리방법.
KR1019970036425A 1997-01-28 1997-07-31 벡터 처리기용 실행 장치 데이터 패스 KR100267103B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US8/790,142 1997-01-28
US08/790,142 US6401194B1 (en) 1997-01-28 1997-01-28 Execution unit for processing a data stream independently and in parallel

Publications (2)

Publication Number Publication Date
KR19980069870A true KR19980069870A (ko) 1998-10-26
KR100267103B1 KR100267103B1 (ko) 2000-10-02

Family

ID=25149762

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970036425A KR100267103B1 (ko) 1997-01-28 1997-07-31 벡터 처리기용 실행 장치 데이터 패스

Country Status (2)

Country Link
US (1) US6401194B1 (ko)
KR (1) KR100267103B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100428755B1 (ko) * 2001-08-31 2004-04-30 주식회사 현대시스콤 비트 슬라이스 모듈러 곱셈기

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7301541B2 (en) 1995-08-16 2007-11-27 Microunity Systems Engineering, Inc. Programmable processor and method with wide operations
US5953241A (en) * 1995-08-16 1999-09-14 Microunity Engeering Systems, Inc. Multiplier array processing system with enhanced utilization at lower precision for group multiply and sum instruction
US6295599B1 (en) * 1995-08-16 2001-09-25 Microunity Systems Engineering System and method for providing a wide operand architecture
US5742840A (en) * 1995-08-16 1998-04-21 Microunity Systems Engineering, Inc. General purpose, multiple precision parallel operation, programmable media processor
US6643765B1 (en) * 1995-08-16 2003-11-04 Microunity Systems Engineering, Inc. Programmable processor with group floating point operations
US5864703A (en) * 1997-10-09 1999-01-26 Mips Technologies, Inc. Method for providing extended precision in SIMD vector arithmetic operations
US6624819B1 (en) * 2000-05-01 2003-09-23 Broadcom Corporation Method and system for providing a flexible and efficient processor for use in a graphics processing system
JP4203979B2 (ja) * 2000-08-02 2009-01-07 富士通株式会社 パケット処理装置
WO2002084451A2 (en) * 2001-02-06 2002-10-24 Victor Demjanenko Vector processor architecture and methods performed therein
US20030088407A1 (en) * 2001-04-02 2003-05-08 Yi Hu Codec
US7080111B2 (en) * 2001-06-04 2006-07-18 Intel Corporation Floating point multiply accumulator
US7212959B1 (en) * 2001-08-08 2007-05-01 Stephen Clark Purcell Method and apparatus for accumulating floating point values
US20030154347A1 (en) * 2002-02-12 2003-08-14 Wei Ma Methods and apparatus for reducing processor power consumption
DE10206830B4 (de) * 2002-02-18 2004-10-14 Systemonic Ag Verfahren und Anordnung zur Zusammenführung von Daten aus parallelen Datenpfaden
JP4263693B2 (ja) * 2002-09-24 2009-05-13 インターデイジタル テクノロジー コーポレーション 計算量的に効率的な数学エンジン
US20050050306A1 (en) * 2003-08-26 2005-03-03 Sridhar Lakshmanamurthy Executing instructions on a processor
TWI258698B (en) * 2004-04-06 2006-07-21 Ind Tech Res Inst Static floating-point processor suitable for embedded digital signal processing and shift control method thereof
US7421139B2 (en) * 2004-10-07 2008-09-02 Infoprint Solutions Company, Llc Reducing errors in performance sensitive transformations
US9092213B2 (en) * 2010-09-24 2015-07-28 Intel Corporation Functional unit for vector leading zeroes, vector trailing zeroes, vector operand 1s count and vector parity calculation
US8667042B2 (en) * 2010-09-24 2014-03-04 Intel Corporation Functional unit for vector integer multiply add instruction
US8930432B2 (en) * 2011-08-04 2015-01-06 International Business Machines Corporation Floating point execution unit with fixed point functionality
US8566761B2 (en) 2011-11-21 2013-10-22 International Business Machines Corporation Network flow based datapath bit slicing
US8892822B2 (en) * 2011-11-29 2014-11-18 Oracle International Corporation Selectively dropping prefetch requests based on prefetch accuracy information
US8949575B2 (en) 2011-12-14 2015-02-03 International Business Machines Corporation Reversing processing order in half-pumped SIMD execution units to achieve K cycle issue-to-issue latency
WO2013095648A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Three input operand vector add instruction that does not raise arithmetic flags for cryptographic applications
JP5462305B2 (ja) * 2012-03-12 2014-04-02 株式会社東芝 画像処理装置、画像処理方法およびそのプログラム
KR101767927B1 (ko) * 2012-11-01 2017-08-17 한화테크윈 주식회사 실시간 움직임 검출 방법 및 시스템

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6043535B2 (ja) * 1979-12-29 1985-09-28 富士通株式会社 情報処理装置
US4589067A (en) * 1983-05-27 1986-05-13 Analogic Corporation Full floating point vector processor with dynamically configurable multifunction pipelined ALU
US5522082A (en) * 1986-01-23 1996-05-28 Texas Instruments Incorporated Graphics display processor, a graphics display system and a method of processing graphics data with control signals connected to a central processing unit and graphics circuits
GB8605367D0 (en) * 1986-03-05 1986-04-09 Secr Defence Bit-slice digital processor
US5222241A (en) * 1987-06-05 1993-06-22 Mitsubishi Denki Kabushiki Kaisha Digital signal processor having duplex working registers for switching to standby state during interrupt processing
US5226126A (en) * 1989-02-24 1993-07-06 Nexgen Microsystems Processor having plurality of functional units for orderly retiring outstanding operations based upon its associated tags
US5781753A (en) * 1989-02-24 1998-07-14 Advanced Micro Devices, Inc. Semi-autonomous RISC pipelines for overlapped execution of RISC-like instructions within the multiple superscalar execution units of a processor having distributed pipeline control for speculative and out-of-order execution of complex instructions
KR0163179B1 (ko) * 1989-03-31 1999-01-15 미다 가쓰시게 데이타 프로세서
US5197130A (en) * 1989-12-29 1993-03-23 Supercomputer Systems Limited Partnership Cluster architecture for a highly parallel scalar/vector multiprocessor system
US5809292A (en) * 1990-11-13 1998-09-15 International Business Machines Corporation Floating point for simid array machine
JPH04336378A (ja) * 1991-05-14 1992-11-24 Nec Corp 情報処理装置
US5347639A (en) * 1991-07-15 1994-09-13 International Business Machines Corporation Self-parallelizing computer system and method
JPH05282143A (ja) * 1992-03-30 1993-10-29 Nec Ibaraki Ltd 主記憶アクセス制御回路
US5268855A (en) * 1992-09-14 1993-12-07 Hewlett-Packard Company Common format for encoding both single and double precision floating point numbers
EP0607988B1 (en) * 1993-01-22 1999-10-13 Matsushita Electric Industrial Co., Ltd. Program controlled processor
US5717908A (en) * 1993-02-25 1998-02-10 Intel Corporation Pattern recognition system using a four address arithmetic logic unit
US5517656A (en) * 1993-06-11 1996-05-14 Temple University Of The Commonwealth System Of Higher Education Multicomputer system and method
US5526039A (en) * 1994-09-16 1996-06-11 The United States Of America As Represented By The Secretary Of The Army Relativity stereo scan
US5530661A (en) * 1994-10-05 1996-06-25 Winnov Data bit-slicing apparatus and method for computing convolutions
US5630161A (en) * 1995-04-24 1997-05-13 Martin Marietta Corp. Serial-parallel digital signal processor
US5768594A (en) * 1995-07-14 1998-06-16 Lucent Technologies Inc. Methods and means for scheduling parallel processors
WO1998006042A1 (en) * 1996-08-07 1998-02-12 Sun Microsystems, Inc. Wide instruction unpack method and apparatus
US5835793A (en) * 1997-05-02 1998-11-10 Texas Instruments Incorporated Device and method for extracting a bit field from a stream of data
US5951629A (en) * 1997-09-15 1999-09-14 Motorola, Inc. Method and apparatus for log conversion with scaling

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100428755B1 (ko) * 2001-08-31 2004-04-30 주식회사 현대시스콤 비트 슬라이스 모듈러 곱셈기

Also Published As

Publication number Publication date
KR100267103B1 (ko) 2000-10-02
US6401194B1 (en) 2002-06-04

Similar Documents

Publication Publication Date Title
KR100267103B1 (ko) 벡터 처리기용 실행 장치 데이터 패스
US6078941A (en) Computational structure having multiple stages wherein each stage includes a pair of adders and a multiplexing circuit capable of operating in parallel
EP0699318B1 (en) Unified floating point and integer datapath for risc processor
JP3578502B2 (ja) 単一プロセッサにおいて並列データ処理を実行する方法
US7797363B2 (en) Processor having parallel vector multiply and reduce operations with sequential semantics
US5844830A (en) Executing computer instrucrions by circuits having different latencies
US5631859A (en) Floating point arithmetic unit having logic for quad precision arithmetic
US6377970B1 (en) Method and apparatus for computing a sum of packed data elements using SIMD multiply circuitry
US5272660A (en) Method and apparatus for performing integer and floating point division using a single SRT divider in a data processor
US8577948B2 (en) Split path multiply accumulate unit
JP2557190B2 (ja) 引き数簡約の最適化システム
JPH0727456B2 (ja) 浮動小数点演算装置
Bruguera et al. Floating-point fused multiply-add: reduced latency for floating-point addition
Mueller et al. The vector floating-point unit in a synergistic processor element of a Cell processor
JPH06236257A (ja) データ・プロセッサにおいて浮動小数点実行ユニット内で後正規化を実行する方法および装置
JPH01112332A (ja) 乗算及び算術論理演算機能を組合わせて使用する浮動小数点ユニット
US8019805B1 (en) Apparatus and method for multiple pass extended precision floating point multiplication
US20050228844A1 (en) Fast operand formatting for a high performance multiply-add floating point-unit
US7219117B2 (en) Methods and systems for computing floating-point intervals
Eisig et al. The design of a 64-bit integer multiplier/divider unit
US8938485B1 (en) Integer division using floating-point reciprocal
JP3132436B2 (ja) 浮動小数点積和演算器
US11789701B2 (en) Controlling carry-save adders in multiplication
RU2276805C2 (ru) Способ и устройство для выделения целой и дробных компонент из данных с плавающей точкой
US11704092B2 (en) High-precision anchored-implicit processing

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130701

Year of fee payment: 14

FPAY Annual fee payment

Payment date: 20140630

Year of fee payment: 15

FPAY Annual fee payment

Payment date: 20150630

Year of fee payment: 16

FPAY Annual fee payment

Payment date: 20160630

Year of fee payment: 17

LAPS Lapse due to unpaid annual fee