KR100231852B1 - 듀얼 파이프라인 프로세서에서 로드 명령의 병렬 수행 장치 - Google Patents

듀얼 파이프라인 프로세서에서 로드 명령의 병렬 수행 장치 Download PDF

Info

Publication number
KR100231852B1
KR100231852B1 KR1019960052477A KR19960052477A KR100231852B1 KR 100231852 B1 KR100231852 B1 KR 100231852B1 KR 1019960052477 A KR1019960052477 A KR 1019960052477A KR 19960052477 A KR19960052477 A KR 19960052477A KR 100231852 B1 KR100231852 B1 KR 100231852B1
Authority
KR
South Korea
Prior art keywords
pipeline
stack
signal
output
source operand
Prior art date
Application number
KR1019960052477A
Other languages
English (en)
Other versions
KR19980034436A (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 김영환
Priority to KR1019960052477A priority Critical patent/KR100231852B1/ko
Priority to US08/964,113 priority patent/US6079011A/en
Publication of KR19980034436A publication Critical patent/KR19980034436A/ko
Application granted granted Critical
Publication of KR100231852B1 publication Critical patent/KR100231852B1/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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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, look ahead
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30163Decoding the operand specifier, e.g. specifier format with implied specifier, e.g. top of stack

Abstract

1. 청구범위에 기재된 발명이 속한 기술분야
듀얼 파이프라인 프로세서.
2. 발명이 해결하고자 하는 기술적 과제
듀얼 파이프라인 프로세서에서 교환 명령과 더불어 로드 명령까지도 병렬적으로 수행할 수 있도록 함.
3. 발명의 해결 방법의 요지
스택 구조의 레지스터 파일을 갖는 듀얼(v-파이프, u-파이프) 파이프라인 프로세서에서 교환 명령과 메모리로 부터의 로드 명령을 다른 명령과 병렬적으로 처리.
4. 발명의 중요한 용도
듀얼 파이프라인 프로세서.

Description

듀얼 파이프라인 프로세서에서 로드 명령의 병렬 수행 장치
본 발명은 마이크로 프로세서의 설계에 적용되는 것으로, 더욱 상세하게는 스택(stack) 구조의 데이타 저장 장소를 갖고 명령을 처리하는 듀얼 파이프라인(dual pipelined) 프로세서에서 부동소수점 연산과 부동소수점 로드(Load) 명령을 동시에 수행하는 기법을 필요로 하는 설계 부분에 적용하여, 듀얼 파이프라인 프로세서에서 교환 명령과 더불어 로드 명령까지도 병렬적으로 수행할 수 있는 로드 명령의 병렬 수행 장치에 관한 것이다.
스택 구조의 데이타 저장 장소를 가진 프로세서에서는 어떤 명령이든지 그 오퍼랜드(operand)로 스택-탑(stack top)에 있는 값(value)를 이용해야 하므로 파이프라인되어 새로운 명령을 수행하려면 스택-탑에 새로운 오퍼랜드를 가져와야 하는데, 스택-탑에 새로운 오퍼랜드를 가져오는 방법은 로드명령에 의한 것과 교환(exchange) 명령에 의한 것 두가지가 있다.
종래기술에서는 이 둘 중에서 교환 명령만을 병렬적으로 처리하는 방법이 제시되어 있으나, 이 방법만을 사용해서는 스택-탑에 존재하는 가상적인 디펜던시(artificial dependency)를 완전히 제거할 수 없다.
스택구조의 레지스터 파일(register file)을 갖는 프로세서에서 어떤 명령을 수행할때 스택 구조가 어떠한 방법으로 사용되며, 어떤 영향을 미치는지에 대해 먼저 알아보자.
어떤 명령이 수행되려면 그 오퍼레이션이 가해질 소오스 오퍼랜드(source operand)가 하나 또는 두개가 필요하고, 이 오퍼레이션의 결과가 저장될 데스티네이션 오퍼랜드(destination operand)가 하나 필요하다. 물론 소오스 오퍼랜드나 데스티네이션 오퍼랜드를 갖지 않는 특별한 명령들도 존재하나, 대부분의 명령들은 소오스 오퍼랜드나 데스티네이션 오퍼랜드가 필요하다.
스택구조의 레지스터 파일에서는 소오스 오퍼랜드와 데스티네이션 오퍼랜드로 어떤 레지스터를 지정할때 스택-탑 레지스터 또는 탑에서부터의 상대적인 오프셋(offset)을 통해 지정이 가능하다. 그러므로 스택-탑이 바뀌는 경우 그 아래의 레지스터를 지정하는 오프셋도 달라져야 한다.
또한 특별히 중요한 사실은 소오스 오퍼랜드가 필요한 명령은 소오스 오퍼랜드로 반드시 스택-탑 레지스터를 사용해야 한다는 것이다. 즉, 하나의 소오스 오퍼랜드를 가지는 명령은 소오스 오퍼랜드로 스택-탑 레지스터를 사용하고, 두개의 소오스 오퍼랜드를 가지는 명령은 둘중에 하나는 반드시 스택-탑 레지스터가 되어야 한다.
또한 대부분의 명령들은 오퍼레이션의 결과를 저장하는 데스티네이션 오퍼랜드로 스택-탑 레지스터를 많이 사용하게 된다. 따라서 어떤 명령이 수행되려면 필요한 소오스 오퍼랜드를 반드시 스택-탑에 옮겨 놓아야만 그 오퍼레이션이 가능하게 된다. 결과적으로 스택구조의 레지스터 파일을 갖는 프로세서는 스택-탑에 항상 병목(bottleneck)이 생기고, 이러한 병목을 얼마나 효율적으로 해결하는 가가 성능향상의 관건이 된다.
앞서 언급했듯이 어떤 명령이 수행되려면 스택-탑에 필요한 데이타가 있어야 하는데, 만약 이 데이터가 앞선 명령의 결과(true dependency)라면 그 명령의 수행이 완료될때 까지 기다릴 수 밖에 없다. 하지만 앞선 명령의 결과와 관계없는 데이타라면 그 데이터를 스택-탑에 빨리 올려나야 한다. 하지만 앞의 명령들의 대부분은 그 오퍼레이션의 결과를 스택-탑에 저장하므로 그 오퍼레이션이 끝날때까지 기다려야 한다. 이러한 경우는 실제 데이터의 값에 종속된게 아니라 단지 스택-탑을 이용해야 하기 때문에 생기는 가상적인(artificial) 디펜던시라 할 수 있다. 따라서 스택-탑의 병목을 제거하려면 이러한 가상적인 디펜던시가 생겨올때 마치 디펜던시가 없는 것처럼 수행하게 하는 방법을 사용하면 되는 것이다.
종래에는 스택내에서 스택-탑과 다른 레지스터의 내용을 바꾸는 명령인 교환 명령을 효과적으로 처리하는 방법(U.S Patent Number : 5,367,650)을 사용하고 있다. 도 1A 내지 도 1C를 참조하여 그 방법을 설명하면 다음과 같다.
도 1A는 작업이 수행되기 전의 스택 구조와 내용을 나타내고 있다. R0∼R3은 실제 데이타값을 나타내고 있고, ST0∼ST3은 스택 내에서의 탑과의 상대적인 오프셋(offset)을 나타내고 있다. 도 1B는 수행될 오퍼레이션을 나타내는 것으로, 현재 수행되야될 오퍼레이션들은 R0와 R1을 곱한 결과와 R2에서 R3을 뺀 결과와 더하기를 하는 것이다. 이러한 오퍼레이션 컴파일러(compiler)에 의해 도 1B의 오른쪽과 같은 명령들로 구성되는데, ①의 fmul과 ③의 fsub는 필요한 소오스 오퍼랜드 데이터 사이에 앞선 명령의 결과(true-dependency)가 존재하지 않는다. 하지만 스택구조를 사용하기 때문에 둘 사이에 스택-탑에 의한 가상적인 디펜던시가 존재하게 되고, 따라서 fsub를 수행하기 위해서는 R2의 데이타를 ②의 fxch(exchange)명령에 의해 스택-탑에 올려나야 한다. fxch명령을 연속하게 수행하는 경우는 도 1C와 같이 fmul의 계산 결과가 나올때 까지 fxch명령이 파이프라인에서 스텔(stall)된 후 그 결과와 R2의 값을 서로 바꾸어야 한다. 이때 까지 Fsub는 fxch가 완료 되기를 기다려야 하기 때문에 성능이 현저히 저하된다.
따라서 이전의 발명은 fxch 명령을 fmul과 동시에(Parallel) 수행 할 수 있는 방법을 발명한 것이며, 이 결과는 도 1C의 첫번째 스택 내용 대신에 바로 두 번째 스택 내용을 갖도록 하는 것이다.
상기와 같은 종래기술의 문제점은 다음 오퍼레이션의 소오스 오퍼랜드(도 1의 예에서 R2와 같은 오퍼랜드)가 항상 스택 내에 있어야 한다는 것이다. 따라서, 스택-탑에 존재하는 가상적인 디펜던시(artificial dependency)를 완전히 제거할 수 없다.
본 발명은 듀얼 파이프라인 프로세서에서 교환 명령과 더불어 로드 명령까지도 병렬적으로 수행할 수 있는 로드 명령의 병렬 수행 장치를 제공함을 그 목적으로 한다.
스택구조의 데이타를 메모리로 부터 로드하는 명령은 항상 현재 스택의 탑위에 새로운 엔트리(entry)를 할당하고 그것을 다시 스택의 새로운 탑으로 만드는 것이다. 따라서 그 이후의 명령들은 새로운 스택-탑을 가지고 작업을 할 수가 있다. 즉, 스택-탑에 대한 디펜던시가 사라지게 된다. 그러므로 로드명령을 빠르게 수행하면 그 다음 명령들은 파이프라인되어 빨리 처리할 수가 있다.
로드 명령은 다른 명령들과 다르게 현재 스택-탑을 사용하지 않는다는 점에 착안하면, 로드 명령을 이전 명령과 동시에 처리하는 것이 가능하다는 것을 알 수 있다. 이러한 동작은 기본적으로 듀얼 파이프라인을 가지고 있다는 것을 의미하고 본 발명에서는 듀얼 파이프라인에서 로드 명령을 동시에 수행하는 방법을 제시하고 있다.
도 1A 내지 도 1C는 종래의 교환 명령에 따라 스택-탑에 새로운 오퍼랜드를 가져오는 개념도,
도 2A 내지 도 2C는 본 발명에 따라 스택-탑에 새로운 오퍼랜드를 가져오는 개념도,
도 3은 로드 명령을 병렬적으로 수행하기 위한 본 발명의 회로 블록도,
도 4는 스택-탑 업데이트부의 상세 블록도,
도 5는 u-파이프 어드레스 생성부의 상세 블록도,
도 6은 v-파이프 어드레스 생성부의 상세 블록도,
도 7은 포인터 레지스터 파일의 상세 블록도.
* 도면의 주요부분에 대한 부호의 설명
100: 스택-탑 업데이트부
200: u-파이프 어드레스 생성부
300: v-파이프 어드레스 생성부
400: 포인터 레지스터 파일
500: 물리적 데이터 레지스터 파일
상기 목적을 달성하기 위한 본 발명의 듀얼 파이프라인 프로세서에서 로드 명령의 병렬 수행 장치는, 스택 구조의 레지스터 파일을 갖는 듀얼(제1파이프라인, 제2파이프라인) 파이프라인 프로세서에서 교환 명령과 메모리로 부터의 로드 명령을 다른 명령과 병렬적으로 처리하기 위한 장치에 있어서,제2 파이프라인 인에이블 신호와 제2 파이프라인이나 제1 파이프라인에 로드 명령이 수행된다는 것을 나타내는 신호의 제어에 의해, 현재 제1 파이프라인에서 수행될 명령후의 스택-탑의 수정에 관한 정보 신호를 입력받아 스택-탑을 수정하여 새로운 스택-탑 신호와 현재의 스택-탑 신호를 출력하는 스택-탑 업데이트부; 상기 현재의 스택-탑 신호와 제1 파이프라인에 오는 명령의 제1 소오스 오퍼랜드 정보와 제2 소오스 오퍼랜드 정보 및 제1 데스티네이션 정보를 입력받아 계산하여 제1 파이프라인에서 수행될 명령의 제1 소오스 오퍼랜드 포인터 어드레스, 제2 소오스 오퍼랜드 포인터 어드레스 및 제1 데스티네이션 오퍼랜드 포인터 어드레스로 출력하는 제1 파이프라인 어드레스 생성부; 상기 제2 파이프라인 인에이블 신호와 제1 파이프라인나 제2 파이프라인에 로드 명령이 수행된다는 것을 나타내는 신호에 응답하여, 제2 파이프라인에 오는 명령의 소오스 오퍼랜드 정보와, 상기 새로운 스택-탑 신호와, 상기 제1 소오스 오퍼랜드 포인터 어드레스 및 상기 제2 소오스 오퍼랜드 포인터 어드레스를 입력받아 계산하여 제2 파이프라인의 로드 명령 또는 교환 명령의 제3 소오스 오퍼랜드 포인터 어드레스, 제4 소오스 오퍼랜드 포인터 어드레스로 출력하는 제2 파이프라인 어드레스 생성부; 상기 제2 파이프라인 어드레스 생성부 및 상기 제1 파이프라인 어드레스 생성부의 출력 어드레스들을 입력받아 실제 데이터 레지스터 파일의 어드레스를 가지고 있는 포인터 레지스터 파일; 및 상기 포인터 레지스터 파일로부터 입력되는 실제 데이터 레지스터 파일 어드레스에 응답하여 저장된 오퍼랜드를 실행유닛으로 내보내는 물리적 데이터 레지스터 파일을 포함하여 이루어지는 것을 특징으로 한다.
본 발명에서는 다음 오퍼레이션의 소오스 오퍼랜드가 스택뿐만 아니라 메모리에 있는 경우도 병렬적으로 수행할 수 있는 방법이다. 이러한 경우를 도 2A 내지 도 2C를 일예로 설명하겠다.
도 2A는 초기의 스택상태와 메모리의 상태를 나타내고 있고, 도 2B는 위의 오퍼레이션을 컴파일한 후의 명령들을 보여 주고 있다. 도 1B와 비교해 보면 fxch가 fload로 바뀌고 fsub의 두번째 소오스 오퍼랜드가 메모리 어드레스 C로 바뀐것이외에는 다른점이 없다. 도면 2B의 ③ fsub는 ①의 fmul의 결과와 디펜던시는 존재하지않지만 ②의 fload가 수행되어야지만 실행이 가능하다. 따라서 fload를 얼마나 빨리 수행하는가가 성능의 관건이 된다. 또한 fload는 fxch와 달리 fmul의 결과를 기다릴 필요는 없지만, 스택-탑을 새로 만들어야 하기 때문에 fmul을 기다려야 한다. 그러나 fload는 앞의 어떤 명령과도 데이타에 대한 디펜던시는 없기 때문에 앞의 명령과 동시에 수행이 가능하다. 따라서 도 2C의 첫번째 스택과 두번째 스택을 합쳐 병렬적으로 수행이 가능하다. 다만, fload의 이전 명령이 오퍼레이션을 수행한 후 스택을 팝(Pop)하는 경우는 fload에 의해 로드되는 스택 엔트리와 이전 명령의 결과를 저장하는 스택 엔트리가 같기 때문에 만약 로드가 먼저 수행되고 그 후에 결과를 쓰게되면 원하지 않는 결과를 얻게 되는 것이다. 따라서 fload를 병렬적으로 수행할때 이전 명령은 팝(Pop)하지 않는 명령이어야 한다.
앞서 설명한 것과 같이 fxch와 fload를 이전 명령과 동시에 수행이 가능하도록 하는 회로의 전체 구조는 도 3에 나타나 있다.
도 3의 회로는 외부에서 명령을 디코드하여 필요한 소오스 오퍼랜드에 대한 정보를 제공하면 그 정보를 이용하여 스택 구조의 레지스터 파일(register file)에서 필요한 오퍼랜드의 값을 보내 주는 역할을 한다. 외부에서는 두개의 파이프라인을 가지고 있다고 생각하는데, 각각의 파이프라인은 u-파이프와 v-파이프로 불리고 있고, 매번 두개의 파이프가 동시에 수행되지는 않는다. 이런 경우는 u-파이프만을 통해 하나의 작업만이 수행될 것이고, fload나 fxch가 다른 명령뒤에 올 경우에만 두개의 파이프가 수행이 가능하다. 각 파이프에서 필요한 오퍼랜드의 정보는 u_src1, u_src2, u_dst, v-scr을 통해 전달되는데, u_srcl, u_src2와 u_dst는 u-파이프에 오는 오퍼랜드를 나타내고 v-scr은 v-파이프에 오는 fxch의 소오스 오퍼랜드를 나타낸다. 또한 외부에서는 정보 중에 U_TOS라는 2bit정보를 주는데 이 정보는 현재 u-파이프에서 수행될 명령후의 스택-탑의 수정에 관한 것이 있다. 즉, 2bit에 -1,0,+1,+2라는 값을 인코딩(encoding)하여 보내 준다. 또한 op_load라는 제어 신호는 u-파이프나 v-파이프에 fload 명령이 수행된다는 것을 나타낸다. 즉, fxch나 fload가 다른 명령과 동시에 수행된다는 것을 나타낸다.
또한 외부 실행장치(execution unit)와의 데이터 인터페이스(data interface)로는 실행에 필요한 소오스 오퍼랜드 값과 리턴 값(return value)이 있으며 fload에 대한 데스티네이션 레지스터 넘버가 별도로 존재한다.
도 3에 도시된 바와같이 로드 명령을 병렬적으로 수행하는 본 발명의 회로 블록은, v-파이프 인에이블 신호 v_pipe_en와, u-파이프나 v-파이프에 fload 명령이 수행된다는 것을 나타내는 op_load 신호의 제어에 의해 현재 u-파이프에서 수행될 명령후의 스택-탑의 수정에 관한 정보 신호인 U_TOS[1:0]를 입력받아 스택-탑을 수정하여 새로운 스택-탑 신호 Next_ST와 현재의 스택-탑 신호 Cur_ST를 발생하는 로직인 스택-탑 업데이트부(100), 상기 현재의 스택-탑 신호 Cur_ST와 u-파이프에 오는 오퍼랜드인 u_srcl, u_src2와 u_dst를 입력받아 u-파이프에서 수행될 명령의 오퍼랜드 포인터 어드레스 u_src_PA1, u_src_PA2와 u_dst_PA를 계산하여 출력하는 u-파이프 어드레스 생성부(200), v_pipe_en, op_load 신호의 제어를 받아 v-파이프에 오는 fxch의 소오스 오퍼랜드인 v-scr 신호와 상기 새로운 스택-탑 신호 Next_ST와 상기 오퍼랜드 포인터 어드레스 u_src_PA1, u_src_PA2을 입력받아 fload나 fxch의 오퍼랜드들의 주소 xch_PA1, xch_PA2를 계산하여 출력하는 v-파이프 어드레스 생성부(300), 실제 데이터 레지스터 파일의 어드레스를 갖고 있는 포인터 레지스터 파일(400), 및 물리적 데이터 레지스터 파일(physical data register file, 500)로 구성된다.
도 4는 스택-탑 업데이트부(100)의 상세 회로도로서, v-파이프 인에이블 신호 v_pipe_en, op_load 신호를 입력받아 앤드 조합하여 출력하는 앤드 게이트(101)와, 스택-탑의 수정에 관한 정보 신호인 U_TOS[1:0]를 디코딩하는 디코더(102)와, 상기 디코딩된 U_TOS 신호와 현재의 스택-탑 신호 Cur_ST를 더하는 가산기(103)와, 상기 가산기(103)의 출력신호 및 앤드 게이트(101)의 출력신호를 감산하는 감산기(104)와, 상기 앤드 게이트(101)의 출력신호에 제어에 의해 상기 가산기(103) 및 상기 감산기(104)의 출력중 어느하나를 선택하여 새로운 스택-탑 신호 Next_ST를 출력하는 멀티플렉서(105), 및 상기 멀티플렉서(105)의 출력을 저장하고 있다가 Cur_ST 신호를 출력하는 레지스터(106)으로 구성된다.
상기와 같은 스택-탑 업데이트부(100)는 fload가 v-파이프에 오는 경우를 검출하는 앤드(AND) 게이트(101)를 거쳐 v_load 신호를 만들고 이 신호에 의해 u-파이프에 의한 스택-탑에 1을 빼주는 감산기(104)를 거쳐 새로운 스택-탑 Next_ST을 계산한다. 이 회로는 fload가 v-파이프에 올때만 유효하며, u-파이프에 올때는 U_TOS에 의해 1만큼 빠지므로 따로 처리할 필요는 없다. 이 블럭에서는 Next_ST와 Cur_ST를 발생하는데, Cur_ST(Current Stack Top)은 현재 스택-탑으로 u-파이프에 오는 소오스 오퍼랜드의 어드레스를 계산하는데 사용된다.
도 5는 u-파이프에 오는 오퍼랜드들의 주소를 계산하는 u-파이프 어드레스 생성부(200)로, 단지 현재의 스택-탑에 오프셋(offset)을 더해주는 다수의 가산기(201,202,203)로 구성되어, 오퍼랜드들의 주소를 계산할 수 있다. 여기서 생성된 주소들은 스택 포인터 레지스터 파일(400)의 주소가 되는 것이고 실제 레지스터 파일(500)의 주소를 의미하지는 않는다. 실제 레지스터 파일의 주소는 포인터 레지스터 파일(400)내에 각 엔트리별로 저장되어 있다.
도 6은 fload나 fxch의 오퍼랜드들의 주소를 계산하는 v-파이프 어드레스 생성부(300)로서, v_pipe_en와 op_load 신호를 입력받아 오어 연산하는 오어 게이트(301), 상기 오어게이트(301)의 출력에 제어받아 Next_ST와 u_src_PA1중 하나의 신호를 선택하여 xch_PA1 신호를 출력하는 제1멀티플렉서(302), Next_ST와 v_src 신호를 가산하는 가산기(303), 오어게이트(301)의 출력에 제어받아 상기 가산기(303)의 출력신호와 u_src_PA2신호중 하나를 선택하여 xch_PA2 신호를 출력하는 제2멀티플렉서(304)로 구성된다.
fxch가 v-파이프에 올때는 Next_ST와 v_src에 오는 오프셋에 Next_ST를 더한 값이 소오스 오퍼랜드의 주소가 되는 것이고, u-파이프에 오는 경우는 u-파이프 어드레스 생성부(200)에서 오는 소오스 오퍼랜드 어드레스가 오퍼랜드의 주소가 된다. fload가 u-파이프나 v-파이프에 오는 경우는 로드(load)될 데스티네이션 어드레스가 Next_ST에 의해 생성되야하고, 그 결과를 fxch의 srcl 오퍼랜드 어드레스와 같은 라인을 사용한다. 따라서 오어 게이트에 의해 fload이거나 v-파이프에 fxch가 오는 경우는 제1멀티플렉스(302), 제2멀티플렉스(304)의 선택이 1이 된다. 선택이 0이 되는 경우는 fxch가 u-파이프에 오는 경우만 해당된다. 물론 fxch나 fload를 제외한 나머지 명령에 대해서도 당연히 0이 된다.
도 7은 포인터 레지스터 파일(400)의 상세 회로도로서, 각 엔트리는 실제 레지스터 파일로의 어드레스를 가지고 있고, 전체 구조는 스택구조로 사용할 수 있게 되어 있다. 각 엔트리 초기에 자기 어드레스와 같은 값을 갖도록 한다. 이 포인터 레지스터 파일은 5개의 리드 포트(read port, 401,402,403,404,405)를 가지고 있는데, 3개(403,404,405)는 u-파이프에서 수행될(fxch는 제외) 기능(function)의 소오스 오퍼랜드와 데스티네이션 오퍼랜드 주소이고, 2개(401,402)는 fxch를 위해 생성되는 포트로 이 두 어드레스는 실제 레지스터 파일로 가는 것이 아니고, 순서를 서로 바꿔 다시 포인터 레지스터 파일에 저장된다. 따라서, Fxch가 data를 직접 바꾸지 않고, 포인터 값 만을 바꾸어 수행이 가능하도록 하였다. 또한 이 두개의 어드레스중 하나는 fload가 수행될 경우의 데스티네이션 레지스터 파일의 어드레스를 나타내어 fload를 처리하는 외부 클럭으로 전달된다. 따라서 u-파이프의 어드레스를 이용하여 이전명령을 처리하고, fload는 데스티네이션 어드레스를 fload 실행 로직으로 보낼 수 있으므로 두개의 작업이 동시에 수행될 수 있다.
본 발명은 fload 명령이 다른 명령과 더불어 v-파이프에서 수행될 경우 u-파이프와 관계없는 데스티네이션 어드레스를 사용한다는 점에 착안하여 기존의 fxch와 마찬가지로 동시에 병렬로 수행될 수 있다.

Claims (7)

  1. 스택 구조의 레지스터 파일을 갖는 듀얼 파이프라인 프로세서에서 교환 명령과 메모리로 부터의 로드 명령을 다른 명령과 병렬적으로 처리하기 위한 장치에 있어서,
    제2 파이프라인 인에이블 신호와 제2 파이프라인이나 제1 파이프라인에 로드 명령이 수행된다는 것을 나타내는 신호의 제어에 의해, 현재 제1 파이프라인에서 수행될 명령후의 스택-탑의 수정에 관한 정보 신호를 입력받아 스택-탑을 수정하여 새로운 스택-탑 신호와 현재의 스택-탑 신호를 출력하는 스택-탑 업데이트부;
    상기 현재의 스택-탑 신호와 제1 파이프라인에 오는 명령의 제1 소오스 오퍼랜드 정보와 제2 소오스 오퍼랜드 정보 및 제1 데스티네이션 정보를 입력받아 계산하여 제1 파이프라인에서 수행될 명령의 제1 소오스 오퍼랜드 포인터 어드레스, 제2 소오스 오퍼랜드 포인터 어드레스 및 제1 데스티네이션 오퍼랜드 포인터 어드레스로 출력하는 제1 파이프라인 어드레스 생성부;
    상기 제2 파이프라인 인에이블 신호와 제1 파이프라인나 제2 파이프라인에 로드 명령이 수행된다는 것을 나타내는 신호에 응답하여, 제2 파이프라인에 오는 명령의 소오스 오퍼랜드 정보와, 상기 새로운 스택-탑 신호와, 상기 제1 소오스 오퍼랜드 포인터 어드레스 및 상기 제2 소오스 오퍼랜드 포인터 어드레스를 입력받아 계산하여 제2 파이프라인의 로드 명령 또는 교환 명령의 제3 소오스 오퍼랜드 포인터 어드레스, 제4 소오스 오퍼랜드 포인터 어드레스로 출력하는 제2 파이프라인 어드레스 생성부;
    상기 제2 파이프라인 어드레스 생성부 및 상기 제1 파이프라인 어드레스 생성부의 출력 어드레스들을 입력받아 실제 데이터 레지스터 파일의 어드레스를 가지고 있는 포인터 레지스터 파일; 및
    상기 포인터 레지스터 파일로부터 입력되는 실제 데이터 레지스터 파일 어드레스에 응답하여 저장된 오퍼랜드를 실행유닛으로 내보내는 물리적 데이터 레지스터 파일
    을 구비하는 듀얼 파이프라인 프로세서에서 로드 명령의 병렬 수행 장치.
  2. 제 1 항에 있어서,
    상기 스택-탑 업데이트부는
    제2 파이프라인 인에이블 신호와 제1 파이프라인나 제2 파이프라인에 로드 명령이 수행된다는 것을 나타내는 신호를 입력받아 앤드 연산하여 제2 파이프라인에서 로드 명령이 수행하는 것을 검출하는 앤드 게이트;
    스택-탑의 수정에 관한 정보 신호를 디코딩하는 디코더;
    상기 디코딩된 스택-탑의 수정에 관한 정보신호와 현재의 스택-탑 신호를 더하는 가산기;
    상기 가산기의 출력신호 및 앤드 게이트의 출력신호를 감산하는 감산기;
    상기 앤드 게이트의 출력신호에 대응하여 상기 가산기 및 상기 감산기의 출력 중 어느 하나를 선택하여 새로운 스택-탑 신호를 출력하는 멀티플렉서; 및
    상기 멀티플렉서의 출력을 저장하고 있다가 현재의 스택-탑 신호를 출력하는 레지스터
    를 구비하는 것을 특징으로 하는 듀얼 파이프라인 프로세서에서 로드 명령의 병렬 수행 장치.
  3. 제 2 항에 있어서,
    상기 멀티플렉서는
    상기 제2 파이프라인에서 로드 명령이 수행되는 경우 상기 감산기의 출력을 상기 로드 명령이 수행된 후의 새로운 스택-탑 신호로 하는 것을 특징으로 하는 듀얼 파이프라인 프로세서에서 로드 명령의 병렬 수행 장치.
  4. 제 1 항에 있어서,
    상기 제2 파이프라인 어드레스 생성부는
    제2 파이프라인 인에이블 신호와, 제1 파이프라인나 제2 파이프라인에 로드 명령이 수행된다는 것을 나타내는 신호를 입력받아 오어 연산하는 오어 게이트;
    상기 오어게이트 출력에 응답하여, 상기 새로운 스택-탑 신호와 상기 제1 소오스 오퍼랜드 포인터 어드레스 중 하나의 신호를 선택하여 상기 제2 파이프라인 명령의 제3 소오스 오퍼랜드 포인터 어드레스로 출력하는 제1 멀티플렉서;
    상기 새로운 스택-탑 신호와 상기 제2 파이프라인에 오는 명령의 소오스 오퍼랜드 정보를 가산하는 가산기; 및
    상기 오어 게이트의 출력에 응답하여, 상기 가산기의 출력신호와 제2 소오스 오퍼랜드 포인터 어드레스 중 하나를 선택하여 상기 제2 파이프라인 명령의 제4 소오스 오퍼랜드 포인터 어드레스로 출력하는 제2멀티플렉서
    를 구비하는 것을 특징으로 하는 듀얼 파이프라인 프로세서에서 로드 명령의 병렬 수행 장치.
  5. 제 4 항에 있어서,
    상기 제1 멀티플렉서는
    제2 파이프라인 인에이블되거나, 제1 파이프라인이나 제2 파이프라인에 로드 명령이 수행되는 경우에 상기 새로운 스택-탑 신호가 상기 제3 소오스 오퍼랜드 포인터 어드레스로 출력되고, 나머지 경우에 상기 제1 파이프라인 어드레스 생성부로부터 출력되어 입력되는 제1 소오스 오퍼랜드 포인터 어드레스를 상기 제3 소오스 오퍼랜드 포인터 어드레스로 출력하는 것을 특징으로 하는 듀얼 파이프라인 프로세서에서 로드 명령의 병렬 수행 장치.
  6. 제 4 항에 있어서,
    상기 제2 멀티플렉서는
    제2 파이프라인 인에이블되거나, 제1 파이프라인이나 제2 파이프라인에 로드 명령이 수행되는 경우에 상기 가산기로부터 출력되어 입력되는 신호가 상기 제4 소오스 오퍼랜드 포인터 어드레스로 출력되고, 나머지 경우에 상기 제1 파이프라인 어드레스 생성부로부터 출력되어 입력되는 제2 소오스 오퍼랜드 포인터 어드레스를 상기 제4 소오스 오퍼랜드 포인터 어드레스로 출력하는 것을 특징으로 하는 듀얼 파이프라인 프로세서에서 로드 명령의 병렬 수행 장치.
  7. 제 1 항에 있어서,
    상기 포인터 레지스터 파일은
    로드 명령이 수행될 경우 로드 명령을 처리하는 외부 블록으로 로드 데스티네이션 레지스터 파일의 어드레스를 전달하는 것을 특징으로 하는 듀얼 파이프라인 프로세서에서 로드 명령의 병렬 수행 장치.
KR1019960052477A 1996-11-06 1996-11-06 듀얼 파이프라인 프로세서에서 로드 명령의 병렬 수행 장치 KR100231852B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1019960052477A KR100231852B1 (ko) 1996-11-06 1996-11-06 듀얼 파이프라인 프로세서에서 로드 명령의 병렬 수행 장치
US08/964,113 US6079011A (en) 1996-11-06 1997-11-05 Apparatus for executing a load instruction or exchange instruction in parallel with other instructions in a dual pipelined processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019960052477A KR100231852B1 (ko) 1996-11-06 1996-11-06 듀얼 파이프라인 프로세서에서 로드 명령의 병렬 수행 장치

Publications (2)

Publication Number Publication Date
KR19980034436A KR19980034436A (ko) 1998-08-05
KR100231852B1 true KR100231852B1 (ko) 1999-12-01

Family

ID=19481006

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019960052477A KR100231852B1 (ko) 1996-11-06 1996-11-06 듀얼 파이프라인 프로세서에서 로드 명령의 병렬 수행 장치

Country Status (2)

Country Link
US (1) US6079011A (ko)
KR (1) KR100231852B1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6237066B1 (en) * 1999-03-22 2001-05-22 Sun Microsystems, Inc. Supporting multiple outstanding requests to multiple targets in a pipelined memory system
US6668315B1 (en) * 1999-11-26 2003-12-23 Hewlett-Packard Development Company, L.P. Methods and apparatus for exchanging the contents of registers
US20050033942A1 (en) * 2003-08-08 2005-02-10 Simcha Gochman Distribution of architectural state information in a processor across multiple pipeline stages
US8375449B1 (en) 2007-08-10 2013-02-12 Fortinet, Inc. Circuits and methods for operating a virus co-processor
US8079084B1 (en) 2007-08-10 2011-12-13 Fortinet, Inc. Virus co-processor instructions and methods for using such
US9100319B2 (en) 2007-08-10 2015-08-04 Fortinet, Inc. Context-aware pattern matching accelerator
US8286246B2 (en) 2007-08-10 2012-10-09 Fortinet, Inc. Circuits and methods for efficient data transfer in a virus co-processing system

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2263565B (en) * 1992-01-23 1995-08-30 Intel Corp Microprocessor with apparatus for parallel execution of instructions
US5367650A (en) * 1992-07-31 1994-11-22 Intel Corporation Method and apparauts for parallel exchange operation in a pipelined processor
US5634118A (en) * 1995-04-10 1997-05-27 Exponential Technology, Inc. Splitting a floating-point stack-exchange instruction for merging into surrounding instructions by operand translation
US5764943A (en) * 1995-12-28 1998-06-09 Intel Corporation Data path circuitry for processor having multiple instruction pipelines
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

Also Published As

Publication number Publication date
KR19980034436A (ko) 1998-08-05
US6079011A (en) 2000-06-20

Similar Documents

Publication Publication Date Title
JP3756195B2 (ja) デジタル信号処理集積回路アーキテクチャ
TWI763698B (zh) 向量乘加指令
EP3362889B1 (en) Move prefix instruction
US20020087900A1 (en) System and method for reducing power consumption in a data processor having a clustered architecture
JP2011517493A (ja) 実行された命令の結果を選択的にコミットするためのシステムおよび方法
KR100493126B1 (ko) 데이터정밀도모드표시기를구비한다중파이프라인형마이크로프로세서
JP2017538213A (ja) アウトオブオーダーハードウェアソフトウェア協調設計プロセッサにおいてスタック同期命令を用いてプレディケート値のスタックを実装し維持する方法および装置
JP3449186B2 (ja) パイプラインバイパス機能を有するデータ処理装置
JPH0496825A (ja) データ・プロセッサ
KR101016257B1 (ko) 프로세서 및 정보 처리 장치
US6145075A (en) Apparatus and method for executing a single-cycle exchange instruction to exchange contents of two locations in a register file
KR100231852B1 (ko) 듀얼 파이프라인 프로세서에서 로드 명령의 병렬 수행 장치
US6055628A (en) Microprocessor with a nestable delayed branch instruction without branch related pipeline interlocks
JP3645574B2 (ja) データ処理システムにおける入力オペランド制御
JP3662259B2 (ja) データ処理条件コード・フラグ
CN110073332B (zh) 数据处理装置和方法
JP2000207210A (ja) マイクロプロセッサ
US7472264B2 (en) Predicting a jump target based on a program counter and state information for a process
JP2001504956A (ja) データ処理システム・レジスタ制御
US5812845A (en) Method for generating an object code for a pipeline computer process to reduce swapping instruction set
JP2007334819A (ja) ベクトルリネーミング方式およびベクトル型計算機
JP2001306321A (ja) プロセッサ
US20050033939A1 (en) Address generation
US20090119492A1 (en) Data Processing Apparatus and Method for Handling Procedure Call Instructions
WO2022153026A1 (en) Memory copy size determining instruction and data transfer instruction

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

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee