KR100227277B1 - 컴퓨터에 있어서 스칼라값을 벡터로 기입하는 방법 - Google Patents

컴퓨터에 있어서 스칼라값을 벡터로 기입하는 방법 Download PDF

Info

Publication number
KR100227277B1
KR100227277B1 KR1019970016967A KR19970016967A KR100227277B1 KR 100227277 B1 KR100227277 B1 KR 100227277B1 KR 1019970016967 A KR1019970016967 A KR 1019970016967A KR 19970016967 A KR19970016967 A KR 19970016967A KR 100227277 B1 KR100227277 B1 KR 100227277B1
Authority
KR
South Korea
Prior art keywords
vector
storage device
scalar value
predetermined position
value
Prior art date
Application number
KR1019970016967A
Other languages
English (en)
Other versions
KR19980032103A (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 KR19980032103A publication Critical patent/KR19980032103A/ko
Application granted granted Critical
Publication of KR100227277B1 publication Critical patent/KR100227277B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical 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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Algebra (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Complex Calculations (AREA)

Abstract

저장장치로부터 벡터를 독출하지 않고 스칼라값을 벡터로 기입하는 방법을 제공한다. 소정위치에서 벡터V1로 기입되는 스칼라값과 상기 위치를 나타내는 스칼라값(인덱스)은 저장장치로부터 벡터프로세서의 ALU로 독출된다. ALU는 벡터V1으로 기입되는 스칼라값의 복수개의 카피를 가진 다른 벡터V2를 생성한다. ALU는 또한 인덱스를 나타내는 마스크를 생성한다. 벡터V2는 벡터V1을 저장하는 저장장치로 전달되나, 마스크가 인가되어 1개이상의 (전부는 아님) 스칼라값의 카피들이 벡터V2로부터 저장장치로 기입된다. 벡터V1의 나머지는 변화되지 않고 남아 있게 된다. 본 발명은 레지스터파일 독출시의 경쟁을 줄인다. 또한, 업데이트된 벡터V1(즉, 스칼라값을 갖는 V1)가 다음 명령에 사용될 경우에는 벡터V1의 카피가 저장장치로부터 독출되고, 벡터V2와 마스크로부터 업데이트되며, 동시에 벡터V1은 저장장치내에서 업데이타된다. 그러므로, 업데이트된 V1은 저장장치로부터 독출되지 않아도 된다.

Description

컴퓨터에 있어서 스칼라값을 벡터로 기입하는 방법
내용없음
본 발명은 컴퓨터의 벡터처리방법에 관한 것으로, 특히 스칼라값을 컴퓨터 시스템내에 저장된 벡터로 기입하는 방법에 관한 것이다.
3차원 그래픽, 의학용 화상처리(medical imaging) 및 과학적 모델링(scientific modeling)과 같은 응용기술은 벡터상에서 동작할 수 있는 현대화된 컴퓨터를 필요로 한다. 소정의 컴퓨터 시스템들에 있어서, 단일요소의 벡터를 바꾸는 과정은 우선 저장부로부터 벡터를 독출하여 수정한 다음 전체 벡터를 저장부로 다시 기입함으로써 이루어진다. 도 1 은 출력이 온칩(on-chip) 버스(120)를 경유하여 레지스터 뱅크(130)에 연결된 ALU(110)을 구비한 종래의 마이크로프로세서(100)를 도시한 것이다. 레지스터 뱅크(130)는 버스들(140,150)을 경유하여 ALU(110)의 입력으로 연결된다.
레지스터(170)내에 저장된 벡터요소(160)를 대체하기 위해서는 먼저 레지스터(170)의 내용을 ALU(110)의 입력(180)으로 연결되는 버스(140)상으로 독출한다. 이와 마찬가지로, 레지스터(175)내에 저장된 스칼라요소(165)는 ALU(110)의 입력(19)으로 연결되는 버스(150)상으로 독출한다. 레지스터(172)에 저장되어 스칼라요소(165)가 벡터(160)내로 삽입되는 위치를 나타내는 제 2 스칼라값(167)은 레지스터뱅크(130)로 부터 ALU(110)상으로 독출내야 한다. ALU(110)는 스칼라요소(165)를 벡터(160)의 소정위치로 복사하고, 수정된 벡터는 온칩 버스(120)로 기입되어 레지스터(170)에 다시 기입된다.
벡터처리가 3차원 그래픽, 의학용 화상처리 및 과학적 모델링과 같은 응용기술을 위하여 컴퓨터에서 일반화되어 감에 따라 벡터요소를 보다 빠르게 대체할 수 있는 기술이 요망되고 있다. 도 1 에 있어서, 3개의 연산수(operand)가 레지스터뱅크(130)로부터 ALU(110)로 독출된다. 레지스터뱅크(130)는 2개의 출력부만을 가지므로 레지스터뱅크(130)로부터 3개의 연산수를 모두 독출하기 위해서는 2개의 클럭주기를 필요로 하며, 또한 ALU(110)내의 벡터요소를 대체하기 위한 제 3 클럭주기와 벡터를 레지스터(170)로 다시 기입하기 위한 제 4 클럭주기를 필요로 한다.
본 발명은 저장부로부터 벡터를 독출하지 않으면서 스칼라값을 벡터로 기입하는 방법을 제공한다. 스칼라값은 그 폭이 벡터의 폭보다 작은 값이다. 본 발명의 실시예들에 있어서, 스칼라값은 1개이상의 벡터요소이다. 스칼라값을 저장부에 저장된 제1벡터로 기입하기 위해 스칼라값을 복사한 다수개의 카피(copy)를 포함하는 제2벡터가 생성된다. 제 2 벡터는 저장부의 입력으로 제공되나, 마스크신호는 제2벡터로부터 제1벡터로 스칼라값의 1개의 카피만을 기입하는데 사용되며, 제 1 벡터의 나머지는 변화되지 않고 남아 있게 된다. 스칼라값을 벡터로 기입하는 동작을 위해 벡터가 저장부로부터 독출되지 않으므로 레지스터파일 억세스(register file access)를 위한 경쟁이 감소하게 된다.
본 발명의 실시예에 있어서, 스칼라값을 제 1 벡터로 기입하기 위한 제 1 명령후에 제 1 벡터를 이용하는 제 2 명령이 뒤따른다. 제 2 명령은 제 1 벡터의 새로운 값, 즉, 스칼라값에 의해 업데이트된 값을 이용한다. 그러나, 제 2 명령을 보다 빨리 수행하기 위해서는 스칼라값이 제 2 벡터로부터 저장부로 기입되기 전에 제 1 벡터의 원래의 값을 제 2 명령에서 사용하기 위해 저장부로부터 독출한다. 스칼라값을 제 1 벡터로 기입하기 위해 제 2 벡터가 저장부의 입력부로 제공되면, 제 2 벡터도 제 1 벡터가 저장부로부터 독출될때 제 1 벡터의 원래의 값이 인가된 회로로 제공된다. 이 회로에는 마스크신호도 인가된다. 제 2 벡터와 마스크를 이용하여 상기 회로는 제 2 벡터로부터 저장부로부터 독출된 제 1 벡터로 스칼라값을 기입함으로써 제 1 벡터를 제 2 명령에 사용할 수 있도록 업데이트시킨다. 제 2 명령은 저장부로부터의 제 1 벡터의 업데이트된 값을 독출할 필요가 없으므로 보다 빨리 수행될 수 있다.
도 1 은 종래의 마이크로프로세서의 블럭도.
도 2 는 본 발명에 따른 레지스터파일(200)과 ALU(220)를 포함하며 스칼라값을 벡터로 기입할 수 있는 벡터프로세서의 블럭도.
도 3 은 도 2 의 ALU(220)를 상세하게 도시한 도면.
도 4 는 스칼라 레지스터에 사용되는 데이타형태의 포맷을 도시한 도면.
도 5 는 벡터 레지스터내의 데이타형태를 도시한 도면.
도 6 은 도 3 의 나타낸 마스크생성기(330)에 의해 생성되는 32비트 마스크내의 각 비트가 사용된 데이타형태에 따라 어떻게 벡터로 배치되는지를 도시한 도면.
도 7A 내지 도 7C 는 벡터내의 소정의 요소위치들과 소정의 데이타형태들을 위해 생성된 마스크를 도시한 도면.
도 8 은 특정 스칼라값과 데이타크기를 위해 도 3의 ALU-3에 의해 생성된 벡터의 예를 도시한 도면.
도 9 는 본 발명에 따른 스칼라값을 벡터로 재기입하기 위해 도 2 의 프로세서에 의해 수행되는 VINSRT의 포맷을 도시한 도면.
이하, 첨부한 도면을 참조로 하여 본 발명의 바람직한 실시예를 상술하며, 도면 전체를 통하여 동일한 부분에는 동일한 도면부호를 사용하기로 한다.
도 2 는 본 발명에 따른 스칼라값을 벡터로 기입할 수 있는 벡터프로세서의 일부분을 도시한 것이다. 벡터프로세서는 레지스터파일(200), 승산기(multiplier) (210), ALU(220) 및 누산기(accumulator)(230)를 포함한다. 레지스터파일(200)은 32개의 32비트 스칼라레지스터와 64개의 288비트 벡터레지스터를 구비하고 있다. 이들 각각의 레지스터(도시하지 않음)는 288비트 입력부(202 또는 204)를 통해 기입될 수 있고, 288비트 출력부(206 또는 208)을 통해 독출될 수 있다. 레지스터파일(200)내의 레지스터들은 기입어드레스제어부(222,224) 및 독출어드레스제어부(226,228)를 통해 입력 및 출력을 위해 선택된다. 제어부들(222,224,226,228)은 명령버퍼(IBUF)(도시하지 않음)로부터 신호를 입력받는다. 기입어드레스제어부(222)는 어느 레지스터가 입력부(202)로부터 기입되는지를 선택하고, 기입어드레스제어부(224)는 어느 레지스터가 입력부(204)로부터 기입되는지를 선택한다. 독출어드레스제어부(226)는 어느 레지스터가 출력부(206)로 독출되는지를 선택하고, 독출어드레스제어부(228)는 어느 레지스터가 출력부(208)로 독출되는지를 선택한다. 또한, 32비트의 바이트인에이블포트(byte enable port)(232)가 입력부(202 또는 204)로 인가된 데이타로 마스크를 제공하기 위해 사용됨으로써 입력부(202 또는 204)로 인가된 데이타의 선택된 비트들만이 각각의 기입어드레스제어부(222 또는 224)에 의해 선택된 레지스터로 기입된다. 상기 마스크는 교호의(alternate) 클럭주기로 입력부(202,204)로 제공된다. 본 발명의 다른 실시예에 있어서, 마스크는 교호하는 클럭의 1/2주기로 입력부(202,204)로 제공된다. 바이트인에이블포트(232)는 다수개의 바이트인에이블소오스들중의 어느 것이 바이트인에이블포트(232)에 연결될지를 제어하는데 사용되는 멀티플렉서(도시하지 않음)를 공유하여 마스크생성기(330)의 출력부(220.2)로 연결된다. 이들 바이트인에이블소오스들은 출력부(220.2), 벡터글로벌 마스크레지스터(vector global mask resgister)(도시하지 않음), 벡터메모리 마스크생성기(도시하지 않음) 및 파이프라인제어로직(도시안됨)을 포함한다. 그러나, 본 발명의 목적을 달성하기 위해 바이트인에이블포트(232)는 멀티플렉서를 통해 마스크생성기(330)의 출력부(2202)에 연결되거나 블랭크(모두 0) 마스크(VEC64 모드에 사용되는)를 구비한 특수 레지스터에 연결된다.
출력부(206,208)는 멀티플렉서회로(AMUX250,BMUX255)의 입력에 각각 연결되고, 그 출력이 로드 및 저장유니트(load and store unit)(도시하지 않음)에 연결된 MUX(290)의 입력에 연결된다. 멀티플렉싱 기능외에도 AMUX(250)과 BMUX(255)는 스칼라값을 출력부(206 또는 208)로부터 독출된 벡터로 기입할 수 있다. AMUX(250) 및 BMUX(255)는 각각 벡터프로세서의 로드 및 저장유니트(도시안됨)로부터의 288비트 라인(이 라인은 AMUX(250)과 BMUX(255)에 연결된다)에 연결된 288비트 입력과, 파이프라인 독출단 제어부(도시하지 않음)에 연결되어 즉석값(immediate value)의 연산수가 파이프라인 독출단 제어부로부터 ALU(220)로 제공되도록 하는 32비트 입력, WBMUX(270)의 출력에 연결된 288비트 입력, 및 ALU(220)의 일부로서 마스크생성기(330)(도 3에 도시됨)의 출력(220.2)에 연결된 32비트 입력을 구비한다. 파이프라인 독출단 제어부는 명령버퍼(IBUF;도시하지 않음)에서 명령디코더(도시하지 않음)가 적절한 신호를 디코딩한 후에 적절한 신호를 제공한다.
AMUX(250) 및 BMUX(255)의 288비트 출력은 승산기(210), MUX(290) 및 누산기(230)의 입력에 각각 연결된다. AMUX(250)의 출력은 MUX(242)의 입력에 연결되는데 MUX(240)의 다른 입력인 576비트 입력은 승산기(210)의 출력(210.1)에 연결된다. MUX(242)의 출력은 ALU(220)의 한 입력에 연결된다. BMUX(255)의 출력은 MUX(244)의 한 입력으로 연결된다. MUX(244)의 다른 입력은 ALU(220)의 다른 입력에 연결된 승산기(210)의 출력(210.2)에 연결된 576비트 입력이다.
멀티플렉서(242,244)는 ALU(220)가 AMUX(250), BMUX(255) 또는 승산기(210)로부터 데이트를 입력받도록 한다. ALU(220)의 288비트 출력은 멀티플렉서(AccMUX;260), WBMUX(270) 및 누산기(230)의 입력에 연결된다. 누산기(230)의 출력은 AccMUX(260)와 WBMUX(270)의 다른 입력에 연결된다. 그러므로 ALU(220)에서 수행되는 동작의 결과는 누산기(230)내에 저장되거나 연속적인 처리 및 WBMUX(270)과 AccMUX(260)를 통한 레지스터파일(200)로의 재기입을 위해 AMUX(250) 및 BMUX(255)로 다시 돌아간다. WBMUX(270)의 출력은 W1MUX(240)과 MUX(290)의 입력으로 입력되며, AccMUX(260)의 출력은 W2MUX(245) 및 MUX(290)의 입력에 연결된다.
도 3 은 ALU(220)를 보다 상세하게 도시한 것이다. ALU(220)는 ALU-1(300), ALU-2(310) 및 ALU-3(320)으로 나누어지며, 이들 각각은 ALU(220)에 의해 수행되는 로직연산 및 산술연산의 부분집합을 담당한다. 특히, ALU-2(310)는 벡터 기입동작이 이루어지는 동안 벡터의 어느 요소가 기입될지를 제어하는데 사용되는 32비트 넓이의 마스크의 생성을 담당하는 마스크생성기(330)를 포함한다. 본 발명을 위한 적절한 마스크생성기는 본 발명과 동일한 날짜로 미국특허출원된 변호사 사건번호 M-4443의 Roney S. Wong의 "Element Select Mechanism for a Vector Processor"에 기술되어 있다.
도 2 의 프로세서는 아래의 표1에 나타낸 데이타형태를 인식한다. 또한, 상기 프로세서는 플로팅포인트(floating point) 데이타형태를 위한 IEEE 스탠다드 754 단일포맷을 인식한다.
[표 1]
Boolean 1비트 넓이
바이트 8비트 넓이
바이트9 9비트 넓이
반워드(halfword) 16비트 넓이
워드(word) 32비트 넓이
레지스터파일(200)내의 32개의 스칼라 레지스터들(SR0-SR31) 각각은 32비트 넓이를 갖는다. 도 4 는 이러한 스칼라 레지스터들을 위한 데이타형태의 포맷을 도시한 것이다. 도 4 의 보존된 비트들은 규정된 값을 갖지 않는다.
본 발명의 실시예에 의하면, 각각의 스칼라 레지스터는 36비트 넓이를 갖는다. 데이타형태가 반워드(halfword)이면, 이 반워드는 비트[0:7] 및 비트[9:16]에 위치하고, 나머지 비트들은 보존된다. 데이타형태가 워드이면, 이 워드는 비트들 [0:7],[9:16],[18:25],[27:34]에 위치하고 나머지 비트들은 보존된다.
레지스터 파일(200)내의 64개의 벡터 레지스터들은 각각 32개의 레지스터를 갖는 2개의 뱅크로 구성된다. 뱅크0는 처음의 32개의 레지스터를 포함하고, 뱅크1은 그 다음의 32개의 레지스터를 포함한다. 2개의 뱅크중의 하나는 "현재의" 뱅크로 설정되고, 나머지 뱅크는 "교체되는" 뱅크로 설정된다. 벡터 명령은 현재의 뱅크내의 레지스터들을 디폴트(default)로 사용한다. 상기 로드/저장 및 레지스터 이동명령은 교체되는 뱅크내의 레지스터들을 억세스할 수 있다. 벡터 제어 및 상태레지스터(VCSR)내의 하나의 비트는 뱅크0와 뱅크1중 어느 것이 현재의 뱅크인지를 나타낸다. 현재의 뱅크내의 벡터레지스터들은 VR0 내지 VR31로 나타내어지며, 교체되는 뱅크내의 레지스터들은 VRA0 내지 VRA31로 나타내어진다.
선택적인 모드에 있어서, 상기 뱅크들은 통합되어 32개의 576비트 벡터레지스터를 제공한다. 이 모드는 64 바이트9 벡터모드 또는 VEC64모드라고 한다. 비VEC64모드(non-VEC64 mode)는 VEC32 모드라고 한다. VCSR내의 하나의 비트가 동작의 모드를 지정한다. VEC64모드에 있어서, 576비트 레지스터들은 VR0 내지 VR31로 나타내어진다.
도 5 는 벡터레지스터내에 사용되는 데이타형태 포맷을 도시한 것이다. 288비트 벡터 각각은 8개의 36비트 필드들로 나누어진다. 36비트 필드 각각은 4개의 9비트 바이트(500), 4개의 8비트 바이트(510), 2개의 16비트 반워드(530) 또는 단일 32비트 워드(540)로 취급될 수 있다. 데이타형태가 8비트 바이트(510), 16비트 반워드(530) 또는 32비트 워드(540)이면, 모든 9번째 비트(비트 520과 같은)는 프로세서에 의해 보존된 비트로 취급된다. 즉, 비트가 무시된다.
도 6 은 마스크생성기(330)(도 3 에 도시됨)에 의해 생성된 32비트 마스크(600)내의 각각의 비트가 어떻게 288비트 벡터(610)내로 배치되는지를 도시한 것이다. 벡터가 레지스터파일(200)에 기입되면, 마스크(600)내의 각각의 비트(630)는 벡터내의 9비트 바이트(620)에 상응한다. 마스크내의 각각의 비트는 벡터(610)내의 해당 바이트9가 기입되었는지를 결정한다. 도 6 에서 마스크(600)의 비트(2)만이 설정되므로 바이트9의 번호2, 즉, 벡터(610)의 비트들(16-26)만이 기입된다.
프로세서가 도 9 에 도시된 명령(VINSRT)을 수행할때 스칼라값은 레지스터파일(200)내의 벡터레지스터로 기입된다. 도 9 에 있어서, 5비트 필드(VRd)(필드 970)는 레지스터파일(200)내의 벡터레지스터를 나타낸다. VEC32모드에서 필드(VRd)는 현재의 뱅크내의 288비트 레지스터(VR0-VR31)중의 하나이고, VEC64모드에 있어서 필드(VRd)는 576비트 레지스터(VR0-VR31)중의 하나이다. 2비트 필드(DS)는 기입될 스칼라값(바이트8, 바이트9, 1/2워드 또는 워드)의 데이타형태를 규정한다. 5비트 필드(SRa)는 스칼라값을 포함하는 스칼라 레지스터를 규정하고, 5비트 필드(SRb/IM5)(필드 980)는 벡터레지스터내의 어느 위치로 스칼라값이 기입되는지를 규정하는 인덱스(index)를 제공한다. 비트들(D,S,M)에 따라 상기 필드는 필드(SRb/IM5)와 필드(IM9)(필드 960)의 조합에 의해 얻어지는 즉석값(immediate value) 또는 상기 인덱스를 포함하는 스칼라 레지스터(SRb)의 어드레스를 포함한다. 비트들(D,S,M)은 필드(SRb/IM5)가 즉석값인지 스칼라 레지스터내의 값인지를 규정한다. 상기 인덱스의 5개의 최하위비트들은 0과 31사이의 수를 규정하는데 사용된다.
명령(VINSRT)이 수행되면, 필드(DS)는 마스크생성기(330)의 제 1 입력으로 제공된다. 상기 인덱스는 마스크생성기(330)의 제 2 입력으로 제공된다. 상기 인덱스는 즉석값이거나 레지스터(SRa)로부터 독출되는 값이다. 마스크생성기(330)는 도 6 및 도 7A 내지 7C 에 도시된 바와 같이 32비트 마스크를 생성한다. 필드(DS)가 바이트9 데이타형태를 규정하면, 32비트 마스크내에서 상기 인덱스에 의해 번호가 주어지는 비트가 세트되고 (즉, 논리 1로 되고), 나머지 비트들은 리세트된다 (즉, 논리 0가 된다). 도 6 에 있어서, 상기 인덱스는 2이고, 32비트 마스크는 비트2를 제외한 모든 위치에서 0를 갖는다. 필드(DS)가 바이트(8비트)의 데이타형태를 규정하면, 마스크생성기의 동작은 바이트9 데이타형태에 대한 동작과 동일하다. 상기 인덱스값이 1인 경우를 나타낸 도 7A 를 살펴보자. 필드(DS)가 반워드 데이타형태(도 7B에 도시됨)를 규정하면, 상기 인덱스는 0에서 15사이의 수이다. 도 7B 에 있어서, 인덱스는 1이다. 마스크생성기(330)는 반워드수의 "인덱스"에 해당하는 위치들, 즉, 위치들(index*2, index*2+1)(도 7B의 마스크(730)내의 비트 2와 3)에 마스크비트들을 세트한다. 나머지 마스크비트들은 리세트된다. 필드(DS)가 워드 데이타형태(도 7C 참조)를 규정하면, 인덱스는 0에서 7사이의 수이다. 도 7C 에서 인덱스는 1이다. 마스크생성기(330)는 워드수의 "인덱스", 즉, 비트들(index*4, index*4+1, index*4+2, index*4+3)(도 7C의 마스크(760)내의 비트들(4-7))에 대해 마스크비트들을 세트한다. 나머지 비트들은 리세트된다.
도 9 에 도시한 VINSRT명령은 메모리로부터 벡터프로세서의 파이프라인 독출단제어부로 독출되며, 다음과 같이 수행된다. 그러나, VEC64가 사용될 경우에는 파이프라인 독출단 제어부는 2개의 VINSRT명령을 생성하는데, 하나는 뱅크0내의 벡터레지스터를 목적지 레지스터로, 다른 하나는 백크1상의 벡터레지스터를 목적지 레지스터로 하는 것이다. 또한, 상기 파이프라인 독출단 제어부는 수행될 제 1 명령을 인지하는 제 1 명령플래그를 생성한다.
<클럭주기1>
클럭주기1 동안, SRa필드(980)는 독출어드레스 제어부(226,228)중의 하나로 전달되어 SRa레지스터를 AMUX(250) 또는 BMUX(255)중의 하나로 독출한다. SRb/IM5필드(990)(인덱스필드)가 레지스터를 규정하면, 필드(990)는 독출어드레스 제어부(226,228)중의 다른 하나로 전달되어 SRb를 AMUX(250) 또는 BMUX(255)중의 다른 하나로 독출한다. SRb/IM5필드가 즉석값(immediate value)이면, 이 값은 파이프라인 독출단 제어부로부터 AMUX(250) 또는 BMUX(255)로 전달된다. 멀티플렉서(242,244)는 AMUX(250) 및 BMUX(255)의 출력을 각각 선택한다. 이들 출력들중의 한 출력상의 인덱스는 마스크생성기(330)로 제공되고, 다른 출력상의 스칼라레지스터의 SRa값은 ALU-3(320)으로 제공된다.
<클럭주기2>
클럭주기2 동안에는, 마스크생성기(330)는 상술한 바와 같이 상기 인덱스와 DS필드로부터 32비트 마스크를 생성한다. VEC64모드에 있어서, ALU(220)로 제공되는 인덱스의 5개의 최하위비트들만이 마스크생성기에 의해 32비트 마스크를 생성하기 위해 사용된다. (6번째 최하위비트는 마스크생성기(330)에 의해 생성된 마스크가 바이트인에이블포트(232)와 AMUX(250) 및 BMUX(255)로 인가될지는 제어하기 위하여 사용된다) ALU-3(320)에는 MUX(242 또는 244)로부터 레지스터(SRa)에서 독출된 스칼라값이 인가된다. ALU-3(320)에는 또한 파이프라인 독출단 제어부로부터 데이타크기(DS)가 인가된다. 이에 따라 ALU-3(320)은 도 8A 내지 8D 에 도시된 바와 같이 복수개의 스칼라값의 카피를 포함하는 벡터(V2)를 생성한다.
도 8A 는 DS가 바이트9를 규정하는 경우를 도시한 것이다. 레지스터(SRa)의 비트들[8:0]내의 바이트9의 스칼라값(A)은 벡터(V2)의 비트들[8:0],[15:9],...., [287:279]내의 연속되는 9비트 필드들로 복사된다.
도 8B 는 DS가 하나의 바이트를 규정하는 경우를 도시한 것이다. 레지스터(SRa)의 8개의 최하위비트들내의 값(A)은 모든 9비트 필드[8:0],[15:9], ... [287:279]의 8개의 최하위비트들로 복사된다. 9번째 비트는 이 경우 "don't care"이다.
도 8C 는 DS가 반워드를 규정하는 경우를 도시한 것이다. 스칼라 레지스터(SRa)내의 반워드는 비트들[7:0]내의 값(A)과 비트들[15:8]내의 값(B)을 갖는다. 이들 값은 벡터(V2)를 통해 복사되며, 이때 벡터(V2)의 모든 9번째 비트는 "don't care"이다. 벡터(V2)의 비트들[7:0]에는 A값이 인가되고, 비트들[16:9]에는 B값이, 비트들[25:18]에는 A값이, 비트들[34:27]에는 B값이 인가되며, 이런 식으로 벡터(V2)의 마지막 비트까지 가게 된다.
도 8D 는 DS가 워드를 규정하는 경우를 도시한 것이다. 레지스터(SRa)에 있어서, 비트들[7:0]은 A값을 포함하고, 비트들[15:8]은 B값을, 비트들[23:16]은 C값을, 그리고 비트들[31:24]은 D값을 포함한다. 레지스터(SRa)내의 워드는 레지스터(V2)를 통해 복사되는바, 레지스터(V2)의 모드 9번째 비트들은 "don't care"이다. V2의 비트들[7:0]에는 A값이 인가되고, 비트들[16:9]에는 B값이, 비트들[25:18]에는 C값이, 비트들[34:27]에는 D값이, 비트들[36:43]에는 A값이 인가되며, 이런 식으로 V2의 끝까지 가게 된다.
벡터(V2)는 누산기(230), WBMUX(270) 및 AccMUX(260)에 연결된 ALU의 출력부(220.1)로 제공된다. 마스크는 바이트인에이블포트(232)와 AMUX(250) 및 BMUX (255)의 입력에 연결된 출력부(220.2)로 제공된다. VEC64모드에 있어서, 인덱스의 6번째 최하위비트는 파이프라인 독출단 제어부(도시하지 않음)로 인가된다. 6번째 최하위비트가 제 1 명령플래그와 맞지 않으면 (즉, 최하위비트들이 모두 0이거나 1이 아니면), 파이프라인 독출 제어부는 출력부(220.2)에 연결된 멀티플렉서를 제어하여 비트들이 모두 리세트된 32비트 버퍼에 연결된 입력부를 선택하도록 한다. 즉, 요소들을 선택하지 않는 마스크는 바이트인에이블포트(232), AMUX(250) 및 BMUX(255)로 인가된다.
VINSRT(스칼라값이 벡터로 기입된 레지스터파일(200)내의 벡터)의 결과가 다음 명령에 사용될 것이라면, 상기 프로세서는 "포워딩 인에이블된(forwarding enabled)"신호를 생성한다. 이 경우, VRd필드(970)가 독출어드레스제어부(226 또는228)로 제공되고, 벡터레지스터가 AMUX(250) 또는 BMUX(255)로 독출된다.
VEC64모드에 있어서, 제 2 VINSRT명령은 파이프라인 형태로 실행된다. 즉, 제2VINSRT명령 실행의 주기-1이 제 1 VINSRT명령 실행의 주기-2와 동시적으로 실행된다.
<클럭주기3>
주기 3 동안, 벡터(V2)는 WBMUX(270) 및 W1MUX(240), 또는 AccMUX(260) 및 W2MUX(245)를 통해 입력부(202 또는 204)로 전달된다. VRd필드(970)는 기입제어부(222 또는 224)로 제공된다. 마스크는 바이트인에이블포트(232)로 제공된다. 마스크에 의해 선택된 V2의 바이트9 필드들은 VRd레지스터로 기입된다. 특히, 세트되는 각각의 마스크 비트(i)에 대해 V2의 바이트9 (즉, 비트들(V2)[9i+8:9i])는 VRd로 기입된다. VRd레지스터의 나머지는 변화되지 않은 채로 남게 된다. VEC64모드에 있어서, 인덱스의 6번째 최하위비트가 제1명령신호와 맞지 않으면, 마스크는 모두 0이고 요소들은 업데이트되지 않는다.
WBMUX(270) 또는 AccMUX(260)의 출력상의 벡터(V2)와 출력(220.2)상의 마스크는 AMUX(250) 및 BMUX(255)로 제공된다. 포워딩(forwarding)이 인에이블되면, 주기2내의 VRd레지스터를 독출하는 AMUX(250) 또는 BMUX(255)는 마스크에 의해 선택된 V2의 바이트9필드를 기입함으로써 VRd레지스터의 카피를 VRd카피로 업데이트한다. AMUX(250) 또는 BMUX(255)는 AMUX 또는 BMUX출력상의 VRd레지스터의 업데이트된 카피를 다음 명령에서 사용하기 위해 제공한다. 이에 따라 AMUX 또는 BMUX출력과 파일(200)내의 VRd레지스터는 동일한 벡터를 갖는다. 결과적으로, 주기3의 끝에서 레지스터파일(200)로부터 VRd레지스터를 독출하지 않고도 새로운 벡터를 ALU(220) 및 승산기(210)에 곧바로 이용할 수 있게 된다. 그러므로 포워드패싱(forward passing) 동작에서의 추가적인 주기가 필요없게 된다.
VEC64모드에 있어서, 제 2 VINSRT명령은 파이프라인형태로 계속 실행된다. 즉, 이 명령의 주기-2가 제 1 VINSRT명령의 주기-3동안 실행된다.
<클럭주기4>
VEC64모드에 있어서, 제 2 VINSRT명령의 주기-3은 제 1 VINSRT명령이 완료된 후에 실행된다. 그러므로, 전체적인 VEC64의 VINSRT명령의 실행에는 4개의 주기가 필요하며, 파이프라인 독출 제어부에 의해 생성된 파이프라인 VINSRT명령은 3개의 주기를 필요로 한다.
이상에서 설명한 본 발명은 전술한 실시예 및 첨부된 도면에 의해 한정되는 것이 아니다. 특히, 본 발명은 레지스터파일 포트들의 갯수, 특정한 데이타형태, 데이타 크기 또는 명령포맷, 특정한 타이밍, 또는 특정한 하드웨어에 의해 한정되지 않는다. 몇몇 실시예에 있어서, 레지스터파일은 각각의 기입포트에 대한 각각의 독립된바이트인에이블포트를 포함한다. 프로세서는 1개 이상의 ALU를 포함한다. ALU를 추가하면 레지스터파일이 추가 포트들을 가진다고 해도 레지스터파일억세스에 대한 경쟁을 증가시킬 수 있다. 그러나, 스칼라값을 레지스터파일내의 벡터레지스터로 기입하는 것이 벡터의 독출을 필요로 하지 않는다는 사실은 레지스터파일 억세스에 대한 경쟁을 감소시킨다. 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 특허청구범위에 의해 규정되는 바와 같이 가능하다.
본 발명에 의하면 컴퓨터 시스템에서 저장장치로부터 벡터를 독출하지 않고 스칼라값을 벡터로 기입할 수 있다. 이와 같이 스칼라값을 벡터로 기입하는 동작을 위해 벡터가 저장부로부터 독출되지 않으므로 레지스터파일 억세스를 위한 경쟁이 감소하게 된다.

Claims (13)

  1. 컴퓨터시스템내의 저장장치에 저장된 제 1 벡터내의 소정위치로 스칼라값을 기입하는 방법에 있어서,
    상기 스칼라값의 복수개의 카피를 포함하는 제 2 벡터를 생성하는 단계와;
    상기 소정위치를 나타내는 신호를 생성하는 단계; 및
    상기 제 2 벡터와 신호를 상기 저장장치로 인가하는 단계를 포함하며,
    상기 신호에 응답하여 상기 저장장치가 상기 제 2 벡터의 일부를 상기 제 1 벡터내의 상기 소정위치로 기입하고, 상기 제 1 벡터의 나머지는 변화되지 않고 남아 있게 되는 것을 특징으로 하는 스칼라값을 벡터로 기입하는 방법.
  2. 제 1 항에 있어서,
    상기 소정위치가 상기 저장장치에 저장된 데이타에 의해 규정되고, 상기 신호생성단계가 상기 저장장치로부터 상기 데이타를 독출하는 단계를 포함하는 것을 특징으로 하는 스칼라값을 벡터로 기입하는 방법.
  3. 제 1 항에 있어서,
    상기 소정위치를 규정하는 데이타는 상기 컴퓨터시스템의 제어부의 버퍼로부터 독출되는 것을 특징으로 하는 스칼라값을 벡터로 기입하는 방법.
  4. 제 1 항에 있어서,
    상기 제 2 벡터내의 상기 스칼라값의 카피의 갯수는 상기 스칼라값의 크기에 의존하는 것을 특징으로 하는 스칼라값을 벡터로 기입하는 방법.
  5. 제 1 항에 있어서,
    상기 신호생성단계 및 상기 제 2 벡터생성단계가 동시적으로 수행되는 것을 특징으로 하는 스칼라값을 벡터로 기입하는 방법.
  6. 제 1 항에 있어서,
    상기 신호가 상기 스칼라값의 상기 데이타형태의 함수인 것을 특징으로 하는 스칼라값을 벡터로 기입하는 방법.
  7. 제 1 항에 있어서,
    상기 제 1 벡터의 소정위치로 상기 제 2 벡터의 일부를 기입한 결과로서, 상기 저장장치가 제 1 벡터 대신에 제 3 벡터를 얻으며, 상기 스칼라값을 벡터로 기입하는 방법이,
    상기 제 2 벡터의 일부가 제 1 벡터의 소정위치로 기입되기 전에, 상기 저장장치로부터 제 1 회로로 상기 제 1 벡터를 독출하는 단계와, 상기 제 3 벡터의 카피를 벡터처리회로로 제공하는 단계를 더 포함하는바, 상기 제 1 회로는 상기 제 2 벡터의 일부를 상기 제 1 벡터의 카피내의 소정위치에 기입함으로써 상기 제 3 벡터의 카피를 얻고, 상기 벡터처리회로에는 상기 제 3 벡터가 상기 저장장치로부터 독출될 수 있기 전에 제 3 벡터의 카피가 인가된는 것을 특징으로 하는 스칼라값을 벡터로 기입하는 방법.
  8. 제 1 항에 있어서,
    상기 제 2 벡터내의 스칼라값의 각 카피에 대해 상기 신호가 상기 카피가 저장장치에 의해 상기 제 1 벡터로 기입될 것인지를 나타내는 1개이상의 비트를 포함하는 것을 특징으로 하는 스칼라값을 벡터로 기입하는 방법.
  9. 제 8 항에 있어서,
    상기 신호가 상기 저장장치의 제어부로 인가되는 것을 특징으로 하는 스칼라값을 벡터로 기입하는 방법.
  10. 제 9 항에 있어서,
    상기 제 2 벡터가 상기 컴퓨터시스템내의 3개이하의 입력부를 갖는 ALU에 의해 생성되는 것을 특징으로 하는 스칼라값을 벡터로 기입하는 방법.
  11. 제 1 항에 있어서,
    상기 저장장치가 3개 이하의 출력부를 가지며,
    상기 제 2 벡터생성단계가 상기 저장장치로부터 스칼라값을 독출하는 단계를 포함하며,
    상기 신호생성단계가 상기 소정위치를 나타내는 데이타를 상기 저장장치로부터 독출하는 단계를 포함하는 것을 특징으로 하는 스칼라값을 벡터로 기입하는 방법.
  12. 제 11 항에 있어서,
    상기 스칼라값과 상기 소정위치를 나타내는 데이타가 상기 저장장치의 2개의 다른 포트들로부터 동시적으로 독출되는 것을 특징으로 하는 스칼라값을 벡터로 기입하는 방법.
  13. 벡터프로세서내의 저장장치내에 저장된 제 1 벡터내의 소정위치로 스칼라값을 기입하는 방법에 있어서,
    상기 스칼라값의 복수개의 카피를 포함하는 제 2 벡터를 생성하는 단계와;
    상기 소정위치를 나타내는 신호를 생성하는 단계; 및
    상기 제 2 벡터와 신호를 상기 저장장치로 인가하는 단계를 포함하며,
    상기 신호에 응답하여 상기 저장장치가 제 3 벡터를 생성하는바, 상기 제 3 벡터는 상기 소정위치를 제외한 모든 위치에서 상기 제 1 벡터와 동일한 값을 가지며, 상기 소정위치에서 상기 제 2 벡터와 동일한 값을 갖는 것을 특징으로 하는 스칼라값을 벡터로 기입하는 방법.
KR1019970016967A 1996-10-18 1997-05-02 컴퓨터에 있어서 스칼라값을 벡터로 기입하는 방법 KR100227277B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US8/733,906 1996-10-18
US08/733,906 US6006315A (en) 1996-10-18 1996-10-18 Computer methods for writing a scalar value to a vector

Publications (2)

Publication Number Publication Date
KR19980032103A KR19980032103A (ko) 1998-07-25
KR100227277B1 true KR100227277B1 (ko) 1999-11-01

Family

ID=24949593

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970016967A KR100227277B1 (ko) 1996-10-18 1997-05-02 컴퓨터에 있어서 스칼라값을 벡터로 기입하는 방법

Country Status (4)

Country Link
US (1) US6006315A (ko)
JP (1) JP3954171B2 (ko)
KR (1) KR100227277B1 (ko)
TW (1) TW364981B (ko)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6282634B1 (en) * 1998-05-27 2001-08-28 Arm Limited Apparatus and method for processing data having a mixed vector/scalar register file
US7529907B2 (en) * 1998-12-16 2009-05-05 Mips Technologies, Inc. Method and apparatus for improved computer load and store operations
US6353439B1 (en) * 1999-12-06 2002-03-05 Nvidia Corporation System, method and computer program product for a blending operation in a transform module of a computer graphics pipeline
US6591361B1 (en) 1999-12-28 2003-07-08 International Business Machines Corporation Method and apparatus for converting data into different ordinal types
US6857061B1 (en) * 2000-04-07 2005-02-15 Nintendo Co., Ltd. Method and apparatus for obtaining a scalar value directly from a vector register
US6701424B1 (en) 2000-04-07 2004-03-02 Nintendo Co., Ltd. Method and apparatus for efficient loading and storing of vectors
US7233998B2 (en) * 2001-03-22 2007-06-19 Sony Computer Entertainment Inc. Computer architecture and software cells for broadband networks
CN1656445B (zh) * 2002-05-24 2010-05-05 Nxp股份有限公司 处理系统
WO2004015563A1 (en) * 2002-08-09 2004-02-19 Intel Corporation Multimedia coprocessor control mechanism including alignment or broadcast instructions
US6986023B2 (en) * 2002-08-09 2006-01-10 Intel Corporation Conditional execution of coprocessor instruction based on main processor arithmetic flags
US7392368B2 (en) * 2002-08-09 2008-06-24 Marvell International Ltd. Cross multiply and add instruction and multiply and subtract instruction SIMD execution on real and imaginary components of a plurality of complex data elements
US20040215924A1 (en) * 2003-04-28 2004-10-28 Collard Jean-Francois C. Analyzing stored data
JP3855270B2 (ja) * 2003-05-29 2006-12-06 ソニー株式会社 アンテナ実装方法
TW200625097A (en) * 2004-11-17 2006-07-16 Sandbridge Technologies Inc Data file storing multiple date types with controlled data access
US7516299B2 (en) * 2005-08-29 2009-04-07 International Business Machines Corporation Splat copying GPR data to vector register elements by executing lvsr or lvsl and vector subtract instructions
US7404065B2 (en) * 2005-12-21 2008-07-22 Intel Corporation Flow optimization and prediction for VSSE memory operations
WO2009076281A1 (en) * 2007-12-10 2009-06-18 Sandbridge Technologies, Inc. Accelerating traceback on a signal processor
US20100106939A1 (en) * 2008-10-27 2010-04-29 Daniel Citron Transferring data from integer to vector registers
KR20110103256A (ko) * 2010-03-12 2011-09-20 삼성전자주식회사 다중 입출력 오퍼레이션 지원 프로세서 및 그 방법
JP5699554B2 (ja) * 2010-11-11 2015-04-15 富士通株式会社 ベクトル処理回路、命令発行制御方法、及びプロセッサシステム
WO2013095618A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Instruction execution that broadcasts and masks data values at different levels of granularity
US9122475B2 (en) * 2012-09-28 2015-09-01 Intel Corporation Instruction for shifting bits left with pulling ones into less significant bits
US10877925B2 (en) * 2019-03-18 2020-12-29 Micron Technology, Inc. Vector processor with vector first and multiple lane configuration

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3827031A (en) * 1973-03-19 1974-07-30 Instr Inc Element select/replace apparatus for a vector computing system
JPH0724013B2 (ja) * 1986-09-10 1995-03-15 株式会社日立製作所 ベクトルプロセツサ
US5226135A (en) * 1987-09-25 1993-07-06 Hitachi, Ltd. Method for sorting vector data on the basis of partial vectors and vector processor
JP2665111B2 (ja) * 1992-06-18 1997-10-22 日本電気株式会社 ベクトル処理装置
US5331554A (en) * 1992-12-10 1994-07-19 Ricoh Corporation Method and apparatus for semantic pattern matching for text retrieval
US5461586A (en) * 1994-01-31 1995-10-24 Texas Instruments Incorporated Self-timed redundancy circuit

Also Published As

Publication number Publication date
TW364981B (en) 1999-07-21
JPH10187661A (ja) 1998-07-21
KR19980032103A (ko) 1998-07-25
US6006315A (en) 1999-12-21
JP3954171B2 (ja) 2007-08-08

Similar Documents

Publication Publication Date Title
KR100227277B1 (ko) 컴퓨터에 있어서 스칼라값을 벡터로 기입하는 방법
US5832288A (en) Element-select mechanism for a vector processor
JP3592230B2 (ja) データ処理装置
US5287532A (en) Processor elements having multi-byte structure shift register for shifting data either byte wise or bit wise with single-bit output formed at bit positions thereof spaced by one byte
US7404066B2 (en) Active memory command engine and method
US3990052A (en) Central processing unit employing microprogrammable control for use in a data processing system
JP2905446B2 (ja) データストリング生成方法、コンピュータ動作方法、ピクセル値セット生成方法及びコンピュータ
EP1570373A1 (en) Cellular engine for a data processing system
CN108205448B (zh) 具有在每个维度上可选择的多维循环寻址的流引擎
KR19980069856A (ko) 스케일러블 폭의 벡터 프로세서 아키텍쳐
US4323964A (en) CPU Employing micro programmable control for use in a data processing system
US5119324A (en) Apparatus and method for performing arithmetic functions in a computer system
JP2001504959A (ja) Riscアーキテクチャを有する8ビットマイクロコントローラ
JPH11272546A (ja) 可変長レジスタ装置
KR100765567B1 (ko) 산술 논리 유닛 및 스택을 가지는 데이터 프로세서, 멀티미디어 장치 및 컴퓨터 판독가능 기록 매체
EP1044407B1 (en) Vector data processor with conditional instructions
US4975837A (en) Programmable unit having plural levels of subinstruction sets where a portion of the lower level is embedded in the code stream of the upper level of the subinstruction sets
US20030009652A1 (en) Data processing system and control method
JPS623332A (ja) 情報処理装置
JP2006134347A (ja) マイクロコンピュータ
KR20010072490A (ko) 레지스터 스택을 포함하는 데이터 프로세서, 그 처리방법, 컴퓨터 프로그램 제품 및 멀티미디어 장치
JPS6362778B2 (ko)
EP0305752A2 (en) Programmable data path width in a programmable unit having plural levels of subinstruction sets
KR960016401B1 (ko) 레지스터 페이지 포인터를 이용한 레지스터 페이지간의 페이지 선택회로
IE56443B1 (en) Microprogram control

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

Year of fee payment: 13

LAPS Lapse due to unpaid annual fee