[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

KR20040111559A - 주소 레지스터의 내용을 스와핑하기 위한 방법 및 장치 - Google Patents

주소 레지스터의 내용을 스와핑하기 위한 방법 및 장치 Download PDF

Info

Publication number
KR20040111559A
KR20040111559A KR10-2004-7017432A KR20047017432A KR20040111559A KR 20040111559 A KR20040111559 A KR 20040111559A KR 20047017432 A KR20047017432 A KR 20047017432A KR 20040111559 A KR20040111559 A KR 20040111559A
Authority
KR
South Korea
Prior art keywords
address
register
swap
address register
contents
Prior art date
Application number
KR10-2004-7017432A
Other languages
English (en)
Other versions
KR100974401B1 (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 KR20040111559A publication Critical patent/KR20040111559A/ko
Application granted granted Critical
Publication of KR100974401B1 publication Critical patent/KR100974401B1/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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • 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/355Indexed addressing

Landscapes

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

Abstract

디지털 메모리 버퍼를 지원하는 디지털 정보 프로세서의 사용을 위한 방법 및 장치가 제공된다. 본 발명의 일 양태에서, 디지털 신호 프로세서는 스왑 명령을 수신하고 그 스왑 명령에 응답하여 제1 주소 레지스터와 제2 주소 레지스터의 내용을 스와핑한다. 다른 양태에서, 디지털 신호 프로세서는 스왑 명령을 수신하고, 미래 파일 내의 제1 주소 레지스터와 제2 주소 레지스터의 내용을 스와핑하고, 스왑 명령에 응답하여 파이프라인의 다운스트림 스테이지에서 아키텍처 파일로의 하나 이상의 제어 신호를 생성하고, 하나 이상의 제어 신호에 응답하여 아키텍처 파일 내의 제1 주소 레지스터와 제2 주소 레지스터의 내용을 스와핑한다.

Description

주소 레지스터의 내용을 스와핑하기 위한 방법 및 장치{METHOD AND APPARATUS FOR SWAPPING THE CONTENTS OF ADDRESS REGISTERS}
다수의 디지털 정보 프로세서는 정보를 임시적으로 저장하는 디지털 메모리 버퍼를 제공한다. 디지털 메모리 버퍼는 함께 배선된 전용 하드웨어 레지스터로 구성될 수도 있고, 단순히 보다 큰 메모리의 전용 섹션일 수도 있다.
디지털 메모리 버퍼의 한 유형은 순환 버퍼라고 불린다. 순환 버퍼에서는, 버퍼의 처음 위치가 버퍼의 마지막 위치의 뒤를 잇는 것처럼 다루어진다. 즉, 버퍼에서 연속적인 위치를 액세스할 때, 처음 위치는 자동적으로 마지막 위치의 뒤를 잇는다.
순환 버퍼에 저장된 정보를 빨리 액세스하는 것은 바람직하다. 예를 들어, 디지털 정보 프로세서는 처리량을 높히는 실행 파이프라인을 가질 수 있지만, 이 파이프라인을 충분히 활용하기 위하여는 정보가 빨리 액세스되어야 한다. 따라서, (버퍼의 위치를 액세스하는 데 사용되는) 메모리 주소는 종종 하드웨어-구현된 주소 생성기를 사용하여 생성된다. 순환 버퍼를 위한 하드웨어-구현된 주소 생성기의 한 유형은 각 순환 버퍼 당 4개의 레지스터를 유지하는데, 그것은 (1)버퍼 내의 최저 번호의 주소를 포함하는 베이스 레지스터 B, (2)버퍼에서 액세스될 다음 주소를 포함하는 인덱스 레지스터 I, (3)증분(또는 감소) 값을 포함하는 변경 레지스터 M, (4)버퍼의 길이를 포함하는 길이 레지스터 L이다.
도 1은 보다 큰 메모리의 일부로서 통합된 순환 버퍼와 그 메모리 버퍼와 연계되어 유지될 수 있는 주소 레지스터의 일례를 도시한다. 버퍼 내의 최저 번호의 주소 즉, 주소 19는 베이스 주소라고 불린다. 베이스 주소는 베이스 레지스터 B에 저장된다. 버퍼 내의 최고 주소 즉, 주소 29는 엔드 주소(end address)라고 불리고, E로 표시된다. 버퍼의 길이는 길이 레지스터 L에 저장된다. I로 표시된 인덱스 레지스터는 버퍼로의 포인터이다. 인덱스 레지스터는 일반적으로, 액세스될 다음 위치의 주소 예를 들어 주소 26을 포함한다. 각각의 액세스 후에, 순환 버퍼로의 다음 액세스에 대비하기 위하여 소정 수의 주소만큼 포인터가 증가 또는 감소된다. 포인터가 증가 또는 감소되는 주소 공간의 수는 변경 양이며, 변경 레지스터 M에 저장된다. 변경 양이 변할 수 있는 어플리케이션이 존재하지만, 흔히, 변경 양은 변하지 않는 고정된 수이다.
다수의 디지털 정보 프로세싱 루틴은 메모리 버퍼를 이용한다. 하나의 그러한 루틴은 주로 FFT(Fast Fourier Transform)라 불린다. FFT 루틴은 결과를 생성하는 데 일련의 "버터플라이(butterfly)" 계산을 사용한다. 하나의 버터플라이 계산으로부터의 결과는 다음 버터플라이 계산에 대한 입력 데이타로서 사용된다.
대부분의 FFT 루틴은 각각의 버터플라이 계산에 대한 입력 데이타가 특정 메모리 버퍼(여기서는 입력 버퍼라 칭함)로부터 판독되고 각각의 버터플라이 계산으로부터의 결과가 다른 메모리 버퍼(여기서는 출력 버퍼라 칭함)에 저장되도록 기록된다. 각각의 버터플라이 계산의 결과는 다음 버터플라이 계산에 대한 입력 데이타로서 사용되기 때문에, 그 결과는 다음 버터플라이 계산이 시작되기 전에 입력 버퍼로 "로드(load)"되어야 한다.
결과를 입력 버퍼로 로드하는 것에 대하여는 여러가지 방법이 있다. 한가지 방법은 단순하게 그 결과를 출력 버퍼로부터 입력 버퍼로 복사하는 것이다. 그러나, 하나의 버퍼로부터 다른 버퍼로 결과를 복사하는 것은 상대적으로 매우 많은 시간을 필요로할 수 있고, 이것은 많은 오버헤드를 추가함으로써 FFT 루틴의 성능을 저하시킨다.
다른 방법은 입력 버퍼와 관련된 주소 레지스터를 이전 버터플라이 계산으로부터의 결과가 저장되어 있는 출력 버퍼의 주소를 가리키도록 리다이렉트(redirect)하는 것이다. 또한, 출력 버퍼와 관련된 레지스터는 일반적으로, 입력 버퍼용으로 이전에 사용된 주소를 가리키도록 리다이렉트된다. 이것은 주어진 버터플라이 계산의 결과가 그 버터플라이 계산에 대한 입력 데이타를 오버라이팅(overwrite)하지 않고 저장될 수 있도록 하는 것이다. 입력 및 출력 버퍼와 관련된 주소 레지스터를 리다이렉트하는 것은 입력 버퍼의 내용이 출력 버퍼의 내용과 스와핑된 것과 동일한 효과를 갖는다.
주소 레지스터 리다이렉트는 주로 다음과 같이 수행된다. (1)입력 버퍼에 대한 베이스 레지스터의 내용은 출력 버퍼에 대한 베이스 레지스터 내용과 스와핑되고, (2)입력 버퍼에 대한 인덱스 레지스터 내용은 출력 버퍼에 대한 인덱스 레지스터 내용과 스와핑된다.
도 2a는 내용이 스와핑되기 전의 입력 및 출력 버퍼에 대한 베이스 및 인덱스 레지스터의 내용을 나타낸다. 내용이 스와핑되기 전에, 이 예에서 입력 버퍼와 관련된 베이스 레지스터 B0 및 인덱스 레지스터 I0은 버터플라이 계산 #1에 사용되는 입력 데이타를 가리킨다. 출력 버퍼와 관련된 베이스 레지스터 B1 및 인덱스 레지스터 I1은 버터플라이 계산 #1로부터의 결과를 가리킨다.
도 2B는 내용이 스와핑된 후의 입력 및 출력 버퍼에 대한 베이스 및 인덱스 레지스터의 내용을 나타낸다. 레지스터의 내용이 스와핑된 후에, 입력 버퍼와 관련된 베이스 레지스터 B0 및 인덱스 레지스터 I0은 버터플라이 계산 #1에 대한 결과를 가리킨다. 출력 버퍼에 관련된 베이스 레지스터 B1 및 인덱스 레지스터 I1은 버터플라이 계산 #1에 사용되는 입력 데이타를 가리킨다.
도 3은 입력 버퍼의 인덱스 및 베이스 레지스터의 내용을 출력 버퍼의 인덱스 및 베이스 레지스터의 내용과 스와핑하는 데 흔히 사용되는 루틴을 도시한다. 이 루틴은 6개의 명령을 포함하고 임시 레지스터 R0 및 R1을 사용한다.
현재 디지털 정보 프로세서의 성능 레벨에도 불구하고, 보다 나은 개선이 필요하다.
본 발명은 디지털 정보 프로세서에 관한 것으로서, 특히, 디지털 메모리 버퍼를 지원하는 디지털 정보 프로세서의 사용을 위한 방법 및 장치에 관한 것이다.
도 1은 보다 큰 메모리의 일부로서 통합된 순환 버퍼의 예를 도시.
도 2a는 입력 버퍼 및 출력 버퍼와 관련된 주소 레지스터의 내용을 스와핑하기 전의 입력 및 출력 버퍼에 대한 베이스 및 인덱스 레지스터의 내용을 나타냄.
도 2b는 입력 버퍼 및 출력 버퍼와 관련된 주소 레지스터의 내용을 스와핑한 후의 입력 및 출력 버퍼에 대한 베이스 및 인덱스 레지스터의 내용을 나타냄.
도 3은 입력 버퍼의 인덱스 및 베이스 레지스터의 내용을 출력 버퍼의 인덱스 및 베이스 레지스터의 내용과 스와핑하는 데 주로 사용되는 루틴을 도시.
도 4a는 본 발명의 일 실시예에 따른 스왑 명령 포맷의 일례를 도시.
도 4b는 본 발명의 일 실시예에 따른 다른 스왑 명령 포맷의 일례를 도시.
도 5는 본 발명의 일 실시예에 따라 스왑 명령을 수신 및 실행하는 디지털 정보 프로세서 일부의 블록도.
도 6은 도 5의 DAG의 일 실시예의 블록도.
도 7a는 도 6의 레지스터 유닛의 일 실시예 일부의 블록도.
도 7b는 도 6의 레지스터 유닛의 다른 실시예 일부의 블록도.
도 8은 본 발명의 일 실시예에 따라 스왑 명령을 수신 및 실행할 수 있는 디지털 정보 프로세서 파이프라인의 대표적인 일 실시예를 도시.
도 9는 도 8의 파이프라인에 사용될 수 있는 DAG의 일 실시예의 블록도.
본 발명의 일 양태에 따르면, 본 방법은 제1 주소를 저장하기 위한 제1 주소 레지스터, 및 제2 주소를 저장하기 위한 제2 주소 레지스터를 구비한 디지털 정보프로세서에서 사용된다. 방법은 명백하게 또는 내재적으로 식별되는 적어도 2개의 주소 레지스터에 대한 스왑(swap) 동작을 지정하는 스왑 명령에 응답하여, 제1 주소 레지스터와 제2 주소 레지스터의 내용을 스와핑하는 단계를 포함한다.
본 발명의 다른 양태에 따르면, 디지털 정보 프로세서는 제1 주소를 저장하기 위한 제1 주소 레지스터, 제2 주소를 저장하기 위한 제2 주소 레지스터, 및 명백하게 또는 내재적으로 식별되는 적어도 2개의 주소 레지스터에 대한 스왑 동작을 지정하는 스왑 명령을 수신하고 그 스왑 명령에 응답하여 제1 주소 레지스터의 내용을 제2 주소 레지스터의 내용과 스와핑하는 회로를 포함한다.
본 발명의 또다른 양태에 따르면, 디지털 정보 프로세서는 제1 주소를 저장하기 위한 제1 주소 레지스터, 제2 주소를 저장하기 위한 제2 주소 레지스터, 및 명백하게 또는 내재적으로 식별되는 적어도 2개의 주소 레지스터에 대한 스왑 동작을 지정하는 스왑 명령에 응답하여 제1 주소 레지스터와 제2 주소 레지스터의 내용을 스와핑하기 위한 수단을 포함한다.
본 발명의 또다른 양태에 따르면, 데이타 주소 생성기(DAG)는 제1 순환 버퍼 내의 위치에 대응하는 제1 주소를 포함한 제1 주소 레지스터, 제2 순환 버퍼 내의 위치에 대응하는 제2 주소를 포함한 제2 주소 레지스터, 및 스왑 명령을 나타내는 신호를 수신하고 그 신호에 응답하여 제1 주소 레지스터와 제2 주소 레지스터의 내용을 스와핑하는 회로를 포함한다.
구현예에 따라, 스왑 명령은 스왑을 수행하는 임시 레지스터에 대한 필요를 완전히 제거할 수 있어서, 결국 레지스터 압박을 감소시키고 과도한 레지스터 요구로 인한 지연(지연은 프로세서 상에서 실행하고 있는 루틴의 실행 속도 및 성능 레벨을 감소시킬 수 있음) 가능성을 줄이는 것을 돕는다. 다시, 구현예에 따라, 스왑 명령은 도 3의 루틴에서와 같은 데이타 의존성 및 임의의 관련 웨이트 사이클(wait cycle)을 감소시키거나 완전히 제거할 수 있다(데이타 의존성 및 웨이트 사이클은 프로세서 상에서 실행하고 있는 루틴의 실행 속도 및 성능 레벨을 감소시킬 수 있음).
본 발명의 또다른 양태에 따르면, 디지털 정보 프로세서의 사용 방법은 스왑 명령에 응답하여 미래 파일 내의 제1 주소 레지스터와 제2 주소 레지스터의 내용을 스와핑하는 단계, 스왑 명령에 응답하여 하나 이상의 제어 신호를 생성하고 그것을 미래 파일로부터 아키텍처 파일로 송신하는 단계, 및 하나 이상의 제어 신호에 응답하여 아키텍처 파일 내의 제1 주소 레지스터와 제2 주소 레지스터의 내용을 스와핑하는 단계를 포함한다.
마지막으로 언급한 본 발명의 양태는 스왑 명령으로 제한되는 것이 아니라 오히려, 일반적으로 파이프라인화된 데이타 프로세서에, 특히, 파이프라인의 하나 이상의 스테이지에서 동작의 결과가 요구되는 상황에 적용될 수 있다. 예를 들어, 하나의 스테이지에서 동작을 수행하고 그 결과를 후속하는 스테이지(들)로 파이프라이닝하기 보다, 파이프라인의 하나 이상의 스테이지에서 동작을 실제로 수행하는 능력이 제공될 수 있다. 그 후, 후속하는 스테이지(들)에는 (결과를 제외한) 제어 신호만이 제공될 필요가 있다. 구현예에 따라, 이것은 요구되는 영역 및/또는 전력의 감소로 유도할 수 있다.
본 발명의 하나 이상의 양태의 하나 이상의 구현의 전술된 잠재적인 장점에 반하지 않고, 본 발명의 임의의 양태의 임의의 실시예가 종래 기술의 취약점을 다루는 절대적인 요구조건은 없다는 것을 이해해야 한다.
도 3에 도시된 루틴이 몇가지 장애를 가지고 있다는 것은 분명하다. 우선, 임시 레지스터에 대한 요구가 프로세서 내의 레지스터 압박(임시 레지스터에 대한 요구 레벨의 측정치)을 증가시킨다. 임시 레지스터에 대한 요구가 (임시 레지스터 개수와 비교하여) 과도해지면, 부족현상이 초래되어 지연될 수 있어서, 차례로, 프로세서 상에서 실행하고 있는 루틴의 실행 속도 및 성능 레벨을 감소시킬 수 있다. 이 문제점은 특히 상대적으로 적은 임시 레지스터를 갖는 프로세서에서 두드러진다.
두번째로, 루틴 내의 마지막 4개의 명령은 하나 이상의 이전 명령이 완료될 때까지 실행될 수 없다(여기에서 데이타 종속성이라고 불리는 상황). 프로세서가 매우 깊은 파이프라인(즉, 다수의 스테이지로 나뉘어진 파이프라인)을 가진다면, 이 종속성 때문에 (즉, 특정 명령이 이전 명령의 완료 전에 실행되지 않음을 보장하기 위하여) 웨이트 사이클(wait cycle)이 추가되어야 한다. 따라서, 도 3의 루틴이 6개의 명령만을 가지고 있지만, 루틴을 완료하는 데는 8 내지 10개의(또는, 심지어 그 이상의) 명령 사이클이 요구될 수 있다. 그 동안, 다른 명령은 파이프라인에 입력될 수 없고, 이것은 파이프라인을 통한 전체 처리량을 감소시키고 프로세서 상에서 실행하고 있는 루틴의 실행 속도 및 성능 레벨을 감소시킨다.
따라서, 도 3의 루틴을 사용하려는 요구를 제거하는 것이 바람직할 것이다.
이것이 스왑 명령을 제공함으로써 수행될 수 있다는 것은 분명하다.
도 4a는 본 발명의 일 실시예에 따른 스왑 명령 포맷(100)의 일례를 도시한다. 명령 포맷은 이 명령이 스왑 명령임을 식별하고 101에 도시되어 있는 op 코드 예를 들어, SWAP을 갖는다. 이 명령 포맷은 또한, 내용을 스와핑시킬 주소 레지스터를 식별하고 102와 103에 도시되어 있는 2개의 오퍼랜드 필드 예를 들어, 주소 레지스터 id1와 주소 레지스터 id2도 갖는다.
여기에서 사용된 바와 같이, 용어 스왑은 내용을 교환하는 것을 의미한다. 이것은 임의의 방법으로 수행될 수 있다. 용어 주소 레지스터는, 메모리 위치를 액세스하는 데 사용되는 메모리 주소를 포함하는 임의의 레지스터, 또는 메모리 위치를 액세스하는 데 사용되는 메모리 주소를 생성하기 위한 데이타를 포함하는 임의의 레지스터로서 정의된 데이타 주소 레지스터를 말한다. 주소 레지스터의 예로는 베이스 레지스터 B, 인덱스 포인터 레지스터(또는 단순히 인덱스 레지스터) I, 변경 레지스터 M, 길이 레지스터 L, 및 엔드 레지스터 E가 있지만 그것으로 제한되지는 않는다. 주소 레지스터는 종종 이하에서 더 설명되는 데이타 주소 생성자(DAG)로 통합된다.
도 4a의 명령 포맷을 사용하는 스왑 명령의 예는 SWAP I0, I1이다.
이 명령은 인덱스 레지스터 I0의 내용이 인덱스 레지스터 I1의 내용과 스와핑되도록 요구한다.
도 4a의 명령 포맷을 사용하는 스왑 명령의 다른 예는 SWAP B0, B1이다.
이 명령은 베이스 레지스터 B0의 내용이 베이스 레지스터 B1의 내용과 스와핑되도록 요구한다.
스왑 명령의 이용도는 명령의 개수 및 주소 레지스터의 내용을 스와핑하는 데 요구되는 명령 사이클의 개수를 감소시켜, 디지털 정보 프로세서의 속도 및 성능 레벨을 증가시킨다. 스왑 명령은 또한, 임시 레지스터에 대한 요구도 감소시켜서, 차례로, 레지스터 압박을 감소시켜 과도한 레지스터 요구로 인한 지연 가능성을 줄인다(지연은 프로세서 상에서 실행하고 있는 루틴의 실행 속도와 성능 레벨을 감소시킬 수 있다는 것을 상기하자).
본 발명이 도 4a에 도시된 스왑 명령 포맷으로 제한되지 않고 다른 스왑 명령 포맷이 사용될 수 있음을 인식해야 한다.
예를 들어, 일부 실시예에서, 주소 레지스터는 명령에서 지정되지 않고, 오히려 예를 들어, op 코드에 기초하여 내재될 수 있다. 그러한 실시예에서, 디지털 정보 프로세서는 예를 들어, 스왑 명령이 공급될 때마다 특정 주소 레지스터를 자동적으로 스와핑하도록 구성될 수 있다. 대안적으로, 예를 들면, 각각 상이한 op 코드를 갖는 복수의 상이한 스왑 명령이 지원될 수 있다. 상이한 op 코드는 스와핑될 특정 주소 레지스터를 내재적으로 식별할 수 있다. 예를 들면, 명령 SWAP01은 주소 레지스터 I0의 내용이 주소 레지스터 I1의 내용과 스와핑되도록 요구할 수 있다. 명령 SWAP23은 주소 레지스터 I2의 내용이 주소 레지스터 I3의 내용과 스와핑되도록 요구할 수 있다.
일부 예에서, 단일 스왑 명령은 하나 이상의 수행될 스왑 동작을 야기한다. 추가적인 주소 레지스터는 opcode(예를 들어, 전술된 바와 같음)에 기초하여 내재될 수 있다. 대안적으로, 예를 들면, 추가적인 주소 레지스터는 공급된 오퍼랜드에 기초하여 내재될 수 있다. 예를 들어, 디지털 정보 프로세서는, 2개의 인덱스 레지스터가 스왑 명령 내의 오퍼랜드로서 공급되는 경우, 프로세서가 이 2개의 인덱스 레지스터를 스와핑하고 이 2개의 인덱스 레지스터와 관련된 베이스 레지스터도 스와핑하도록 구성될 수 있다. 예를 들어, 일 실시예에서, 스왑 명령 SAWP I0, I1은 (1)I0 레지스터의 내용이 I1 레지스터의 내용과 스와핑되고, (2)B0 레지스터 내용이 B1 레지스터 내용과 스와핑되게 할 수 있다. 하나의 그러한 실시예가 도 7b를 참조하여 이하에 설명된다.
하나 이상의 스왑 명령이 수행되게 하는 스왑 명령을 구현하는 다른 방법은 2 이상의 오퍼랜드 필드를 포함하는 명령 포맷을 제공하는 것이다. 도 4b는 2 이상의 오퍼랜드 필드를 갖는 명령 포맷(104)의 예를 도시한다. 명령 포맷(104)은 이 명령이 스왑 명령임을 나타내고 105에 도시되는 op 코드 예를 들어, SWAP을 갖는다. 명령 포맷은 내용을 스와핑시킬 주소 레지스터를 식별하고 106, 107, 108, 109에 도시되는 4개의 오퍼랜드 필드 예를 들면, 주소 레지스터 id1, 주소 레지스터 id2, 주소 레지스터 id3, 주소 레지스터 id4를 갖는다.
도 4b의 명령 포맷을 사용하는 스왑 명령의 예는 SWAP I0, I1, B0, B1이다.
이 명령은 인덱스 레지스터 I0의 내용이 인덱스 레지스터 I1의 내용과 스와핑되고, 베이스 레지스터 B0의 내용이 베이스 레지스터 B1의 내용과 스와핑되도록 요구한다.
단일 스왑 명령을 사용하여 하나 이상의 스왑 동작을 야기하는 것은 주소 레지스터의 내용을 스와핑하는 데 요구되는 사이클의 개수를 더 감소시켜, 디지털 정보 프로세서의 속도 및 성능 레벨을 증가시킨다. 일부 실시예에서, 주소 레지스터의 내용을 스와핑하는 데 요구되는 명령의 개수는 6에서 1로 감소되고, 명령 사이클의 개수는 8(또는, 그 이상)에서 1로 감소된다.
이제 스왑 명령을 실행하는 디지털 정보 프로세서가 설명된다.
도 5는 본 발명의 일 실시예에 따라 스왑 명령을 수신 및 실행하는 디지털 정보 프로세서(110) 일부의 블록도이다. 디지털 정보 프로세서(110)는 명령 디코더(112), 데이타 주소 생성기(DAG; 114), 실행 제어 유닛(116) 및 로드/저장 유닛(118)을 포함한다. DAG(114)는 데이타를 로드 및 저장하는 데 사용하기 위한 주소를 메모리 버퍼(도시되지 않음)에 제공한다. 디지털 정보 프로세서(110)는 단일 칩 집적 회로로서 구성될 수 있지만, 이 구성으로 제한되는 것은 아니다.
명령 디코더(112)로의 입력은 라인(120)으로 도시된 버스에 접속된다. 122에 도시된 신호 라인은 명령 디코더를 DAG(114)에 접속시킨다. 124에 도시된 신호 라인은 명령 디코더(112)를 실행 제어 유닛(116)에 접속시킨다. 126에 도시된 신호 라인은 DAG(114)를 로드/저장 유닛(118)에 접속시킨다. 128에 도시된 신호 라인은 로드/저장 유닛(118)을 실행 제어 유닛(116)에 접속시킨다.
동작시, 명령이 버스(120)로 {예를 들어, 명령 캐시 또는 다른 메모리(도시되지 않음)로부터} 명령 디코더(112)에 패치 및 제공된다. 명령이 DAG 명령인 경우(즉, DAG를 사용하여 수행하여야 하는 명령인 경우), 명령 디코더(112)는 디코딩된 DAG 명령 및/또는 다른 제어 신호를 출력하고, 이것은 신호 라인(122)을 통해 DAG(114)에 공급된다. 명령이 DAG 명령이 아닌 경우(즉, DAG를 사용하여 수행하여야 하는 것이 아닌 명령인 경우), 명령 디코더(112)는 디코딩된 명령 및/또는 다른 제어 신호를 출력하고, 이것은 신호 라인(124)을 통해 실행/제어 유닛(116)에 공급된다.
DAG(114)는 DAG 명령을 실행하고, 적합하다면, 메모리 버퍼에서 액세스될 데이타의 주소를 출력한다. 주소는 신호 라인(126)을 통해, 적합한 메모리 버퍼 내의 주소로부터 데이타를 로드하거나/로드하고 그 주소에 데이타를 저장하는 로드/저장 유닛(118)에 공급된다. 로드/저장 유닛(118)은 신호 라인(128)을 따라 데이타를 실행 제어 유닛(116)에 전달하거나/실행 제어 유닛으로부터 전달받는다.
다수의 상이한 유형의 DAG가 존재한다는 것을 이해해야 한다. 본 발명은 임의의 특정 유형의 DAG와 관련된 사용에 제한되지 않는다.
도 6은 DAG(도 5의 114)의 일 실시예의 블록도이다. 이 실시예는 DAG 제어 유닛(130), DAG ALU(DAG arithmetic logic unit; 132), DAG 레지스터 유닛(134)을 포함한다. DAG 레지스터 유닛(134)은 4개의 레지스터 뱅크(136-142)와 하나 이상의 스왑 유닛(144)을 갖는다. 4개의 레지스터 뱅크는 각각의 메모리 버퍼의 길이를 나타내는 데이타를 저장하기 위한 L 레지스터(136), 각각의 메모리 버퍼의 베이스 주소를 저장하기 위한 B 레지스터(138), 각각의 메모리 버퍼의 인덱스 주소를 저장하기 위한 I 레지스터(140), 증분(또는 감소) 값을 저장하기 위한 M 레지스터(142)를 포함한다. 인덱스 주소는 예를 들어, 현재 액세스되고 있는 주소, 또는 액세스될 다음 주소를 나타낸다. 스왑 유닛(144)은 일반적으로 하드웨어로 구현되며, 이하에 보다 상세히 설명된다.
DAG 제어 유닛(130)은 신호 라인(122)을 통해 명령 디코더(도 5의 112)에 접속된다. 146에 도시된 신호 라인은 DAG 제어 유닛(130)을 L, B, I, M 레지스터(136-142)에 접속시킨다. 148에 도시된 신호 라인은 DAG 제어 유닛(130)을 스왑 유닛(144)에 접속시킨다. 150에 도시된 신호 라인 및 152에 도시된 신호 라인은 DAG 레지스터 유닛(134)을 DAG ALU(132)에 접속시킨다. 일부 실시예에서, L, B, I, M 레지스터(136-142)는 또한, 주소, 및/또는 메모리로부터 로드하고/로드하거나 메모리에 저장하는 데이타 버스(도시되지 않음)에 접속할 수 있다.
동작시, DAG 제어 유닛(130)은 명령 디코더(도 5의 112)로부터 디코딩된 DAG 명령 및/또는 제어 신호를 수신한다. 그러한 명령 및/또는 제어 신호에 응답하여, DAG 제어 유닛(130)은 DAG 명령을 실행하는 데 사용되는 제어 신호를 생성한다. 하나 이상의 것에 응답하는 것을 가능하게 하기 위하여, 용어 "응답하여"는 "최소한의 응답으로"를 의미한다. 여기서 예를 들어, DAG 제어 유닛(130)은 L, B, I, M 레지스터(136-142)에 공급되는 L, B, I, M 레지스터 제어 신호를 생성한다. DAG 제어 유닛(130)은 또한, 스왑 제어 신호와 ALU 제어 신호를 생성한다. 스왑 제어 신호는 스왑 유닛(144)에 공급된다. 스왑 유닛(144)은 스왑 제어 신호에 응답하여 적합한 주소 레지스터의 내용을 스와핑한다. ALU 제어 신호는 DAG ALU(132)에 공급된다. DAG 레지스터 유닛(134)은 각각 L, B, I, M 레지스터 중 하나의 내용을 나타내는 출력 신호 L out, B out, I out, M out을 제공한다. 이 신호는 DAG ALU(132) 및 로드/저장 유닛(도 5의 118)에 공급된다. DAG ALU(132)는 새로운 주소 L in, B in, I in, M in을 생성하는 계산을 수행하고, 이것은 DAG 레지스터 유닛(134)에 공급되어 각각 L, B, I, M 레지스터(136-142) 중 하나에 저장된다.
도 7a는 레지스터 유닛(도 6의 134)의 일 실시예 일부의 블록도이다. 이 실시예에서, 레지스터 유닛은 이하에 설명되는 바와 같이, B 레지스터(138)의 내용을 스와핑할 수 있고, I 레지스터(140)의 내용을 스와핑할 수 있다.
이 실시예에서, 레지스터 유닛은 B 레지스터 뱅크(138), B 레지스터 스왑 유닛(160), I 레지스터 뱅크(140) 및 I 레지스터 스왑 유닛(162)를 포함한다. B 레지스터 뱅크(138)는 4개의 레지스터(B0-B3)를 포함한다. I 레지스터 뱅크(140)는 4개의 레지스터(I0-I3)를 포함한다. 각각의 B 레지스터와 각각의 I 레지스터는 DAG 제어 유닛(도 6)으로부터 자신의 CLK 신호(도시되지 않음)를 수신하는 CLK 입력을 갖는다.
레지스터 유닛은 또한 B out mux(166) 및 I out mux(170)를 포함한다. 이 각각은 DAG 제어 유닛(도 6)으로부터의 제어 신호(도시되지 않음)에 의해 제어된다. 신호 라인(150)을 통하여, B in 신호가 B레지스터 스왑 유닛(160)의 제1 입력 집합(in0)에 공급된다. B 레지스터 스왑 유닛(160)의 출력은 182-188에 도시된 신호 라인을 통하여 B 레지스터 뱅크(138)의 입력에 접속된다. B 레지스터 뱅크(138)의 출력은 190-196에 도시된 신호 라인을 통하여 B 레지스터 스왑 유닛(160)의 제2 입력 집합(in1), 및 B out mux(166)의 입력에 접속된다. B out mux(166)의 출력은 신호 라인(152)을 통해 B out 신호를 제공한다.
I in 신호는 신호 라인(150)을 통해 I 레지스터 스왑 유닛(162)의 제1 입력 집합(in0)에 공급된다. I 레지스터 스왑 유닛(162)의 출력은 206-212에 도시된 신호 라인을 통해 I 레지스터 뱅크(140)의 입력에 접속된다. I 레지스터 뱅크(140)의 출력은 214-220에 도시된 신호 라인을 통해 I 레지스터 스왑 유닛(162)의 제2 입력 집합(in1), 및 I out mux(170)의 입력에 접속된다. I out mux(170)의 출력은 신호 라인(152)을 통해 I out 신호를 제공한다.
B 레지스터 스왑 유닛(160)의 이 실시예는 B0/B1 스왑 유닛(222) 및 B2/B3 스왑 유닛(224)을 포함한다. I 레지스터 스왑 유닛(162)은 I0/I1 스왑 유닛(226) 및 I2/I3 스왑 유닛(228)을 포함한다. 이 4개의 스왑 유닛(222-228)은 서로 동일하다. 스왑 유닛은 신호 라인(148)을 통해 DAG 제어 유닛(도 6의 130)으로부터 스왑 제어 신호를 수신하는 셀렉트 라인을 갖는다. 예를 들어, 이 실시예에서, DAG 제어 유닛(도 6)으로부터의 스왑 제어 신호는 4개의 제어 신호 B0/B1 스왑 신호, B2/B3 스왑 신호, I0/I1 스왑 신호 및 I2/I3 스왑 신호를 포함한다. B0/B1 스왑 신호는 B0/B1 스왑 유닛(222)의 셀렉트 라인 sel에 공급된다. B2/B3 스왑 신호는 B2/B3 스왑 유닛(224)의 셀렉트 라인 sel에 공급된다. I0/I1 스왑 신호는 I0/I1 스왑 유닛(226)의 셀렉트 라인 sel에 공급된다. I2/I3 스왑 신호는 I2/I3 스왑 유닛(228)의 셀렉트 라인 sel에 공급된다.
이제 B0/B1 스왑 유닛(222)을 참조하여 스왑 유닛의 동작이 설명된다. B0/B1 스왑 유닛(222)은 2개의 동작 상태 상세하게는, 스왑 상태 및 논-스왑 상태를 갖는다. 스왑 상태에서, B0/B1 스왑 유닛(222)는 B0 레지스터의 내용이 B1 레지스터의 내용과 스와핑될 수 있게 한다. 논-스왑 상태에서, B0/B1 스왑 유닛(222)은 신호 라인(150) 상의 B in 신호와 B 레지스터(138) 사이에 투명 접속을 제공한다.
동작 상태의 선택은 B0/B1 스왑 신호의 논리 상태에 의해 제어되고, B0/B1 스왑 유닛(222)의 셀렉트 입력에 제공된다. 이 실시예에서, B0/B1 스왑 신호가 제1 논리 상태{예를 들어, 논리 하이(high) 상태 또는 "1"}를 가지면, B0/B1 스왑 유닛은 스왑 동작 상태에 있는 것이다. B0/B1 스왑 신호가 제2 논리 상태{예를 들어, 논리 로우(low) 상태 또는 "0"}를 가지면, B0/B1 스왑 유닛은 논-스왑 동작 상태에 있는 것이다.
스왑 상태에서, 스왑 유닛(222)의 mux 0은 B1 레지스터의 출력을 선택하고, 스왑 유닛(222)의 mux 1은 B0 레지스터의 출력을 선택한다. CLK 라인 상의 펄스가 제공되면, B0 레지스터는 B1 레지스터의 내용을 저장하고, B1 레지스터는 B0 레지스터의 내용을 저장한다. 즉, B0 레지스터와 B1 레지스터의 내용이 스와핑된다.
논-스왑 상태에서, 스왑 유닛(222)의 mux 0은 신호 라인(150) 상의 B in 신호를 선택하고, 스왑 유닛(222)의 mux 1은 신호 라인(150) 상의 B in 신호를 선택한다. B0 레지스터 또는 B1 레지스터에 CLK 라인 상의 펄스가 제공되면, 펄스가 제공된 레지스터는 신호 라인(150) 상의 B in 신호에 의해 제공된 주소를 저장한다.
다른 스왑 유닛(223-228)은 B0/B1 스왑 유닛(222)과 유사하게 동작한다. 따라서, B2/B3 스왑 유닛(224)은 B2 레지스터의 내용이 B3 레지스터의 내용과 스와핑될 수 있게 한다. I0/I1 스왑 유닛(226)은 I0 레지스터의 내용이 I1 레지스터의 내용과 스와핑될 수 있게 한다. I2/I3 스왑 유닛(228)은 I2 레지스터의 내용이 I3레지스터의 내용과 스와핑될 수 있게 한다.
상술한 바와 같이, 일부 실시예에서, 단일 스왑 명령은 하나 이상의 스왑 동작이 수행되게 한다. 일부 실시예에서, 이것은 (예를 들어, 도 4b에서와 같이) 추가적인 오퍼랜드 필드를 포함하는 스왑 명령을 제공함으로써 수행된다. 다른 실시예에서는, 추가적인 주소 레지스터가 포함될 수 있다.
예를 들어, 일 실시예에서, 스왑 명령 SWAP I0, I1은 I0 레지스터의 내용이 I1 레지스터의 내용과 스와핑되게 하고, B0 레지스터의 내용이 B1 레지스터의 내용과 스와핑되게 한다. 이것은, 스왑 명령 SWAP I0, I1이 DAG 제어 유닛(130)이 I0/I1 스왑 신호와 B0/B1 스왑 신호 모두를 주장하게 하도록, DAG 제어 유닛(130)을 형성함으로써 구현될 수 있다. 마찬가지로, 스왑 명령 SWAP I2, I3는 I2 레지스터의 내용이 I3 레지스터의 내용과 스와핑되게 할 수 있고, B2 레지스터의 내용이 B3 레지스터의 내용과 스와핑되게 할 수 있다. 이것은, 스왑 명령 SWAP I2, I3이 DAG 제어 유닛(130)이 I2/I3 스왑 신호와 B2/B3 스왑 신호 모두를 주장하게 하도록, DAG 제어 유닛(130)을 형성함으로써 구현될 수 있다. 이것은 도 7a의 실시예에서 적합한 제어 신호를 주장함으로써 구현될 수 있다.
도 7b는 이러한 실시예의 다른 구현을 도시한다. 이 구현은, 도 7b의 구현에서, DAG 제어 유닛(도 8의 130)으로부터의 신호 라인(148) 상의 스왑 제어 신호가 2개의 제어 신호, I0/I1/B0/B1 스왑 신호와 I2/I3/B2/B3 스왑 신호를 포함한다는 점을 제외하고는, 도 7a의 구현과 동일하다. I0/I1/B0/B1 스왑 신호는 B0/B1 스왑 유닛(222)의 셀렉트 라인, 및 I0/I1 스왑 유닛(226)의 셀렉트 라인에 공급된다. I2/I3/B2/B3 스왑 신호는 B2/B3 스왑 유닛(224)의 셀렉트 라인, 및 I2/I3 스왑 유닛(228)의 셀렉트 라인에 공급된다.
상술한 바와 같이, 스왑 명령을 실행하는 능력을 제공하는 것은 주소 레지스터의 내용을 스와핑하는 데 필요한 명령 사이클 수를 감소시켜, 디지털 정보 프로세서의 속도 및 성능 레벨을 증가시킨다(데이타 종속성 및 웨이트 사이클은 프로세서 상에서 실행하고 있는 루틴의 실행 속도 및 성능 레벨을 감소시킬 수 있음을 상기하자). 이러한 능력을 제공하는 것은 또한, 임시 레지스터에 대한 요구를 감소시키는데, 이것은 차례로, 레지스터 압박을 감소시켜 과도한 레지스터 요구로 인한 지연 가능성을 감소시킨다(지연은 프로세서 상에서 실행하고 있는 루틴의 실행 속도 및 성능 레벨을 감소시킬 수 있음을 상기하자).
스왑 명령 및 DAG에 대하여는 기술되었고, 이제, 파이프라인을 갖는 디지털 정보 프로세서에서 스왑 명령을 구현하는 것과 관련된 사항이 기술된다.
도 7a 및 7b가 스왑 유닛을 갖는 DAG 레지스터 유닛의 다양한 실시예를 도시하고 있음을 인지해야 한다. 그러나, DAG 레지스터 유닛 및 스왑 유닛(들)은 도시된 구현예로 제한되지 않는다. 예를 들어, 스왑 유닛은 다수의 방법으로 구현될 수 있다. 멀티플렉서를 사용하는 것은 한가지 방법일 뿐이다. 예를 들어, 멀티플렉서는 각각의 트라이-상태(tri-state) 드라이버가 상이한 인에이블 신호를 수신하는 트라이-상태 드라이버의 그룹에 의해 대체될 수 있다. 트라이-상태 드라이버에 대한 인에이블은 예를 들어, 스왑 제어 신호에 기초할 수 있다. 멀티플렉서는 조합 논리에 의해서도 대체될 수 있다. 따라서, 예를 들면, 본 발명은 스왑이 수행되는 방법에 제한되지 않는다.
도 8은 파이프라인(240)의 일 실시예를 도시한다. 이 파이프라인(240)은 일련의 스테이지 예를 들어, 도시된 7개의 스테이지 IF1, IF2, DC, AC, LS, EX1, WB를 갖는다. 파이프라인(240)은 각각의 주소 레지스터의 2개 버전(예를 들어, 2개의 L 레지스터, 2개의 B 레지스터, 2개의 I 레지스터 및 2개의 M 레지스터)을 포함하는 DAG와 관련하여 동작한다. 각각의 레지스터의 한 버전은 여기에서 242에 도시된 미래 파일로서 집합적으로 나타난다. 각각의 레지스터의 다른 한 버전은 여기에서 244에 도시된 아키텍처 파일로서 집합적으로 나타난다. 미래 파일(242) 및 아키텍처 파일(244)은 DAG 파이프라인(246)에 의해 접속된다. 이하에서 보다 상세히 설명되는 바와 같이, 미래 파일(242)은 메모리 버퍼에 액세스하는 데 사용되는 주소를 생성 및 변경하는 과정에서 판독 및 업데이트된다. 미래 파일(242)은 주소 레지스터의 이론적인 상태를 도시한다. 한편, 아키텍처 파일(244)은 명령이 실행을 완료할 때 그 명령에 따라 업데이트된다. 각각의 주소 레지스터의 2개 버전을 사용하는 것은 하드웨어가 잘못된 예측이 일어난 경우에만 처리량을 감소시키면서 명령을 이론적으로 실행할 수 있게 한다.
명령은 파이프라인(240)에 삽입되고 명령의 실행이 완료될 때까지 파이프라인 스테이지를 통해 처리된다. 더 상세하게는, 248에 도시된 명령은 IF1 스테이지에서 패치된다. IF2 스테이지에서, 명령(248)은 디코딩되고(250) DAG 명령 또는 논-DAG 명령으로서 식별된다. 명령(248)이 DAG 명령(252)이면, DC 스테이지에서, 미래 파일(242)의 I 레지스터와 M 레지스터가 판독된다(254에 도시되어 있음).
AC 스테이지에서, DAG는 로드/저장 유닛(260)에 공급될 주소(256)를 생성한다. 예를 들어, 도 4 내지 7b를 참조하여 상술한 바와 같이, DAG 스왑 명령이 실행된다. LS 스테이지에서, DAG에 의해 생성된 주소는 그에 응답하여 데이타를 로드하는 로드/저장 유닛(260)에 공급(258)된다. DAG에 의해 생성된 주소는 미래 파일(242)에 저장된다. 또한, DAG 정보는 도 9를 참조하여 설명되는 바와 같이, DAG 정보를 아키텍처 파일(244)에 송신하는 데 사용되는 DAG 파이프라인(246)에 입력된다.
ALU 연산(262)은 EX 스테이지(또는 EX 스테이지들)에서 수행된다. WB 스테이지에서는, ALU 연산으로부터의 결과가 저장(264)되어, 명령의 실행을 완료한다. 완료시, DAG 파이프라인으로부터의 정보는 아키텍처 파일(244)을 업데이트하는 데 사용된다. 이러한 방식으로, 아키텍처 파일(244)은 파이프라인(240)을 빠져나온 최근의 명령에 따라 주소 레지스터의 스테이지를 나타내지만, 현재 파이프라인(240) 내의 명령의 결과를 나타내지는 않는다.
일부 실시예에서, DAG는 임의의 주어진 명령 사이클에서 2개까지의 새로운 주소를 생성한다. 새로운 주소 양자 모두는 아키텍처 파일에 전달되고, 결과적으로 DAG 파이프라인 주소 버스는 한번에 2개의 주소를 전달하기에 충분히 넓다.
스왑 명령이 임의의 주어진 명령 사이클에서 2개 이상의 주소 레지스터를 변경하지 않는다면 2-주소 폭 버스는 스왑 주소의 결과를 전달하기에 충분히 넓다는 것을 인지해야 한다. 그러나, 스왑 명령이 임의의 주어진 명령 사이클에서 하나 이상의 스왑 동작(즉, 2개 이상의 주소 레지스터의 내용을 스왑핑하는 것)을 야기하면 상황이 복잡해진다. 예를 들어, 도 7b를 참조하여 상술된 스왑 명령은 I0 레지스터의 내용이 I1 레지스터의 내용과 스와핑되게 하고, B0 레지스터의 내용이 B1 레지스터의 내용과 스와핑되게 한다. 그러한 스왑 명령은 단일 명령 사이클에서 4개의 주소 레지스터(I0, I1, B0, 및 B1)의 내용을 변경한다.
2-주소-폭 주소 버스는 한번에 4개의 주소를 전달하기에 충분히 넓지 않다. 한번에 4개의 주소를 전달하기 위하여는, 주소 버스의 폭이 두 배가 되어야 한다(즉, 2개의 주소의 폭에서 4개의 주소의 폭으로 되어야 함). 주소 버스의 폭을 두 배로 하는 것은 DAG 파이프라인에 요구되는 레지스터의 수를 두 배로 하는 것이며, 그에 따라 결과적으로 칩 영역 및 전력 소모를 증가시키는 것이다.
도 9는 스왑 명령이 명령 사이클에서 하나의 이상의 스왑 동작을 야기하는 상황을 처리하는 데 적응된 DAG의 일 실시예를 도시한다. 이 실시예에서, 이러한 스왑 명령의 결과는 DAG 파이프라인을 통해 전달되지 않는다. 오히려, 2개의 스왑 유닛이 사용되고, 하나의 스왑 유닛은 파이프라인에서 다른 스왑 유닛의 다운스트림이다. 스왑 명령이 수신되면, 업스트림 스왑 유닛은 미래 파일 상에서 스왑 동작을 실행한다. (4개의 새로운 주소가 아닌) 제어 신호가 생성되어 파이프라인을 통해 다운스트림 스왑 유닛으로 전달되며, 스왑 유닛은 차례로, 아키텍처 파일 상에서 스왑 동작을 실행한다. 전체적인 결과는 4개의 새로운 주소가 파이프라인을 통해 전달된 것과 동일하지만, 두 배 크기의 주소 버스를 필요로하지 않는다.
이 실시예에서, DAG는 업스트림 부분(270), DAG 파이프라인(272), 다운스트림 부분(274)을 포함한다. 업스트림 부분(270)은 DAG 제어 유닛(276), DAGALU(278), 및 L, B, I, M 레지스터(282)(즉, 미래 파일)와 하나 이상의 스왑 유닛(284)을 포함하는 레지스터 유닛(280)을 포함한다. DAG 제어 유닛(276), DAG ALU(278), 레지스터 유닛(280)은 각각 예를 들어, 도 5 내지 7b를 참조하여 상술된 DAG 제어 유닛(130), DAG ALU(132) 및 레지스터 유닛(134)과 유사할 수 있다.
업스트림 부분은 285에 도시된 신호 라인에 의해 공급된 DAG 명령을 수신한다. DAG ALU(278)는 새로운 주소를 생성하는 계산을 수행하고, 스왑 유닛(들)(284)은 적합한 주소 레지스터의 내용을 스와핑한다. DAG 제어 유닛(276) 및 스왑 유닛(들)(284)은, 단일 스왑 명령이 단일 명령 사이클에서 하나 이상의 스왑 동작이 수행되게 하도록 구성된다. 이러한 구성은 스왑 명령이 단일 명령 사이클에서 4개의(또는 그 이상의) 주소 레지스터의 내용을 변경할 수 있다는 것을 의미한다.
다운스트림 부분(274)은 제어 유닛(286) 및 L, B, I, M 레지스터(290)(즉, 아키텍처 파일)와 하나 이상의 스왑 유닛(292)을 포함하는 레지스터 유닛(288)을 포함한다. 레지스터 유닛(288)은 예를 들어 도 6 내지 7b를 참조하여 상술된 레지스터 유닛(134)과 유사할 수 있다. 이하에 상세히 설명되는 바와 같이, DAG의 다운스트림 부분(274)의 레지스터 유닛(288)에서 하나 이상의 스왑 유닛(292)을 제공하는 것은 스왑 명령의 결과를 DAG의 다운스트림 부분(274)에 전달하는 것을 불필요하게 한다.
DAG 파이프라인(272)은 업스트림 부분(270)을 다운스트림 부분(274)에 접속시킨다. 이 실시예에서, 파이프라인(272)은 제1, 제2 및 제3 파이프라인화된 데이타 경로(294 내지 298)를 포함한다. 파이프라인화된 경로(294 내지 298) 각각은 일련의 파이프라인화된 레지스터 스테이지를 포함한다. 즉, 제1 파이프라인화된 데이타 경로는 파이프라인화된 레지스터 스테이지(2941내지 294N)를 포함한다. 제2 파이프라인화된 데이타 경로는 파이프라인화된 레지스터 스테이지(2961내지 296N)를 포함한다. 제3 파이프라인화된 데이타 경로는 파이프라인화된 레지스터 스테이지(2981내지 298N)를 포함한다.
업스트림 부분(270)에서 다운스트림 부분(274)으로 결과를 송신하는 파이프라인을 제공함으로써, 시스템 설계자는 다운스트림 부분(274)의 복잡도를 감소시킬 수 있다. 예를 들어, DAG의 업스트림 부분(270)과는 달리, DAG의 다운스트림 부분(274)은 DAG 명령을 수신하고 DAG 명령에 응답할 수 있는 제어 유닛을 요구하지 않는다. 새로운 주소를 생성하는 계산을 수행하는 ALU도 요구하지 않는다.
제1 데이타 경로(294) 및 제2 데이타 경로(296)는 각각 DAG ALU(278)에 의해 생성된 주소를 전달하는 데 사용된다. 따라서, 제1 데이타 경로(294) 내의 레지스터 스테이지(2941내지 294N), 및 제2 데이타 경로 내의 레지스터 스테이지(2961내지 296N)는 일반적으로 적어도 DAG 주소 레지스터의 폭만큼 넓다. DAG의 다운스트림 부분(274) 내의 제어 유닛이 제1 및/또는 제2 데이타 경로(294, 296)로부터 주소를 수신하면, 그 주소는 아키텍처 파일(290) 내의 적합한 주소 레지스터로 복사된다.
제3 데이타 경로(298)는 스왑 명령과 관련된 정보를 전달하는 데 사용된다. 상술된 바와 같이, DAG의 업스트림 부분(270) 및 DAG의 다운스트림 부분(274) 각각은 하나 이상의 스왑 유닛을 갖기 때문에, 스왑 명령의 결과를 DAG의 다운스트림 부분(274)에 파이프라이닝할 필요가 없다. 따라서, 제3 데이타 경로(298) 내의 레지스터 스테이지(2981내지 298N)는 제1 및 제2 데이타 경로(294, 296)의 레지스터 스테이지(2941내지 294N, 2961내지 296N) 만큼 넓을 필요가 없다. 일부 실시예에서, 제3 데이타 경로(298)는 단지 DAG의 업스트림 부분(270)이 스왑 명령을 수신하였는 지를 나타내는 신호를 전달한다. 다른 실시예에서, 제3 데이타 경로(298)는 내용을 스와필시킬 주소 레지스터를 나타내는 신호를 전달하는 데 사용될 수 있다. DAG의 다운스트림 부분(274)이 제3 데이타 경로(298)로부터 신호(들)를 수신할 때, 제어 유닛(286)은 레지스터 유닛의 적합한 레지스터의 내용이 스와핑되게 하기 위하여 다운스트림 부분(274) 내의 레지스터 유닛(288)에 제어 신호를 제공한다.
따라서, DAG의 다운스트림 부분의 레지스터 유닛에 하나 이상의 스왑 유닛을 제공하는 것은 스왑 명령의 결과를 DAG의 다운스트림 부분에 전달할 필요를 제거하는 것을 돕는다. 이것은 차례로, 한번에 4개의 주소를 파이프라이닝할 필요 없이, 2개의 베이스 레지스터와 2개의 인덱스 레지스터의 내용을 스와핑하는 스왑 명령을 구현하는 것을 가능하게 한다. 실제로, 이 실시예에서는, 스왑 명령과 관련된 임의의 주소를 전달할 필요가 없기 때문에, 심지어 제1 또는 제2 데이타 경로(294, 296)를 사용할 필요없이, 아키텍처 파일 상에서 그 스왑 명령이 구현된다. 한번에4개의 주소를 파이프라이닝하기 위해서는 2개의 추가적인 데이타 경로가 요구되고 , 이것은 데이타 정보 프로세서의 비용, 크기 및/또는 전력 소모를 증가시킴을 유념한다.
본 발명의 양태는 스왑 명령으로 한정되지 않고, 오히려 일반적으로 파이프라인화된 데이타 프로세서에 특히, 동작 결과가 파이프라인 내의 하나 이상의 스테이지를 필요로하는 상황에 적용될 수 있다는 것이 인식되었다. 예를 들어, 하나의 스테이지에서 동작을 수행하고 그 결과를 연속적인 스테이지(들)에 파이프라이닝하는 것보다, 파이프라인 내의 하나 이상의 스테이지에서 실제로 동작을 수행하는 능력이 제공된다. 이것은 이 각각의 스테이지에서 오퍼레이터(즉, 실행 유닛)를 제공함으로써 성취될 수 있다. 이후에는, (완전한 결과를 제외하고) 제어 신호만이 이 스테이지들에 제공될 필요가 있으며, 이 제어 신호는 이 스테이지들 각각의 오퍼레이터에게 동작을 수행하도록 지시한다.
상술된 데이타 주소 생성기는 제어 유닛, ALU 및 4 뱅크의 주소 레지스터를 갖는 레지스터 유닛을 포함하지만, 데이타 주소 생성기가 이 구성에 제한되지 않음을 유념해야한다. 데이타 주소 생성기는 주소 레지스터에 저장된 주소를 생성하고 주소 레지스터의 내용을 변경할 수 있기만 하면 된다. 또한, 본 발명이 데이타 주소 생성기와 관련된 사용에 제한되지 않음을 이해해야한다.
지금까지 다양한 실시예를 보이고 설명하였지만, 본 분야에 숙련된 기술자들은, 본 발명이 이러한 실시예에 제한되지 않으며 이 실시예들은 단지 예로써 나타낸 것이고, 본 발명의 취지 및 범주를 벗어나지 않고 다양한 변경 및 수정을 행할수 있음을 이해할 것이다. 따라서, 본 발명은 첨부된 청구항 및 그 동등물에 의해서만 제한된다.

Claims (25)

  1. 제1 주소를 저장하기 위한 제1 주소 레지스터, 및 제2 주소를 저장하기 위한 제2 주소 레지스터를 구비한 디지털 정보 프로세서의 사용 방법에 있어서,
    상기 제1 주소 레지스터와 상기 제2 주소 레지스터들의 내용을 스와핑함으로써, 명백하게 또는 내재적으로 식별되는 적어도 2개의 주소 레지스터에 대한 스왑(swap) 동작을 지정하는 스왑 명령에 응답하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 응답하는 단계는
    상기 스왑 명령을 디코딩하고 스왑 명령을 나타내는 신호를 생성하는 단계; 및
    상기 제1 주소 레지스터와 상기 제2 주소 레지스터들의 내용을 스와핑함으로써, 스왑 명령을 나타내는 상기 신호에 응답하는 단계
    를 포함하는 방법.
  3. 제2항에 있어서,
    상기 신호에 응답하는 단계는
    상기 제1 주소 레지스터로부터의 상기 제1 주소를 상기 제2 주소 레지스터에공급하는 단계; 및
    상기 제2 주소 레지스터로부터의 상기 제2 주소를 상기 제1 주소 레지스터에 공급하는 단계
    를 포함하는 방법.
  4. 제2항에 있어서,
    상기 신호에 응답하는 단계는
    스왑 명령을 나타내는 상기 신호를 수신하고 적어도 그것에 응답하여 제어 신호들을 생성하는 단계;
    상기 제어 신호들 중 하나 이상에 응답하여, 상기 제1 주소 레지스터로부터의 상기 제1 주소를 상기 제2 주소 레지스터에 공급하는 단계;
    상기 제어 신호들 중 하나 이상에 응답하여, 상기 제2 주소 레지스터로부터의 상기 제2 주소를 상기 제1 주소 레지스터에 공급하는 단계; 및
    상기 제1 주소를 상기 제2 주소 레지스터에 저장하고, 상기 제2 주소를 상기 제1 주소 레지스터에 저장하는 단계
    를 포함하는 방법.
  5. 제1항에 있어서,
    상기 제1 주소 레지스터는 제1 메모리 버퍼와 관련되고, 상기 제2 주소 레지스터는 제2 메모리 버퍼와 관련되는 방법.
  6. 제1항에 있어서,
    상기 스왑 명령은 상기 스왑 동작을 식별하는 op 코드, 상기 제1 주소 레지스터를 식별하는 제1 오퍼랜드, 및 상기 제2 주소 레지스터를 식별하는 제2 오퍼랜드를 포함하는 방법.
  7. 제5항에 있어서,
    상기 제1 주소 레지스터 및 상기 제2 주소 레지스터는 각각, 상기 제1 메모리 버퍼에 대한 베이스 레지스터, 및 상기 제2 메모리 버퍼에 대한 베이스 레지스터를 포함하는 방법.
  8. 제5항에 있어서,
    상기 제1 주소 레지스터 및 상기 제2 주소 레지스터는 각각, 상기 제1 메모리 버퍼에 대한 인덱스 레지스터, 및 상기 제2 메모리 버퍼에 대한 인덱스 레지스터를 포함하는 방법.
  9. 제8항에 있어서,
    상기 스왑 명령에 응답하는 단계는
    상기 제1 메모리 버퍼에 대한 베이스 레지스터와 상기 제2 메모리 버퍼에 대한 베이스 레지스터의 내용을 스와핑하는 단계
    를 더 포함하는 방법.
  10. 제1 주소를 저장하기 위한 제1 주소 레지스터;
    제2 주소를 저장하기 위한 제2 주소 레지스터; 및
    명백하게 또는 내재적으로 식별되는 적어도 2개의 주소 레지스터에 대한 스왑 동작을 지정하는 스왑 명령을 수신하고, 상기 스왑 명령에 응답하여, 상기 제1 주소 레지스터의 내용을 상기 제2 주소 레지스터의 내용과 스와핑하는 회로
    를 포함하는 디지털 정보 프로세서.
  11. 제10항에 있어서,
    상기 회로는
    명령을 수신 및 디코딩하고 스왑 명령을 나타내는 신호를 생성하기 위한 명령 디코더; 및
    스왑 명령을 나타내는 상기 신호에 응답하여, 상기 제1 주소 레지스터와 상기 제2 주소 레지스터의 내용을 스와핑하기 위한 데이타 주소 생성기
    를 포함하는 디지털 정보 프로세서.
  12. 제11항에 있어서,
    상기 데이타 주소 생성기는, 상기 제1 주소 레지스터로부터의 상기 제1 주소를 상기 제2 주소 레지스터에 공급하고 상기 제2 주소 레지스터로부터의 상기 제2주소를 상기 제1 주소 레지스터에 공급하기 위한 스왑 유닛을 포함하는 디지털 정보 프로세서.
  13. 제11항에 있어서,
    상기 데이타 주소 생성기는
    스왑 명령을 나타내는 상기 신호를 수신하고 적어도 그에 응답하여 제어 신호들을 생성하는 제어 유닛; 및
    상기 제1 주소 레지스터로부터 상기 제1 주소를 수신하고, 상기 제2 주소 레지스터로부터 상기 제2 주소를 수신하고, 상기 제어 신호들 중 하나 이상에 응답하여, 상기 제1 주소를 상기 제2 주소 레지스터에 공급하고 상기 제2 주소를 상기 제1 주소 레지스터에 공급하는 레지스터 스왑 유닛
    을 포함하고,
    상기 제1 주소는 상기 제2 주소 레지스터에 저장되고 상기 제2 주소는 상기 제1 주소 레지스터에 저장되는 디지털 정보 프로세서.
  14. 제10항에 있어서,
    상기 제1 주소 레지스터는 제1 메모리 버퍼와 관련되고, 상기 제2 주소 레지스터는 제2 메모리 버퍼와 관련되는 디지털 정보 프로세서.
  15. 제10항에 있어서,
    상기 스왑 명령은 상기 스왑 동작을 식별하는 op 코드, 상기 제1 주소 레지스터를 식별하는 제1 오퍼랜드, 및 상기 제2 주소 레지스터를 식별하는 제2 오퍼랜드를 포함하는 디지털 정보 프로세서.
  16. 제10항에 있어서,
    상기 제1 주소 레지스터로부터의 주소와 상기 제2 주소 레지스터로부터의 주소 각각은 로드/저장 유닛에 공급되는 디지털 정보 프로세서.
  17. 제14항에 있어서,
    상기 제1 주소 레지스터 및 상기 제2 주소 레지스터는 각각 상기 제1 메모리 버퍼에 대한 베이스 레지스터, 및 상기 제2 메모리 버퍼에 대한 베이스 레지스터를 포함하는 디지털 정보 프로세서.
  18. 제14항에 있어서,
    상기 제1 주소 레지스터 및 상기 제2 주소 레지스터는 각각 상기 제1 메모리 버퍼에 대한 인덱스 레지스터, 및 상기 제2 메모리 버퍼에 대한 인덱스 레지스터를 포함하는 디지털 정보 프로세서.
  19. 제18항에 있어서,
    또한, 상기 디지털 정보 프로세서는 상기 스왑 명령에 응답하여 상기 제1 메모리 버퍼에 대한 베이스 레지스터와 상기 제2 메모리 버퍼에 대한 베이스 레지스터의 내용을 스와핑하는 디지털 정보 프로세서.
  20. 제1 주소를 저장하기 위한 제1 주소 레지스터;
    제2 주소를 저장하기 위한 제2 주소 레지스터; 및
    명백하게 또는 내재적으로 식별되는 적어도 2개의 주소 레지스터에 대한 스왑 동작을 지정하는 스왑 명령에 응답하여, 상기 제1 주소 레지스터와 상기 제2 주소 레지스터의 내용을 스와핑하는 수단
    을 포함하는 디지털 정보 프로세서.
  21. 제1 순환 버퍼 내의 한 위치에 대응하는 제1 주소를 포함하는 제1 주소 레지스터;
    제2 순환 버퍼 내의 한 위치에 대응하는 제2 주소를 포함하는 제2 주소 레지스터; 및
    스왑 명령을 나타내는 신호를 수신하고, 상기 신호에 응답하여 상기 제1 주소 레지스터와 상기 제2 주소 레지스터의 내용을 스와핑하는 회로
    를 포함하는 데이타 주소 생성기.
  22. 제21항에 있어서,
    상기 회로는, 제1 인덱스 레지스터로부터 상기 제1 주소를 수신하고, 제2 인덱스 레지스터로부터 상기 제2 주소를 수신하고, 상기 제1 주소를 상기 제2 인덱스 레지스터에 공급하고, 상기 제2 주소를 상기 제1 인덱스 레지스터에 공급하는 스왑 유닛을 포함하는 데이타 주소 생성기.
  23. 제21항에 있어서,
    순환 버퍼 그룹 - 순환 버퍼 각각은 메모리에서 베이스 주소와, 상기 베이스 주소와 길이의 합과 동일한 엔드 주소(end address)에 의해 정의되는 경계들 사이에 확장함 - 내에 타겟 주소를 생성하기 위한 장치를 더 포함하고, 상기 장치는 상기 버퍼 I와 지정된 오프셋 M 내에서 액세스된 이전 주소에 응답하며, 상기 장치는
    상기 버퍼 I 내에서 액세스된 상기 이전 주소를 저장하기 위한 레지스터;
    메모리에서 상기 순환 버퍼의 위치 및 크기를 정의하는 정보를 저장하기 위한 레지스터 집합; 및
    I+M 값을 계산함으로써 증가된 주소를 생성하고, 상기 버퍼의 길이에 의해 상기 I+M 값을 변경함으로써 주소를 생성하고, 증가된 주소와 상기 순환 버퍼의 경계 내인 래핑된 주소 중 하나를 제공하기 위한 산술 논리 장치(ALU)
    를 포함하는 데이타 주소 생성기.
  24. 미래 파일 및 아키텍처 파일 - 상기 미래 파일은 상기 아키텍처 파일에 비해 업스트림으로서, 제1 주소 레지스터 및 제2 주소 레지스터를 포함하고, 상기 아키텍처 파일은 제1 주소 레지스터 및 제2 주소 레지스터를 포함함 - 을 구비한 파이프라인을 포함하는 디지털 정보 프로세서의 사용 방법에 있어서,
    스왑 명령에 응답하여, 상기 미래 파일 내의 상기 제1 주소 레지스터와 상기 제2 주소 레지스터의 내용을 스와핑하는 단계;
    상기 스왑 명령에 응답하여, 하나 이상의 제어 신호를 생성하고 그것을 상기 미래 파일로부터 상기 아키텍처 파일로 송신하는 단계; 및
    상기 하나 이상의 제어 신호에 응답하여, 상기 아키텍처 파일 내의 상기 제1 주소 레지스터와 상기 제2 주소 레지스터의 내용을 스와핑하는 단계
    를 포함하는 방법.
  25. 제1 파이프라인 스테이지와 제2 파이프라인 스테이지 - 상기 제1 파이프라인 스테이지는 상기 제2 파이프라인 스테이지에 비해 업스트림이고, 상기 제1 파이프라인 스테이지 및 상기 제2 파이프라인 스테이지 각각은 동작을 수행할 수 있음 - 를 구비하는 파이프라인을 포함하는 디지털 정보 프로세서의 사용 방법에 있어서,
    명령의 수신에 응답하여, 상기 제1 파이프라인 스테이지에서 상기 동작을 수행하는 단계;
    상기 명령에 응답하여, 하나 이상의 제어 신호를 생성하고 그것을 상기 제1 파이프라인 스테이지로부터 상기 제2 파이프라인 스테이지로 송신하는 단계; 및
    상기 하나 이상의 제어 신호의 하나 이상에 응답하여, 상기 제2 파이프라인 스테이지에서 상기 동작을 수행하는 단계
    를 포함하는 방법.
KR1020047017432A 2002-05-01 2003-04-30 주소 레지스터의 내용을 스와핑하기 위한 방법 및 장치 KR100974401B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/136,051 2002-05-01
US10/136,051 US6670895B2 (en) 2002-05-01 2002-05-01 Method and apparatus for swapping the contents of address registers
PCT/US2003/013423 WO2003093978A2 (en) 2002-05-01 2003-04-30 Method and apparatus for swapping the contents of address registers

Publications (2)

Publication Number Publication Date
KR20040111559A true KR20040111559A (ko) 2004-12-31
KR100974401B1 KR100974401B1 (ko) 2010-08-05

Family

ID=29268868

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020047017432A KR100974401B1 (ko) 2002-05-01 2003-04-30 주소 레지스터의 내용을 스와핑하기 위한 방법 및 장치

Country Status (7)

Country Link
US (1) US6670895B2 (ko)
EP (1) EP1499956B1 (ko)
JP (1) JP4110137B2 (ko)
KR (1) KR100974401B1 (ko)
CN (1) CN1329819C (ko)
DE (1) DE60328179D1 (ko)
WO (1) WO2003093978A2 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050251662A1 (en) * 2004-04-22 2005-11-10 Samra Nicholas G Secondary register file mechanism for virtual multithreading
US7873961B2 (en) * 2005-07-29 2011-01-18 International Business Machines Corporation Supervisory operating system for running multiple child operating systems simultaneously and optimizing resource usage
US8250440B2 (en) * 2008-02-25 2012-08-21 International Business Machines Corporation Address generation checking
US8661227B2 (en) * 2010-09-17 2014-02-25 International Business Machines Corporation Multi-level register file supporting multiple threads
US8656139B2 (en) * 2011-03-11 2014-02-18 Telefonaktiebolaget L M Ericsson (Publ) Digital processor for processing long and short pointers and converting each between a common format
US9395992B2 (en) * 2012-11-19 2016-07-19 International Business Machines Corporation Instruction swap for patching problematic instructions in a microprocessor
CN108986022A (zh) 2017-10-30 2018-12-11 上海寒武纪信息科技有限公司 图像美化方法及相关产品
US11990137B2 (en) 2018-09-13 2024-05-21 Shanghai Cambricon Information Technology Co., Ltd. Image retouching method and terminal device
KR102225838B1 (ko) * 2018-12-20 2021-03-09 한양대학교 에리카산학협력단 안드로이드 앱 보호를 위한 안티 에뮬레이션 방법 및 장치

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2229832B (en) * 1989-03-30 1993-04-07 Intel Corp Byte swap instruction for memory format conversion within a microprocessor
US5623621A (en) * 1990-11-02 1997-04-22 Analog Devices, Inc. Apparatus for generating target addresses within a circular buffer including a register for storing position and size of the circular buffer
JP3187539B2 (ja) * 1992-07-28 2001-07-11 株式会社東芝 データ転送装置
US5367650A (en) * 1992-07-31 1994-11-22 Intel Corporation Method and apparauts for parallel exchange operation in a pipelined processor
US5535365A (en) * 1993-10-22 1996-07-09 Cray Research, Inc. Method and apparatus for locking shared memory locations in multiprocessing systems
JPH09305401A (ja) * 1996-05-13 1997-11-28 Mitsubishi Electric Corp コンピュータ及びコンパイラ
WO1997044739A1 (en) * 1996-05-23 1997-11-27 Advanced Micro Devices, Inc. Apparatus for converting data between different endian formats and system and method employing same
US6128710A (en) * 1997-05-28 2000-10-03 International Business Machines Corporation Method utilizing a set of blocking-symbol resource-manipulation instructions for protecting the integrity of data in noncontiguous data objects of resources in a shared memory of a multiple processor computer system
US5913047A (en) * 1997-10-29 1999-06-15 Advanced Micro Devices, Inc. Pairing floating point exchange instruction with another floating point instruction to reduce dispatch latency
US6145075A (en) * 1998-02-06 2000-11-07 Ip-First, L.L.C. Apparatus and method for executing a single-cycle exchange instruction to exchange contents of two locations in a register file
US5919060A (en) * 1998-07-07 1999-07-06 Lee; Chiu-Shan Safety electric socket adapter
US6205548B1 (en) * 1998-07-31 2001-03-20 Intel Corporation Methods and apparatus for updating a nonvolatile memory
US6272512B1 (en) * 1998-10-12 2001-08-07 Intel Corporation Data manipulation instruction for enhancing value and efficiency of complex arithmetic
US6584514B1 (en) * 1999-09-28 2003-06-24 Texas Instruments Incorporated Apparatus and method for address modification in a direct memory access controller
JP3935678B2 (ja) * 2001-01-31 2007-06-27 富士通株式会社 Simd積和演算方法、積和演算回路、および、半導体集積回路装置
TW513859B (en) * 2001-04-19 2002-12-11 Faraday Tech Corp Modulo address generator circuit

Also Published As

Publication number Publication date
US6670895B2 (en) 2003-12-30
EP1499956A2 (en) 2005-01-26
EP1499956B1 (en) 2009-07-01
JP2005524169A (ja) 2005-08-11
DE60328179D1 (de) 2009-08-13
KR100974401B1 (ko) 2010-08-05
CN1650257A (zh) 2005-08-03
US20030208664A1 (en) 2003-11-06
WO2003093978A2 (en) 2003-11-13
WO2003093978A3 (en) 2004-02-19
JP4110137B2 (ja) 2008-07-02
CN1329819C (zh) 2007-08-01

Similar Documents

Publication Publication Date Title
EP0368332B1 (en) Pipeline data processor
JP3842474B2 (ja) データ処理装置
JP3919802B2 (ja) プロセッサ、およびプロセッサにおいて命令演算をスケジューリングするための方法
US6260134B1 (en) Fixed shift amount variable length instruction stream pre-decoding for start byte determination based on prefix indicating length vector presuming potential start byte
JPH09311786A (ja) データ処理装置
US20140181466A1 (en) Processors having fully-connected interconnects shared by vector conflict instructions and permute instructions
KR100875377B1 (ko) 처리 시스템에서 스택 팝 및 푸쉬 동작들을 수행하는 장치 및 방법
JPH04309131A (ja) 命令群用マイクロコード生成装置及びコンピュータにおける組合せ装置
CN108319559B (zh) 用于控制矢量内存存取的数据处理装置及方法
KR100682635B1 (ko) 동일한 논리 공간을 점유하는 다중 레지스터 파일을 포함하는 마이크로프로세서
US6292845B1 (en) Processing unit having independent execution units for parallel execution of instructions of different category with instructions having specific bits indicating instruction size and category respectively
CN108139911B (zh) 在vliw处理器的同一执行包中使用有条件扩展槽的指令的有条件执行规格
US6405303B1 (en) Massively parallel decoding and execution of variable-length instructions
KR100974401B1 (ko) 주소 레지스터의 내용을 스와핑하기 위한 방법 및 장치
US6609191B1 (en) Method and apparatus for speculative microinstruction pairing
US7577824B2 (en) Methods and apparatus for storing expanded width instructions in a VLIW memory for deferred execution
JP2556182B2 (ja) デ−タ処理装置
JP2504312B2 (ja) プライオリティエンコ―ダ及びそれを備えたデ―タ処理装置
US20200371793A1 (en) Vector store using bit-reversed order
KR100278136B1 (ko) 데이타처리장치 및 데이타처리방법
US6308262B1 (en) System and method for efficient processing of instructions using control unit to select operations
US20230015163A1 (en) Method of storing register data elements to interleave with data elements of a different register, a processor thereof, and a system thereof
US6289439B1 (en) Method, device and microprocessor for performing an XOR clear without executing an XOR instruction
JP3102399B2 (ja) データ処理装置及び方法
JP3147884B2 (ja) 記憶装置及び情報処理装置

Legal Events

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

Payment date: 20130701

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140703

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160630

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20170710

Year of fee payment: 8