KR19980069855A - 넓은 데이터 폭의 프로세서에서 다기능 데이타 정렬기 - Google Patents

넓은 데이터 폭의 프로세서에서 다기능 데이타 정렬기 Download PDF

Info

Publication number
KR19980069855A
KR19980069855A KR1019970034999A KR19970034999A KR19980069855A KR 19980069855 A KR19980069855 A KR 19980069855A KR 1019970034999 A KR1019970034999 A KR 1019970034999A KR 19970034999 A KR19970034999 A KR 19970034999A KR 19980069855 A KR19980069855 A KR 19980069855A
Authority
KR
South Korea
Prior art keywords
data
value
data element
operand
processor
Prior art date
Application number
KR1019970034999A
Other languages
English (en)
Other versions
KR100236525B1 (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 KR19980069855A publication Critical patent/KR19980069855A/ko
Application granted granted Critical
Publication of KR100236525B1 publication Critical patent/KR100236525B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • G06F5/015Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising having at least two separately controlled shifting levels, e.g. using shifting matrices
    • 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/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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
    • 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
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Abstract

넓은 데이타 폭의 프로세서는 로드/저장 명령을 위한 데이타를 정렬시키고 산술 논리 명령을 위한 데이타를 쉬프트하거나 회전시키는 정렬기를 구비한 실행유닛을 갖는다. 이와 같이 서로 다른 종류의 명령을 위한 동일한 회로와 실행 유닛의 사용은 정렬 회로가 반복될 필요가 없기 때문에 로드/저장 유닛에서 한번 그리고 산술 논리 유닛에서 한번 전체적인 회로 크기를 감소시킨다.

Description

넓은 데이타 폭의 프로세서에서 다기능 데이타 정렬기
본 발명은 디지탈 프로세서에 관한 것으로, 더 상세하게는 쉬프트 명령을 위한 데이타를 조작하거나 또는 로드/저장 명령을 위한 데이타를 정렬시키는 회로에 관한 것이다.
프로세서는 전형적으로 서로 다른 종류의 명령을 실행하는데 필요한 특정 연산을 수행하는 특수화된 회로 유닛을 갖는다. 예를 들어, 전형적인 프로세서는 로드/저장 명령에 의해 필요로 되는 메모리를 엑세스하는 로드/저장 유닛, 및 소스 어퍼런드에 대해 뎃셈, 뺄셈, 곱셈, 나눗셈, 쉬프트 또는 부울린 연산을 수행하는 명령에 의해 필요로 되는 산술 연산을 수행하는 산술 논리 유닛(ALU)을 구비한다. 프로세서에 있는 다양한 회로 유닛은 전형적으로 유닛의 특수한 기능에 맞게 되어 있으며 다른 회로 유닛에 의해 사용할 수 없는 회로를 포함하고 있다.
데이타 정렬은 SIMD(단일 명령 복수 데이타) 프로세서와 같은 넓은 데이타폭의 프로세서(wide data width processor)의 로드/저장 유닛에서 바람직한 기능이다. 데이타 정렬없이, 메모리 시스템을 액세스하는 명령은 데이타 폭의 정수 곱인 정렬된 어드세스에 한정될 수 없다. 이는 프로그래밍을 복잡하게 할 수 있다. 그러나, 데이타 정렬은 정렬 하드웨어가 흔히 데이타 폭 내의 임의의 위치에서 데이타 폭 내의 다른 임의의 위치로 바이트를 이동시킬 수 있는 멀티플렉서의 네트웍을 포함하기 때문에 SIMD 프로세서에 구현하기에는 비싼 기능이다. 예를 들어, 32-바이트 데이타 폭을 위한 데이타 정렬 하드웨어는 각각 1-바이트 데이타 포트를 갖는 32개의 32-대-1 멀티플랙서를 포함할 수 있다. 이와 같은 정렬 하드웨어는 상당한 집적 회로 면적을 점유하고 SIMD 프로세서 집적 회로의 비용을 증가시킨다.
본 발명에 따르면, 프로세서는 로드/저장 명령에 필요한 데이타를 정렬시키고 쉬프트 명령에 필요한 오퍼런드 내에서 데이타 엘리먼트를 쉬프트시키기 위해 적응된 정렬기를 포함한다. 따라서, 상기 정렬기는 로드/저장 명령 및 쉬프트 명령에 사용된다. 다수 기능을 위한 정렬기의 사용은, 로드/저장 유닛에 한개 그리고 ALU에 한개인 두개의 개별적인 정렬기가 필요하지 않기 때문에 전체 회로 면적과 프로세서의 비용을 감소시킨다. 상기 정렬기는 특히 각각의 데이타 엘리먼트가 하나 이상의 데이타 바이트인 다수 데이타 엘리먼트를 갖는 데이타 벡터를 처리하는 SIMD 프로세서에 적합하다. 데이타 벡터에서 데이타 엘리먼트의 위치를 바꾸는 쉬프트 연산은 데이타 벡터에서 홀수 곱의 바이트 수인 베이스 어드레스에 데이타를 정렬시키는데 필요한 유형의 데이타 조작을 수행한다.
본 발명의 한 실시예는, 레지스터 화일 ; 메모리 시스템 인터페이스 ; 및 정렬기를 구비한 프로세서이다. 상기 정렬기는 레지스터 화일로부터 하나 또는 두 개의 데이타 값을 수신하고 메모리 시스템 인터페이스를 거쳐 메모리 시스템으로부터 데이타 값을 로드하도록 결합된 입력 선택 회로를 구비한다. 다수의 입력이 레지스터 화일에 접속되어 있으므로, 정렬기는 레지스터 화일로부터 데이타에 대해 쉬프트와 회전 연산을 실행하고 로드와 저장 데이타를 정렬시킬 수 있다. 본 발명의 다른 특징에 따르면, 입력 선택 회로는 두 개의 데이타 값을 선택하고, 정렬기는 회전 회로가 회전하는 중간 값을 구성하기 위해 두개의 값으로부터 데이타 엘리먼트를 선택하는 엘리먼트 선택 회로를 구비한다. 선택된 데이타 엘리먼트는 실행되고 있는 명령에 의존하고, 이와 같은 선택으로 회전 회로는 데이타 정렬 및 좌 및 우 쉬프트와 회전을 구현할 수 있게 된다.
도 1은 본 발명의 실시예에 따른 프로세서의 블럭도.
도 2는 저장/로드 및 데이타 엘리먼트 쉬프트 명령을 위한 실행 유닛의 블럭도.
도 3은 본 발명의 실시예에 따른 정렬기의 블럭도.
도 4a, 도 4b 및 도 4c는 로드 및 저장을 위한 데이타 엘리먼트 프로세서에 대한 도면.
도 5a 및 도 5b는 우 및 좌 데이타 엘리먼트 쉬프트 연산을 각각 도시하는 도면.
도 6, 도 7, 도 8 및 도 9는 도 3의 정렬기에서 회로 블럭의 내부 엘리먼트에 대한 도면.
*도면의 주요 부분에 대한 부호의 설명*
100 : SIMD 프로세서110 : 명령어 훼치 유닛
120, 122 : 명령어 디코더130 : 벡터 레지스터 화일
134 : 오퍼런드 정렬 MUX140, 142 : 실행 유닛
144 : 누산기150 : 파이프라인 제어 유닛
152 : 레지스터 화일 스코어보드154 : 자원 스코어보드
160 : 판독 제어 회로170 : 송출 제어 회로
180 : 기록 백 제어 회로210 : 명령어 큐
220 : 어드레스 발생기225 : 어드레스 큐
230 : 제어 회로240 : 정렬기
250 : 메모리 시스템
본 발명의 특징에 따르면, SIMS(단일 명령 복수 데이타) 프로세서와 같은 넓은 데이타 폭의 프로세서는 로드/저장 명령에 필요한 데이타 정렬과, 쉬프트 명령을 실행하는데 필요한 데이타 엘리먼트 이동 연산을 수행한다. 메모리 엑세스 명령과 산술 논리 명령 모두를 위한 동일한 정렬기의 사용은 프로세서를 집적 회로로 제조하는데 필요한 전체 회로 면적을 감소시키므로 제조 비용을 줄인다.
도 1은 본 발명의 실시예에 따른 SIMD 프로세서(100)를 도시한다. 프로세서(100)의 예시적인 실시예는 본 출원과 동일자로 출원되어 DEFERRED STORE DATA READ WITH SIMPLE ANTI-DEPENDENCY PIPELINE INTERLOCK CONTROL IN SUPERSCALAR PROCESSOR라는 발명의 명칭을 갖는 미합중국 특허출원 명세서(변리사 참조번호 : M-4709)를 참조할 수 있으며, 상기 미합중국 특허출원 명세서의 전체 내용은 본 발명에서 참조로 인용된다. 본 발명의 예시적인 실시예에 적합한 명령어 세트에 관해서는 SINGLE-INSTRUCTION-MULTIPLE-DATA PROCESSING IN A MULTIMEDIA SIGNAL PROCESSORDEFERRED STROE라는 발명의 명칭을 갖는 1996. 8.19자 미합중국 특허출원 제08/699,597호를 참고 할 수 있으며, 상기 미합중국 특허출원 명세서의 전체적인 내용은 본 발명에서 참조로 인용된다. 미합중국 특허출원 제08/699,597호에는 본 발명의 특징이 이용될 수 있는 대체 프로세서 아키텍춰를 상세히 기술하고 있다.
SIMD 프로세서(100)는 슈퍼스칼라 프로세서이고, 명령어 훼치 유닛(IFU)(110), 이중 명령어 디코더(120 및 122), 벡터 레지스터 화일(130), 스칼라 레지스터 화일(132), 및 병렬로 연산할 수 있는 이중 실행 유닛(140 및 142)을 구비한다. 명렁어 디코더(120)는 실행 유닛(140)이 예를 들어 소스 오퍼런드를 덧셈, 뺄셈, 곱셈, 또는 나눗셈을 수행하는 산술 논리 명령을 실행한다. 명령어 디코더(122)는 실행 유닛(142)이 실행하는 로드/저장 명령 및 데이타 엘리먼트 쉬프트 명령과, IFU(110)으로 복귀된 데이타 또는 조건 코드를 필요로 하는 분기 명령을 디코드한다. 본 발명에 서술된 바와 같이, 로드/저장 명령은 프로세서 메모리를 액세스하는 로드, 저장, 또는 다른 명령과, 오퍼런드 내에서 데이타 엘리먼트 위치의 산술 또는 논리적, 좌 또는 우 쉬프트, 회전 또는 변경을 필요로 하는 명령을 참조한다.
각 클럭 사이클마다, IFU(110)는 하나의 명령이 각각이 디코더(120와 122)를 위한 것인 최대 두개의 명령을 훼치 업한다. IFU(110)는 만일 디코더(120)가 프로그램 순서에서 다음 명령을 디코드할 수 있고 디코더(122)가 프로그램 순서에서 다음 명령의 바로 뒤에 오는 두번째 명령을 디코드할 수 있다면 가능한 병렬 디코딩 및 실행을 위해 래치(114)에서 한 개 그리고 래치(116)에 한개인 두개의 명령을 로드한다. 그렇지 않으면, IFU(110)는 래치(114 또는 116)에서 디코더(120) 또는 디코더(122)에 대해 프로그램 순서에서 단지 하나의 명령, 즉 다음 명령만을 로드한다.
디코드 단계 동안, 디코더(120 및 122)는 훼치된 명령에 의해 필요한 소스 오퍼런드의 레지스터 수를 결정한다. 예시적인 실시예에서, 각각의 명령은 기껏해야 3개의 소스 오퍼런드만을 갖는다. 래치(124)는 디코더(124)에 의해 디코드된 명령의 소스 오퍼런드의 레지스터 수를 보유한다. 래치(126)는 디코더(120)에 의해 디코드된 명령의 소스 오퍼런드의 레지스터 수를 보유한다. 각각의 벡터 레지스터 화일(130) 및 스칼라 레지스터 화일(132)은 최대 6개의 소스 오퍼런드가 사이클마다 판독될 수 있도록 3개의 판독 포트를 갖는다.
파이프라인 제어 유닛(150)은, 멀티플렉서(135)를 통해 래치(124 및 126)로 부터 어떤 레지스터 번호 및/또는 이전에 송출된 저장 명령을 위해 데이타를 저장하기 위한 레지스터 번호가 레지스터 화일(130 및 132)의 판독 포트로 라우트되는지를 선택하는 판독 제어 회로(160)를 포함한다. 선택 프로세서에서, 판독 제어(160)는 소스 오퍼런드중 어느 것이 송출된 명령에 의해 기록될 지를 결정하기 위해 레지스터 화일 스코어보드(152)를 점검한다. 만일 소스 오퍼런드가 송출된 명령에 의존하면, 소스 오퍼런드는 계류중인 명령에 판독-후-기록(RAW) 의존성을 가지며, 레지스터 화일(130 내지 132)에 있는 값을 아직 유효하지 않다. 판독 제어(160)는 다음 클럭 사이클 동안 레지스터 화일(130 및 132)로부터 판독하기 위해 이와 같은 소스 오퍼런드를 선택하지 않지만, 오퍼런드는 실행 유닛(140 또는 142)으로부터 포워드될 수 있다. (RAW) 의존성을 갖는 명령을 위한 다른 소스 오퍼런드가 레지스터 화일(130 및 132)로부터 선택되어 판독될 수 있다. 만일 RAW 의존성을 갖는 소스 오퍼런드를 위한 판독을 위한 판독을 제거한 후, 명령은 3개 이상의 벡터 오퍼런드 또는 3개 이상의 스칼라 오퍼런드를 판독할 것을 필요로 하고, 판독 제어 회로(160)는 하나의 명령, 프로그램 순서에서 다음 명령에 대해 레지스터 번호만을 선택하거나 또는 다음 명령이 스칼라든지 또는 벡터이던지 동일한 종류의 3개의 소스 오퍼런드를 필요로 하면 디코더(120 및 122)를 정체시키고, 동일한 종류의 데이타를 저장하기 위한 판독이 이전에 송출된 명령에 필요하다.
본 출원과 동일자로 출원되어 출원번호가 아직 알려지지 않은 RESERVATION STATION DESIGN IN VECTOR ARCHITECTURE TO REDUCE REGISTER READ PORTS라는 발명의 명칭을 갖는 미합중국 특허출원 명세서(변리사 참조번호 : M-4708_US)에는 본 발명의 예시적인 실시예를 위한 오퍼런드 포워딩에 대한 회로 및 프로세스가 상세하게 기재되어 있으며, 상기 미합중국 특허출원 명세서의 전체내용은 본 발명에서 참조로 인용된다. 본 출원과 동일자로 출원되어 출원번호가 아직 알려지지 않은 미합중국 특허출원 명세서(변리사 참조번호 : M-4709_US)에는 저장 명령의 처리 및 저장 데이타의 판독에 대해 기재하고 있다.
판독 단계 동안, 멀티플렉서(135)는 판독될 레지스터 화일(130 및 132)에서 레지스터를 위한 레지스터 번호를 선택한다. 예시적인 실시예에서, 벡터 레지스터 화일(130)은 32 벡터 레지스터의 2개 뱅크로 구성된 64개의 32-바이트(또는 256-비트) 벡터 레지스터를 포함한다. 벡터 레지스터는 각각 다수의 데이타 엘리먼트를 포함하는 데이타 벡터를 저장한다. 예를 들어, 32-바이트 데이타 벡터는 32개의 16-비트 데이타 엘리먼트, 16개의 16-비트 데이타 엘리먼트, 또는 8개의 32-비트 데이타 엘리먼트를 포함할 수 있다. 스칼라 레지스터 화일(132)은 32개의 32-비트 스칼라 레지스터를 포함하고, 각각의 스칼라 레지스터는 단일 8-비트, 16-비트, 또는 32-비트 값을 보유한다. 오퍼런드 정렬 멀티플렉서(134)는 레지스터 화일(130 및 132)로부터 판독된 데이타와, 실행 유닛(140 및 142)으로부터 포워드된 결과를 실행 유닛(140 및 142)을 위한 오퍼런드를 각각 보유하는 오퍼런드 래치(136 및 138)에 보낸다.
파이프라인 제어 유닛(150)에서 송출 제어 회로(170)는 래치(136 및 138)에서 필요한 소스 오퍼런드가 유효한지를 결정하고, 실행 단계로 명령을 송출하기 위해 필요한 자원이 이용가능한 지를 결정하기 위해 자원 스코어보드(154)를 점검한다. 명령의 송출은 오퍼런드 래치(138)로부터 소스 오퍼런드를 처리하는 실행 유닛(140 또는 142)을 개시한다. 예시적인 실시예에서, 실행 유닛(140)은 32-바이트 데이타 경로를 가지며, 데이타 엘리먼트에 대한 데이타 유형을 따라 32, 16 또는 8 병렬 산술 연산을 수행한다. 실행 유닛(140)은 하나 또는 두개 클럭 사이클로 정수 산술 연산을 완료하고, 3 클럭 사이클로 부동 소수점 연산을 완료한다. 실행유닛(142)은 이하에 서술되는 로드, 저장, 및 데이타 엘리먼트 이동 연산을 수행한다.
기록 제어 회로(180)는 실행 유닛(140 및 142)으로부터의 결과의 라우팅을 제어하고, 누산기(144)로부터 출력한다. 실행 유닛(140 및 142)으로부터의 결과는 누산기(144)에 저장될 수 있거나 기록 단계 동안 레지스터 화일(130 또는 132)에 기록하기 위해 기록 백 멀티플렉서(146)를 통해 래치(148) 및 송출될 명령에 대해 오퍼런드 포워딩하기 위해 오퍼런드 정렬 멀티플렉서(134)로 라우트될 수 있다.
도 2는 메모리 시스템(250)에 접속된 실행 유닛(142)의 실시예를 도시한다. 메모리 시스템(250)는 레벨-1 데이타 캐쉬와 같은 온-칩 메모리 또는 오프-칩 레벨-2 캐쉬 시스템을 통해 주 메모리에 접속된 스크래치 패드 메모리를 포함할 수 있다. 실행 유닛(142)은 온-칩 메모리, 레벨-2 캐쉬, 또는 주 메모리에 있는 데이타 위치를 액세스할 수 있는 로드/저장 명령을 실행한다. 따라서, 저장 또는 로드를 완료하는데 필요한 시간은 캐쉬 미스가 존재하는 가와 같은 요인에 따른다. 예시적인 실시예에서, 메모리 액세스는 온-칩 스크래치 패드 메모리를 액세스하는데 최소 3 클럭 사이클이 걸린다.
파이프라인 정체를 줄이기 위해, 실행 유닛(142)은 송출 제어 회로(170)로부터 최대 4개의 로드 또는 저장 명령을 보유하는 명령 큐(210)를 포함한다. 명령큐(210)에 결합된 어드레스 발생기(220)는 명령에 대해 유효 어드레스를 계산한다. 상용된 어드레싱 모드에 따라, 유효 어드레스 산출은 스칼라 레지스터 화일(132)로부터 하나 또는 두개의 값 및/또는 명령으로부터 중간 값을 필요로 할 수 있다. 어드레스 큐(225)는 명령 큐(210)의 명령에 대응하는 어드레스 값을 보유하고, 제어 유닛(230)은 실행 유닛(142)의 내부 연산을 제어하고 메모리 시스템(250)과 인터페이스한다.
메모리 시스템(250)을 액세스하기 위해, 제어 회로(230)는 메모리 시스템이 요구를 수락하는 지를 결정하기 위해 메모리 시스템(250)으로부터의 비지 신호를 점검한다. 만일 메모리 시스템이 비지가 아니면, 제어 회로(230)는 메모리 시스템에 대한 요구, 어드레스 큐(225)로부터의 어드레스 신호 및 명령을 저장하기 위해 저장 데이터를 나타내는 데이타 신호를 어써트한다. 로드 연산의 경우, 제어 회로(230)는 메모리 시스템(250)이 데이타 버스(245)에서 정렬기(240)로 로드 데이타를 판독하는 액세스를 허락할 때까지 대기한다. 핸드쉐이크 신호는 실행 유닛(142)이 이에 따라 응답할 수 있도록 큐(210 및 225)의 어떤 명령이 액세스 허여되는 지를 가리킨다.
프로세서(100)의 예시적인 실시예는 32-비트 유효 어드레스 EA[31 : 0]를 이용하지만, 메모리 시스템(250)의 캐쉬 라인은 27의 최상위 어드레스 비트 EA[31 : 5]에 의해 식별된 32-바이트 데이타 벡터이다. 유효 어드레스 EA[31 : 0]의 최하위 비트 EA[4 : 0]가 제로와 같지 않을 때 데이타 벡터의 정렬되지 않은 로드 또는 저장이 발생한다. 정렬되지 않은 로드의 경우, 실행 유닛(142)은 메모리 시스템(250)으로부터 두개의 데이타 벡터, 어드레스 EA[31 : 5]로부터 32-바이트 데이타 벡터, 및 어드레스 EA[31 : 5]+1로부터 32-바이트 데이타 벡터를 요구하고, 요구 데이타 벡터는 두개의 로드 데이타 벡터로부터 구성된다. 정렬되지 않은 저장의 경우, 정렬기는 메모리 시스템(250)이 두개 캐쉬 라인에 저장하기 위해 엘리먼트가 정확한 위치에 있도록 저장 데이타에 데이타 엘리먼트를 회전시킨다.
도 3은 정렬기(240)의 실시예의 블럭도이다. 본 실시예에서, 정렬기(240)는 입력 선택 회로(310). 엘리먼트 선택 회로(320), 및 회전 회로(330)를 구비한다. 입력 선택 회로(310)는 정렬기(240)에 대한 입력 데이타 벡터를 선택한다. 데이타 엘리먼트 쉬프트 또는 회전 연산인 경우, 입력 선택 회로(310)는 오퍼런드 래치(138)로부터 벡터 오퍼런드 A와, 오퍼런드 A가 쉬프트될 때 결과로 나타나는 벡터로 쉬프트되는 하나 이상의 데이타 엘리먼트를 공급하는 오퍼런드 B(벡터 또는 스칼라)를 선택한다. 정렬되지 않은 저장 연산의 경우, 입력 선택 회로(310)는 래치(138)로부터 저장 데이타를 선택한다. 로드 연산의 경우, 입력 선택 회로(310)는 부속된 메모리 시스템(205)으로부터 데이타 벡터를 선택한다.
엘리먼트 선택 회로(320)에 대한 입력 신호는 입력 선택 회로(310)로부터 신호 a[255 : 0] 및 b[255 : 0]를 구비한다. 도 6에 도시된 바와 같이, 엘리먼트 선택회로(320)는 i가 0과 7 사이이고 j가 0과 3 사이인, 32 멀티플렉서 MiJ를 구비한다. 각각의 멀티플렉서 MiJ는 두개의 8-비트 입력 포트와 8-비트 출력 포트를 갖는다. 각각의 32 멀티플렉서는 32-바이트 벡터의 워드를 식별하는 인덱스 w0와 w7과 워드 내의 바이트를 가리키는 b0과 b3 사이의 인덱스에 의해 가리켜진 엘리먼트 위치와 연관되어 있다.
도 3에서, 엘리먼트 선택 회로(320)에서 32 멀티플렉서를 위한 선택 신호 ps[31 : 0]는 신호 b[255 : 0]의 최우측 바이트를 선택하기 위해 1로 세트된 N최하위 비트와 신호 a[255 : 0]의 최좌측 바이트를 선택하기 위해 제로로 세트된 32-N최상위비트를 갖는다. 변환기(326)는 신호 N[4 : 0]를 신호 ps[31 : 0]에 있는 세트된 비트의 스트링으로 변환한다. 만일 b[255 : 0]의 32-N 최우측 바이트가 선택되려 한다면, 멀티플렉서(324)는 가산기(322)로부터 32-N를 나타내는 신호를 선택한다. 멀티플렉서 Mij는 출력 신호 p[255 : 0]의 워드 i에 있는 바이트 j가 신호 a[255 : 0] 또는 신호 b[255 : 0]로부터 나온 것인지를 선택한다. 회전 회로(330)는 0과 31 바이트 위치 사이에서 신호 p[255 : 0]의 바이트를 우로 회전시킨다. (32-N) 바이트 위치만큼 우회전은 물론 32-바이트 데이타 폭에 대해 N 바이트 위치만큼 좌 회전에 상당한다.
도 4a 및 도 4b는 최하위 비트 EA[4 : 0]가 비제로 정수 N를 나타내는 유효 어드레스 EA[31 : 0]로부터 정렬되지 않은 로드에 대한 정렬기(240)의 연산을 도시한다. 정렬되지 않은 로드의 경우, 실행 유닛(142)은 어드레스 EA[31 : 5]로 부터 데이타 벡터(410)를 그리고 어드레스 EA[31 : 5]+1로부터 데이타 벡터(440)를 요구한다. 메모리 시스템(250)이 요청된 데이타 벡터(410)를 반환할 때, 입력 선택 회로(310)와 엘리먼트 선택 회로(320)는 신호 p[255 : 0]로서 데이타 벡터(410)를 선택하고, 회전 회로(330)는 유효 어드레스 EA[31 : 0]로부터의 32-N 최우측 바이트를 갖는 결과로 나타나는 데이타 벡터(440)를 나타내는 출력 신호 out[255 : 0]을 발생하기 위해 신호 p[255 : 0]를 우로 N바이트 회전시킨다. 벡터(430)는 레지스터 화일(130)의 목적지 레지스터에 기록된다. 메모리 시스템(250)이 반환된 데이타 벡터(440)를 반환할 때, 입력 선택 회로(310)와 엘리먼트 선택 회로(320)는 데이타 벡터(440)를 신호 p[255 : 0]로서 선택한다. 회전 회로(330)가 유효 어드레스 EA[31 : 0]에서 32-데이타 바이트 벡터로부터 N 최좌측 바이트를 갖는 결과로 나타나는 데이타 벡터(460)를 나타내는 출력 신호 out[255 : 0]을 발생하기 위해 신호 p[255 : 0]를 우로 N 바이트 회전시킨다. 정렬되지 않은 로드를 완료하기 위해, 벡터(460)는 목적지 레지스터에 있는 N-최우측 바이트만이 바뀌도록 기록 마스크로 레지스터 화일(130)에 기록된다.
정렬되지 않은 저장 명령의 경우, 메모리 시스템(250)은 두개의 캐쉬 라인에 기록하고, 정렬기(240)는 메모리 시스템(250)에 대해 저장 데이타 벡터의 엘리먼트를 저장한다. 도 4c는 최하위 유효 어드레스 비트 EA[4 : 0]가 비제로 값 N을 가리키는 정렬되지 않은 저장에 대해 정렬기(240)의 연산을 도시한다. 정렬되지 않은 저장의 경우, 입력 선택 회로(310)와 엘리먼트 선택 회로(320)는 레지스터 화일(130)로부터의 저장 데이타 벡터(470)를 신호 b[255 : 0]와 신호 p[255 : 0]로서 각각 선택한다. 회전 회로(330)는 메모리 시스템(250)으로 출력되는 출력 신호 out[255 : 0]을 발생하기 위해 신호 p[255 : 0]를 N 바이트 위치 회전시킨다. 메모리 시스템(250)은 신호 out[255: 0]과 정렬되지 않은 어드레스 EA[31 : 0]의 수신시 두개의 캐쉬 라인에 신호 출력 [255 : 0]을 기록한다. EA[31 : 5]에 의해 식별된 라인의 경우, 신호 out[255 : 0]은 N(N=EA[4 : 0]) 최좌측 바이트만을 선택하는 기록 마스크를 사용하여 기록된다. EA[31 + 5]+1에 의해 식별된 라인의 경우, 신호 out[255 : 0]은 32-N 최우측 바이트만을 선택하는 기록 마스크를 사용하여 기록된다.
정렬되지 않은 로드 및 저장 연산에 필요에 따라 데이타를 정렬시키는 것 이외에, 정렬기(240)는 데이타 엘리먼트 쉬프트 및 회전 연산을 수행한다. 도 5a는 정렬기(240)가 데이터 벡터(520)를 N바이트 위치를 우로 쉬프트하고 데이타 벡터(510)가 데이타 벡터(520)의 좌측으로부터 쉬프트 인되는 N 데이타 엘리먼트를 공급하는 연산을 도시한다. 오퍼런드 래치(138)는 동시에 입력 선택 회로(310)가 각각 신호 b[255 : 0]와 a[255 : 0]를 선택하는 데이타 벡터(510 및 520)를 공급한다. 제3 스칼라 소스 오퍼런드는 값 N을 가리킬 수 있다. 벡터(510 및 520)로부터, 엘리먼트 선택 회로(320)는 데이타 벡터(510)의 N 최우측 바이트와 데이타 벡터(520)의 (32-N) 최좌측 바이트를 선택하여 신호 p[255 : 0]로서 표현된 중간 데이터 벡터(530)를 구성한다. 다음에 회전 회로(330)는 데이터 벡터(530)의 N 최우측 바이트를 벡터 결과(540)의 N 최좌측 바이트 위치로 이동시키고 데이타 벡터(530)의 (32-N) 최좌측 바이트를 출력 신호 아웃 [255 : 0]으로 표현된 결과로 나타나는 데이타 벡터(540)의 (32-N) 최우측 바이트 위치로 이동시킴으로써 데이타 벡터(530)의 바이트 위치를 회전시킨다. 벡터 결과(540)는 이때 벡터 레지스터 화일(130)의 목적지 레지스터에 기록될 수 있다.
도 5a의 좌쉬프트는 다른 쉬프트 연산의 경우 다양한 방법으로 변경될 수 있다. 예를 들어, 회전 좌 명령은 결과로 나타나는 데이타 벡터(540)를 구성하기 전에 엘리먼트 선택 회로(320)가 그 전체를 중간 벡터(530)로서 선택하는 단일 벡터 소스 오퍼런드를 사용할 수 있다. 또한, 하나의 데이타 엘리먼트(즉, 데이타 엘리먼트 크기에 따라 4-바이트의 1-바이트, 2-바이트)에 의한 좌 쉬프트의 경우, 데이타 벡터(510)는 데이타 벡터(530)에서 최우측 바이트 위치의 경우 엘리먼트 선택 회로(320)가 선택하는 데이타 엘리먼트를 제공하는 스칼라 소스 오퍼런드에 의해 교체될 수 있다. 부수적으로, 데이타 벡터(320)에 기록될 대 스칼라 데이타 엘리먼트는 벡터 결과(540)가 벡터 레지스터 화일(130)로부터 선택되지 않은 레지스터 화일(132)에 기록되는 스칼라 결과를 제공할 수 있다. 하나의 데이타 엘리먼트 쉬프트의 경우, 소스 오퍼런드는 쉬프트 값 N이 데이타 엘리먼트 유형에 의해 암시되기 때문에 쉬프트 값 N을 가리킬 필요는 없다. 또한, 부수적인 회로는 엘리먼트 선택 회로(320)와 병렬로 제공되어 예를 들어 두개의 소스 데이타 벡터로부터의 데이타 엘리먼트를 셔플하거나 또는 단일 소스 데이타 벡터로부터의 데이타 엘리먼트를 두개의 결과로 나타나는 벡터로 언셔플하는 다른 엘리먼트간 이동 명령을 구현할 수 있다.
도 5b는 데이타 벡터(510)가 결과로 나타나는 데이타 벡터(560)의 우측으로 쉬프트될 바이트를 공급하는, 데이타 벡터(520)를 N 바이트 위치 좌로 쉬프트하는 것을 도시한다. 입력 선택 회로(310)는 데이타 벡터(510 및 520)를 각각 나타내는 신호 a[255 : 0] 및 b[255 : 0]를 선택한다. 좌 쉬프트의 경우, 엘리먼트 선택 회로(320)는 데이타 벡터(520)의 (32-N) 최우측 바이트와, 신호 p[255 : 0]로 표현된 중간 데이터 벡터(550)를 형성할 때 정위치에 남아 있는 데이타 바이트(510)의 N 최좌측 바이트를 선택한다. 회전 회로(330)는 데이타 벡터(550)의 N 최좌측 바이트를 데이타 벡터 결과(560)에 있는 N 최우측 바이트 위치로 그리고 데이타 벡터(550)에 있는 (32-N) 최우측 바이트를 데이타 벡터(560)를 (32-N) 최좌측 바이트 위치로 이동시킴으로써 데이타 벡터(550)를 32-N 바이트 위치 우로 회전시킨다. 결과로 나타나는 데이터 벡터(560)는 이때 벡터 레지스터 화일(130)에 기록될 수 있다. 좌 쉬프트는 회전 연산을 구현하거나 또는 하나의 데이타 엘리먼트만큼 쉬프트하기 위해 우 쉬프트와 유사한 방법으로 변경될 수 있다.
도 3에 도시된 바와 같이, 회전 회로(330)의 예시적인 실시예는 5-비트 신호 SHIFT[4 : 0]에 의해 제어되는 3개의 서브블럭(332, 334, 및 336)을 구비한다. 블럭(332)은 신호p[255 : 0]로 표현된 32-바이트 데이타 벡터를 비트 SHIFT[4]의 값에 따라 16 또는 0 바이트 위치만큼 회전시킨다. 블럭(334)은 블럭(332)로부터의 신호 w4[255 : 0]를 비트 SHIFT[3 : 2]의 값에 따라 12, 8, 4 또는 0 바이트 위치만큼 우로 회전시킨다. 블럭(336)은 블럭(334)로부터의 신호 w[255 : 0]를 비트 SHIFT[1 : 0]의 값에 따라 3, 2, 1 또는 0바이트 위치만큼 우로 회전시킨다. 멀티플렉서(344)는 신호 SHIFT[4 : 0]를 N바이트 위치만큼 우로 쉬프트하기 위한 값 N와 또는 N 바이트 위치만큼 좌로 쉬프트하기 위해 32-N와 같이 세트시킨다.
도 7, 도 8 및 도 9는 각각 회전 회로(330)의 예시적인 실시예의 블럭(332, 334 및 336)을 도시한다. 블럭(332)은 만일 비트 SHIFT[4]가 세트되면 최우측 128비트와 최좌측 128 비트를 스왑하도록 결합된 128-비트 입력 및 출력 포트를 갖는 두개의 2 : 1 멀티플렉서(710 및 720)를 구비한다. 블럭 32-비트 입력 및 출력 포트를 갖는 8개의 4 : 1 멀티플렉서(800, 810, 820, 830, 840, 850, 860 및 870)을 구비한다. 멀티플렉서(800, 810, 820, 830, 840, 850, 860 및 870)는 신호 w4[255 : 0]를 12, 8, 4, 또는 0바이트(즉, 3, 2, 1 또는 0워드 위치)만큼 우로 회전시킬 필요에 따라 출력 포트가 각각 32-바이트 신호 w[255 : 0]의 32-비트 워드의 위치 w0 내지 w7에 연관되어 있고, 입력 포트가 신호 w4[255 : 0]의 32-비트 워드의 위치 w0 내지 w7에 각각 결합되어 있다. 블럭(336)은 8-비트 입력 및 출력 포트를 갖는 도 9에 도시된 바와 같은 32 4 : 1 멀티플렉서를 구비한다. 도 9의 각각의 멀티플렉서는 32-바이트 출력 신호 out[255 : 0]의 바이트와 연관되어 있고, 입력 포트가 상기 연관된 바이트 위치의 좌측에 대해 0, 1, 2, 및 3인 신호 w[255 : 0]의 바이트에 결합되어 있다.
본 발명의 넓은 데이타 폭의 프로세서는 로드/저장 명령을 위한 데이타를 정렬시키고 산술 논리 명령을 위한 데이타를 쉬프트하거나 회전시키는 정렬기를 구비한 실행 유닛을 갖는다. 이와 같이 서로 다른 종류의 명령을 위한 동일한 회로와 실행 유닛을 사용함으로써 정렬 회로가 반복될 필요가 없기 때문에 로드/저장 유닛에서 한번 그리고 산술 논리 유닛에서 한번 전체적인 회로 크기를 감소시킬 수 있다.
본 발명을 특정의 바람직한 실시예에 관련하여 도시하고 설명하였지만, 본 발명이 그에 한정되는 것은 아니고 이하의 특허청구의 범위에 의해 마련되는 본 발명의 정신이나 분야를 이탈하지 않는 한도내에서 본 발명이 다양하게 개조 및 변화될 수 있다는 것을 당 업계에서 통상의 지식을 가진 자는 용이하게 알 수 있다. 특히, 상기 많은 설명이 32-바이트 데이타 폭을 갖는 프로세서에 목표를 두지 있지만, 본 발명의 대체 실시예는 임의의 데이타 폭 W을 포함한다. 또한, 우 쉬프트를 수행하는 특수한 회전 회로는 데이타를 좌로 회전시키는 회로와 같은 다른 종류의 회로로 교체될 수 있다.

Claims (14)

  1. 프로세서의 동작 방법에 있어서,
    정렬되지 않은 유효 어드레스를 갖는 로드/저장 명령을 실행하기 위한 데이타를 정렬시키기 위해 정렬기(aligner)로서 데이타를 쉬프트하는 단계 ; 및
    쉬프트 명령을 실행하기 위해 정렬기로서 데이타를 쉬프트하는 단계 ; 를 포함하는 것을 특징으로 하는 프로세서의 동작 방법.
  2. 제1항에 있어서,
    상기 쉬프트 명령의 실행은,
    레지스터 화일로부터 제1소스 오퍼런드를 판독하는 단계 ;
    결과로 나타나는 오퍼런드를 발생하기 위해, 상기 정렬기로서 상기 제1소스 오퍼런드의 데이타 엘리먼트를 쉬프트하는 단계 ; 및
    상기 레지스터 화일에 상기 결과로 나타나는 오퍼런드를 저장하는 단계 ; 를 포함하는 것을 특징으로 하는 프로세서 동작 방법.
  3. 제2항에 있어서,
    상기 쉬프트 명령의 실행은
    제1 및 제2 소스 오퍼런드가 W 데이타 엘리먼트를 포함하고, 상기 레지스터 화일로부터 제1소스 오퍼런드를 판독하는 단계 ; 및
    N가 비제로 양의 정수인, 상기 제2소스 오퍼런드로부터의 N 데이타 엘리먼트와 상기 제2소스 오퍼런드로부터의 (W-N) 데이타 엘리먼트를 포함하는 중간 값을 구성하는 단계 ; 및
    상기 중간 값의 데이타 엘리먼트를 회전시키는 것을 포함하는 상기 제1소스 오퍼런드의 데이타 엘리먼트를 쉬프트하는 단계 ; 를 포함하는 것을 특징으로 하는 프로세서의 동작 방법.
  4. 제1항에 있어서,
    상기 로드/저장 명령의 실행은,
    상기 로드/저장 명령에 대해 유효 어드레스를 계산하는 단계 ;
    쉬프트될 데이타를 공급하는 저장 오퍼런드를 판독하는 단계 ;
    제1값을 발생하기 위해, 상기 정렬기로 상기 저장 오퍼런드의 데이타 엘리먼트를 쉬프트하는 단계 ;
    상기 제1값을 메모리 시스템의 제1어드레스에 기록하는 단계 ;
    제2값을 발생하기 위해, 상기 정렬기로 상기 저장 오퍼런드의 데이타 엘리먼트를 쉬프트하는 단계 ; 및
    메모리 시스템의 제2어드레스에 상기 제2값을 기록하는 단계 ; 를 포함하는 것을 특징으로 하는 프로세서 동작 방법.
  5. 제4항에 있어서,
    상기 데이타 엘리먼트의 쉬프트 단계는,
    상기 저장 오퍼런드로부터 데이타 엘리먼트를 선택하는 단계 ;
    상기 저장 오퍼런드로부터의 상기 선택된 데이타 엘리먼트와 상기 저장 오퍼런드의 이외의 소스로부터의 데이타 엘리먼트를 구비한 중간 값을 구성하는 단계 ; 및
    상기 중간 값의 데이타 엘리먼트를 회전시키는 단계 ; 를 포함하는 것을 특징으로 하는 프로세서의 동작 방법.
  6. 제5항에 있어서,
    상기 저장 오퍼런드 이외의 소스로부터의 데이타 엘리먼트는 더미(dummy) 값을 갖는 것을 특징으로 하는 프로세서의 동작 방법.
  7. 제5항에 있어서,
    상기 저장 오퍼런드 이외의 소스는 상기 메모리 시스템으로부터 판독된 값인 것을 특징으로 하는 프로세서의 동작 방법.
  8. 제4항에 있어서,
    상기 쉬프트 명령의 실행은,
    레지스터 화일로부터 제1소스 오퍼런드를 판독하는 단계 ;
    결과로 나타나는 오퍼런드를 발생하기 위해, 정렬기로서 상기 제1소스 오퍼런드의 데이타 엘리먼트를 쉬프트하는 단계 ; 및
    상기 레지스터 화일에 상기 결과로 나타나는 오퍼런드를 저장하는 단계 ; 를 포함하는 것을 특징으로 하는 프로세서의 동작 방법.
  9. 제1항에 있어서,
    상기 로드/저장 명령의 실행은,
    상기 유효 어드레스와 제1정렬되지 않은 어드레스 간의 차이 N가 비제로(none-zero)인, 상기 로드/저장 명령에 대해 유효 어드레스를 계산하는 단계 ;
    메모리 시스템에 있는 상기 제1정렬되지 않은 어드레스의 제1값을 판독하는 단계 ;
    제2정렬되지 않은 어드레스와 상기 제1정렬되지 않은 어드레스 간의 차이 W가 비제로(non-zero)인, 메모리 시스템에 있는 제2정렬되지 않는 어드레스로부터 제2값을 판독하는 단계 ;
    상기 제1값으로부터의 (W-N) 최우측 데이타 엘리먼트와 상기 제2값으로부터의 N 최좌측 데이타 엘리먼트를 포함하는 중간 값을 구성하는 단계 ; 및
    결과를 발생하기 위해, 상기 정렬기로서 상기 중간 값의 데이타 엘리먼트를 회전시키는 단계 ; 를 포함하는 것을 특징으로 하는 프로세서의 동작 방법.
  10. 제9항에 있어서,
    상기 쉬프트 명령의 실행은,
    레지스터 화일로부터 제1소스 오퍼런드를 판독하는 단계 ;
    결과로 나타나는 오퍼런드를 발생하기 위해, 상기 정렬기로서 상기 제1소스 오퍼런드와 데이타 엘리먼트를 쉬프트하는 단계 ; 및
    상기 레지스터 화일에 상기 결과로 나타나는 오퍼런드를 저장하는 단계 ; 를 포함하는 것을 특징으로 하는 프로세서의 동작 방법.
  11. 프로세서에 있어서,
    레지스터 화일,
    메모리 시스템 인터페이스, 및
    정렬기를 구비하고 ;
    상기 정렬기는,
    제1데이타 값 및 상기 레지스터 화일로부터의 제2데이타 값 및 상기 메모리 시스템 인터페이스를 거쳐 메모리 시스템으로부터 제3데이타 값에 결합되며, 상기 제1, 제2, 제3 데이타 값을 포함하는 세트로부터 선택되는 제4 및 제5 값을 표현하는 제1 및 제2신호를 제공하는 입력 선택 회로,
    입력 선택 회로에 결합되고, 상기 제4값으로부터의 제1세트의 데이타 엘리먼트와 제5값으로부터의 제2세트의 데이타 엘리먼트를 포함하는 제6값을 표현하는 제3신호를 발생하는 엘리먼트 선택 회로, 및
    상기 제3신호의 데이타 엘리먼트를 회전시키도록 결합된 회전 회로,를 구비하는 것을 특징으로 하는 프로세서.
  12. 제11항에 있어서,
    로드 명령을 실행하는 경우, 상기 입력 선택 회로는 상기 제1신호가 상기 메모리 시스템으로부터의 제3데이타 값을 나타내는 것을 선택하고,
    쉬프트 명령을 실행하는 경우, 상기 입력 선택 회로는 상기 제1신호가 상기 레지스터 화일로부터의 제1데이타 값을 나타내는 것을 선택하는 것을 특징으로 하는 프로세서.
  13. 제11항에 있어서,
    각각의 데이타 엘리먼트는 바이트를 구비하는 것을 특징으로 하는 프로세서.
  14. 제11항에 있어서,
    상기 제4, 제5, 및 제6값의 각각은 W 데이타 엘리먼트를 구비하고, 상기 엘리먼트 선택 회로는 W 멀티플렉서를 구비하고, 각각의 멀티플렉서는 상기 제4, 제5, 및 제6에 존재하는 데이타 엘리먼트 위치와 연관되어 있는 것을 특징으로 하는 프로세서.
KR1019970034999A 1997-02-24 1997-07-25 넓은 데이타 폭의 프로세서에서 다기능 데이타 정렬기 KR100236525B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US8/699,280 1997-02-24
US08/805,392 US5922066A (en) 1997-02-24 1997-02-24 Multifunction data aligner in wide data width processor
US8/805,392 1997-02-24

Publications (2)

Publication Number Publication Date
KR19980069855A true KR19980069855A (ko) 1998-10-26
KR100236525B1 KR100236525B1 (ko) 2000-01-15

Family

ID=25191444

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1019970034999A KR100236525B1 (ko) 1997-02-24 1997-07-25 넓은 데이타 폭의 프로세서에서 다기능 데이타 정렬기
KR1019970034997A KR100267097B1 (ko) 1997-02-24 1997-07-25 슈퍼스칼라 프로세서에서 간단한 비의존성 파이프라인 인터록 제어로서 판독되는 지연된 저장 데이터

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1019970034997A KR100267097B1 (ko) 1997-02-24 1997-07-25 슈퍼스칼라 프로세서에서 간단한 비의존성 파이프라인 인터록 제어로서 판독되는 지연된 저장 데이터

Country Status (2)

Country Link
US (1) US5922066A (ko)
KR (2) KR100236525B1 (ko)

Families Citing this family (46)

* 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
US6643765B1 (en) * 1995-08-16 2003-11-04 Microunity Systems Engineering, Inc. Programmable processor with group floating point operations
US5742840A (en) * 1995-08-16 1998-04-21 Microunity Systems Engineering, Inc. General purpose, multiple precision parallel operation, programmable media processor
US6295599B1 (en) * 1995-08-16 2001-09-25 Microunity Systems Engineering System and method for providing a wide operand architecture
US7197625B1 (en) * 1997-10-09 2007-03-27 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
US5864703A (en) * 1997-10-09 1999-01-26 Mips Technologies, Inc. Method for providing extended precision in SIMD vector arithmetic operations
US5933650A (en) * 1997-10-09 1999-08-03 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
US6085312A (en) * 1998-03-31 2000-07-04 Intel Corporation Method and apparatus for handling imprecise exceptions
US6334176B1 (en) * 1998-04-17 2001-12-25 Motorola, Inc. Method and apparatus for generating an alignment control vector
US6636767B1 (en) * 1999-09-29 2003-10-21 Restore Medical, Inc. Implanatable stimulation device for snoring treatment
US6820195B1 (en) * 1999-10-01 2004-11-16 Hitachi, Ltd. Aligning load/store data with big/little endian determined rotation distance control
US6745319B1 (en) * 2000-02-18 2004-06-01 Texas Instruments Incorporated Microprocessor with instructions for shuffling and dealing data
JP2001229021A (ja) * 2000-02-18 2001-08-24 Mitsubishi Electric Corp データ処理装置
US7120781B1 (en) * 2000-06-30 2006-10-10 Intel Corporation General purpose register file architecture for aligned simd
US6643736B1 (en) 2000-08-29 2003-11-04 Arm Limited Scratch pad memories
GB0024312D0 (en) * 2000-10-04 2000-11-15 Advanced Risc Mach Ltd Single instruction multiple data processing
US6813734B1 (en) 2001-01-26 2004-11-02 Catamaran Communications Incorporated Method and apparatus for data alignment
US6965606B2 (en) * 2001-01-26 2005-11-15 Exar Corporation Method and apparatus for byte rotation
JP3776732B2 (ja) * 2001-02-02 2006-05-17 株式会社東芝 プロセッサ装置
US7711763B2 (en) 2001-02-21 2010-05-04 Mips Technologies, Inc. Microprocessor instructions for performing polynomial arithmetic operations
US7162621B2 (en) 2001-02-21 2007-01-09 Mips Technologies, Inc. Virtual instruction expansion based on template and parameter selector information specifying sign-extension or concentration
US7181484B2 (en) * 2001-02-21 2007-02-20 Mips Technologies, Inc. Extended-precision accumulation of multiplier output
US7937559B1 (en) 2002-05-13 2011-05-03 Tensilica, Inc. System and method for generating a configurable processor supporting a user-defined plurality of instruction sizes
US7376812B1 (en) * 2002-05-13 2008-05-20 Tensilica, Inc. Vector co-processor for configurable and extensible processor architecture
US7275147B2 (en) * 2003-03-31 2007-09-25 Hitachi, Ltd. Method and apparatus for data alignment and parsing in SIMD computer architecture
US7793072B2 (en) * 2003-10-31 2010-09-07 International Business Machines Corporation Vector execution unit to process a vector instruction by executing a first operation on a first set of operands and a second operation on a second set of operands
US7933405B2 (en) * 2005-04-08 2011-04-26 Icera Inc. Data access and permute unit
US8099448B2 (en) * 2005-11-02 2012-01-17 Qualcomm Incorporated Arithmetic logic and shifting device for use in a processor
US20070226453A1 (en) * 2006-03-23 2007-09-27 Eichenberger Alexandre E Method for improving processing of relatively aligned memory references for increased reuse opportunities
US7809926B2 (en) * 2006-11-03 2010-10-05 Cornell Research Foundation, Inc. Systems and methods for reconfiguring on-chip multiprocessors
US20080229062A1 (en) * 2007-03-12 2008-09-18 Lorenzo Di Gregorio Method of sharing registers in a processor and processor
US8161271B2 (en) * 2007-07-11 2012-04-17 International Business Machines Corporation Store misaligned vector with permute
US7783860B2 (en) * 2007-07-31 2010-08-24 International Business Machines Corporation Load misaligned vector with permute and mask insert
KR20100101449A (ko) * 2009-03-09 2010-09-17 삼성전자주식회사 메모리 장치, 그것의 마스크 데이터 전송 방법 및 입력 데이터 정렬 방법
JP5699554B2 (ja) * 2010-11-11 2015-04-15 富士通株式会社 ベクトル処理回路、命令発行制御方法、及びプロセッサシステム
US9575755B2 (en) 2012-08-03 2017-02-21 International Business Machines Corporation Vector processing in an active memory device
US9569211B2 (en) 2012-08-03 2017-02-14 International Business Machines Corporation Predication in a vector processor
US9632777B2 (en) * 2012-08-03 2017-04-25 International Business Machines Corporation Gather/scatter of multiple data elements with packed loading/storing into/from a register file entry
US9594724B2 (en) 2012-08-09 2017-03-14 International Business Machines Corporation Vector register file
US9268571B2 (en) * 2012-10-18 2016-02-23 Qualcomm Incorporated Selective coupling of an address line to an element bank of a vector register file
US9632781B2 (en) 2013-02-26 2017-04-25 Qualcomm Incorporated Vector register addressing and functions based on a scalar register data value
US9304749B2 (en) * 2013-09-12 2016-04-05 Marvell World Trade Ltd. Method and system for instruction scheduling
CN104915183B (zh) * 2015-06-23 2018-10-16 北京玉华骢科技股份有限公司 一种多发射流水线的前馈探测电路
CN107315566B (zh) * 2016-04-26 2020-11-03 中科寒武纪科技股份有限公司 一种用于执行向量循环移位运算的装置和方法
US10275217B2 (en) * 2017-03-14 2019-04-30 Samsung Electronics Co., Ltd. Memory load and arithmetic load unit (ALU) fusing

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4785393A (en) * 1984-07-09 1988-11-15 Advanced Micro Devices, Inc. 32-Bit extended function arithmetic-logic unit on a single chip
US5471593A (en) * 1989-12-11 1995-11-28 Branigin; Michael H. Computer processor with an efficient means of executing many instructions simultaneously
US5598546A (en) * 1994-08-31 1997-01-28 Exponential Technology, Inc. Dual-architecture super-scalar pipeline
US5787302A (en) * 1996-05-15 1998-07-28 Philips Electronic North America Corporation Software for producing instructions in a compressed format for a VLIW processor

Also Published As

Publication number Publication date
KR19980069854A (ko) 1998-10-26
US5922066A (en) 1999-07-13
KR100236525B1 (ko) 2000-01-15
KR100267097B1 (ko) 2000-10-02

Similar Documents

Publication Publication Date Title
KR100236525B1 (ko) 넓은 데이타 폭의 프로세서에서 다기능 데이타 정렬기
EP2289003B1 (en) Method & apparatus for real-time data processing
US6298423B1 (en) High performance load/store functional unit and data cache
US5241636A (en) Method for parallel instruction execution in a computer
US8255665B2 (en) SIMD processor with register addressing, buffer stall and methods
EP2241968B1 (en) System with wide operand architecture, and method
US6446190B1 (en) Register file indexing methods and apparatus for providing indirect control of register addressing in a VLIW processor
JP2816248B2 (ja) データプロセッサ
US6754809B1 (en) Data processing apparatus with indirect register file access
US5881307A (en) Deferred store data read with simple anti-dependency pipeline inter-lock control in superscalar processor
US5799163A (en) Opportunistic operand forwarding to minimize register file read ports
EP2309382B1 (en) System with wide operand architecture and method
US7139899B2 (en) Selected register decode values for pipeline stage register addressing
CN108139911B (zh) 在vliw处理器的同一执行包中使用有条件扩展槽的指令的有条件执行规格
US5822560A (en) Apparatus for efficient instruction execution via variable issue and variable control vectors per issue
US6332188B1 (en) Digital signal processor with bit FIFO
US7143268B2 (en) Circuit and method for instruction compression and dispersal in wide-issue processors
US7047396B1 (en) Fixed length memory to memory arithmetic and architecture for a communications embedded processor system
US7577824B2 (en) Methods and apparatus for storing expanded width instructions in a VLIW memory for deferred execution
US7024540B2 (en) Methods and apparatus for establishing port priority functions in a VLIW processor
US7028164B2 (en) Instruction fetch apparatus for wide issue processors and method of operation
CN111984313A (zh) 矢量位转置
USRE41012E1 (en) Register file indexing methods and apparatus for providing indirect control of register addressing in a VLIW processor

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: 20120925

Year of fee payment: 14

FPAY Annual fee payment

Payment date: 20130930

Year of fee payment: 15

FPAY Annual fee payment

Payment date: 20141001

Year of fee payment: 16

FPAY Annual fee payment

Payment date: 20151001

Year of fee payment: 17

LAPS Lapse due to unpaid annual fee