KR100698493B1 - 좁은 피연산자들에서 계산을 수행하는 방법 및 장치 - Google Patents

좁은 피연산자들에서 계산을 수행하는 방법 및 장치 Download PDF

Info

Publication number
KR100698493B1
KR100698493B1 KR1020027006312A KR20027006312A KR100698493B1 KR 100698493 B1 KR100698493 B1 KR 100698493B1 KR 1020027006312 A KR1020027006312 A KR 1020027006312A KR 20027006312 A KR20027006312 A KR 20027006312A KR 100698493 B1 KR100698493 B1 KR 100698493B1
Authority
KR
South Korea
Prior art keywords
instruction
operand
data
destination
command
Prior art date
Application number
KR1020027006312A
Other languages
English (en)
Other versions
KR20020087386A (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 KR20020087386A publication Critical patent/KR20020087386A/ko
Application granted granted Critical
Publication of KR100698493B1 publication Critical patent/KR100698493B1/ko

Links

Images

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/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • 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
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • 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
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • 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
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory

Abstract

마이크로프로세서(10)는 부분적으로 엑세스 또는 갱신 될 수 있는 범용 레지스터들을 포함한다. 목적지 레지스터의 단지 일부분만을 갱신하는 명령과, 소스로서 보다 작은 갱신된 부분을 포함하는 목적지 레지스터의 보다 큰 부분을 요구하는 후속 명령과의 사이에서 종속성들이 생성된다. 이와같은 명령들간의 종속성들을 해결하기위해, 명령의 디코드 하에서 명령이 목적지의 일부분만을 갱신해야 할지 아니면 모든 목적지를 갱신해야 할지에 대한 판단이 이루어진다. 명령에 의해 단지 목적지의 일부분만이 갱신되면, 명령의 실행에 앞서 목적지에 대한 판독이 행해지고, 목적지로부터의 판독데이터가 명령실행 결과와 병합된다. 이어서, 병합된 데이터는 명령 실행의 결과로서 운반된다.
마이크로프로세서, 명령, 목적지 레지스터, 종속성, 갱신

Description

좁은 피연산자들에서 계산을 수행하는 방법 및 장치{METHOD AND APPARATUS FOR PERFORMING CALCULATIONS ON NARROW OPERANDS}
본 발명은 수퍼스칼라 마이크로프로세서 분야에 관한 것으로, 보다 특별하게는 어떤 마이크로프로세서에서 명령들간의 데이터 종속성(data dependencies)을 처리하는 것에 관한 것이다.
수퍼스칼라 프로세서는 클럭 주기당 다중 명령을 실행하고, 설계에 따라 가장 짧은 클럭주기를 선택함으로써 고 성능을 성취한다. 여기서 사용되는 용어 "클럭주기"는 프로세서내의 명령 처리 파이프라인의 다양한 스테이지에 맞는 시간 간격을 일컫는다. 저장 디바이스(예컨대, 레지스터 및 어레이)들은 그 클럭주기에 따라 그들의 값을 취한다. 예컨대, 저장 디바이스는 클럭주기를 정의하는 클럭신호의 상승 및 하강 에지에 따라 값을 취할 수 있다. 저장 디바이스는 클럭신호가 후속하는 상승 또는 하강 에지에 각각 이를 때까지 그 값을 저장한다. 여기서 사용되는 용어 "명령 처리 파이프라인"은 파이프라인 방식으로 명령들을 처리하는데 이용되는 논리 회로를 일컫는다. 파이프라인은 비록 명령 처리들이 수행되는 임의 수의 스테이지로 분할될 수 있기는 하지만은 이 명령 처리는 일반적으로 명령 인출, 명령 디코딩, 명령어 실행 및 상기 명령에 의해 식별된 목적지로의 상기 실행 결과의 저장을 포함한다.
성능 증대를 위하여, 수퍼스칼라 마이크로프로세서는 흔히 순서를 벗어난 실행(out-of-order execution)을 활용한다. 어느 한 프로그램에서, 제 1 명령이 제 2 명령보다 먼저 실행되도록 하는등의 방식으로 명령들이 순서화(order)된다. 순서를 벗어난 실행의 하나의 위험성은 프로그램의 의도된 기능을 변경할 수 없게 한다는 점이다. 명령어들이 특정 순서로 실행될때, 프로그램의 의도된 기능이 실현된다. 그러나, 원래의 기능이 유지되는한 명령들이 임의 순서로 실행될 것이다. 예컨대, 제 1 명령에 의존하지않는 제 2 명령은 비록 프로그램 순서에서 제 1 명령이 제 2 명령 보다 우선한다 하다라도 제 1 명령어 보다 먼저 실행될 것이다. 만일 제 1 명령에 의해 생성된 결과가 제 2 명령의 피연산자로서 활용된다면 제 2 명령은 제 1 명령에 의존하게된다.
여기서 사용되는 명령의 소스 피연산자(source operand)는 임의의 결과를 생성하도록 명령에 의해 연산되는 값이다. 반대로, 목적지 피연산자(destination operand)는 명령의 결과를 나타낸다. 명령의 소스 및 목적지 피연산자는 포괄적으로 피연산자 정보로 칭해진다. 명령은 소스 피연산자를 저장하는 위치 및 목적지 피연산자를 저장하는 위치를 특정한다. 피연산자는 레지스터("레지스터 피연산자") 또는 메모리 위치("메모리 피연산자")에 저장될 수 있다. 여기서 사용되는 레지스터는 명령 결과들을 저장하는데 이용되는 마이크로프로세서내에 포함된 저장 위치이다. 레지스터들은 임의의 명령에 대한 소스 또는 목적지 위치들로서 특정된다.
x86 명령 세트 아키텍처에 존재하는 추가적인 어려움은 일부 레지스터들을 갱신할 수 있는 능력이다. 전형적으로, 목적지 피연산자들은 8, 16 또는 32비트, 레지스터 피연산자들은 32 비트일 수 있다. 결과적으로, 목적지 피연산자의 단지 일부분만이 갱신될때 의존성(dependencies)들이 생성될 수 있다. 예컨대, 목적지 피연산자의 일부분만을 갱신하는 명령이 소스 피연산자와 동일한 목적지 피연산자 전체를 요구하는 후속 명령보다 먼저 발생할 때, 상기 후속 명령은 상기 이전 명령이 실행되어 결과를 생성하기전까지 대기해야 한다. 이 생성된 결과 외에 추가적으로, 상기 후속 명령은 그의 소스 피연산자가 상기 이전 명령에 의해 갱신되지않은 상기 목적지 레지스터의 부분을 갱신하기를 요구한다. 하나의 가능한 해결 방안은 상기 명령이 퇴거되고 그리고 그 결과가 레지스터 파일에 기록될때까지 대기하는 것이다. 그러면, 상기 후속 명령은 상기 레지스터 파일로부터 상기 소스 피연산자를 판독한다. 그러나, 만일 상기 이전 명령이 퇴거될때 까지 상기 후속 명령이 대기해야만 하여, 상기 후속 명령이 상기 전체의 갱신된 레지스터를 판독해야 하는 경우 처리 지연이 유발된다. 대안적으로, 마이크로프로세서는 8, 16 및 32 비트 피연산자를 독립적으로 처리하는 회로를 구비할 수 있다. 이는 마이크로프로세서가 상기 명령에 의해 갱신된 레지스터 부분만을 갱신하도록 할 수 있게 해준다. 그러나, 어느 한 레지스터의 서로 다른 부분들에 대한 독립적인 처리는 마이크로프로세서의 회로에 상당한 복잡성을 부가시키게 된다.
상기 문제들은 대부분 여기서 기술하는 마이크로프로세서 및 방법에 의해 해결된다. 목적지 레지스터의 단지 일부분을 갱신하는 명령이 디코딩될때, 상기 명령의 실행에 앞서 목적지 레지스터의 판독이 행해진다. 이 명령이 실행될때, 이 실행된 명령의 결과는 완전한 결과 레지스터 값을 형성하도록 상기 이전의 판독 데이터와 병합된다. 장점적으로, 소스 피연산자로서 이 결과에 의존하는 어떤 명령은 그의 소스 피연산자가 상기 이전 명령의 실행하에서 상기 이전 명령에 의해 제공된다. 또한, 마이크로프로세서의 다른 부분들(예컨대, 로드/저장 유닛 및 재배열 버퍼)이 32비트로서 모든 피연산자를 처리하기 때문에 상기 다른 부분들은 이들이 피연산자들의 크기들을 더이상 고려할 필요가 없으므로 간략화될 수 있을 것이다.
넓게 말해서, 명령을 디코드하도록 구성된 디코드 유닛과 명령들을 실행하도록 구성된 기능유닛을 포함하는 마이크로프로세서가 창안된다. 이 디코드 유닛은 명령이 단지 목적지의 일부분만을 갱신할때를 검출하도록 구성된다. 또한, 이 디코드 유닛은 피연산자 요청 정보, 디코드된 명령 및 피연산자 크기 정보를 운반하도록 구성된다. 명령을 실행하는것 이외에 기능유닛은 상기 명령이 단지 목적지의 일부분만을 갱신하는 것을 검출함에 응답하여 명령의 목적지의 내용을 상기 명령의 실행 결과와 병합하도록 구성된다. 마지막으로, 상기 기능유닛은 상기 실행된 명령의 결과로서 병합된 데이터를 운반하도록 구성된다.
또한, 한 방법이 착안된다. 명령이 디코드된다. 이 디코딩은 명령이 목적지의 일부분만을 갱신하는지 여부를 판단하는 과정을 포함한다. 이 명령은 실행 결과를 생성하도록 후속적으로 실행된다. 만일 상기명령이 상기 목적지의 일부분만을 갱신하는것으로 판정되면, 그 실행결과는 재 1 데이터와 병합된다. 이어서, 상기 병합된 결과는 상기 명령 실행의 결과로서 운반된다.
또한, 산술 논리 유닛, 선택 회로 및 다수의 멀티플렉서를 포함하는 기능유닛이 창안된다. 산술 논리 유닛은 피연산자 데이터 및 크기 정보를 수신하도록 결합되며, 디코딩된 명령을 실행하여 제 1 데이터를 생성하도록 구성된다. 선택 회로는 목적지 피연산자 크기 정보를 수신하도록 결합되며, 제어 신호들을 운반하도록 구성된다. 다수의 멀티플렉서 각각은 제 1 데이터 부분, 제 2 데이터 부분을 수신하도록 결합된다. 각 멀티플렉서는 또한 상기 선택 회로로 부터 제어 신호를 수신하고, 상기 제어 신호의 제 1 조건을 검출함에 응답하여 상기 제 1 데이터 부분을 운반하고, 그리고 상기 제어 신호의 제 2 조건을 검출함에 응답하여 상기 제 2 데이터 부분을 운반하도록 구성된다. 이 운반된 부분들은 이후 제 3 데이터를 형성하도록 병합되는바, 상기 제 3 데이터는 상기 실행된 명령의 결과로서 운반된다.
또한, 마이크로프로세서, 기능유닛 및 I/O 유닛을 포함하는 컴퓨터 시스템이 창안된다. 이 마이크로프로세서는 명령을 디코드하고, 명령이 목적지의 일부분만을 갱신할때를 검출하도록 구성된다. 또한, 디코드 유닛이 피연산자 요청 정보, 디코드된 명령 및 피연산자 크기 정보를 운반하도록 구성된다. 디코드된 명령, 피연산자 크기 정보 및 피연산자 데이터를 수신하도록 기능 유닛이 결합된다. 명령을 실행하는것 이외에, 기능 유닛은 상기 명령이 상기 목적지의 부분만을 갱신하는것을 검출함에 응답하여 어떤 명령의 목적지의 내용과 상기 명령의 실행 결과를 병합하도록 구성된다. 마지막으로, 상기 기능 유닛은 상기 실행된 명령의 결과로서 상기 병합된 데이터를 운반하도록 구성된다.
본 발명의 다른 목적들과 이점들은 첨부한 도면들을 참조로한 다음의 상세한 설명으로부터 명백해질 것이다.
도 1은 마이크로프로세서의 일실시예에 대한 블록 다이어그램.
도 2는 마이크로프로세서의 일 실시예에 따른 도 1에 보인 디코드 유닛, 로드/저장 유닛, MROM 유닛, 기능유닛, 예약 스테이션 및 레지스터 파일들간의 상호 연결을 구체적으로 보이는 다이어그램.
도 3은 마이크로프로세서의 일실시예에 따른 도 1에 보인 기능유닛의 블록 다이어그램.
도 4는 도 1에 보인 마이크로프로세서가 합체된 컴퓨터 시스템의 블록 다이어그램.
비록 본 발명에 대한 다양한 변경들과 대안적 형태들이 가능하지만은, 본 발명의 특정 실시예들만을 도면들에서 예제로써 나타냈으며, 이들에 대해 자세히 설명하기로 한다. 그러나, 상기 도면들 및 이들에 대한 상세한 설명은 설명되는 특정 형태로 본 발명을 제한하고자 함이 아니며, 첨부되는 청구항들에의해 정의되는 본 발명의 사상과 범위에 속하는 모든 변경들, 균등물 및 대체물들을 포괄하고자 하는 것임을 이해해야 할 것이다.
프로세서 개요
도 1에 있어서, 프로세서(10)의 일 실시예의 블록 다이어그램이 도시된다. 다른 실시예들도 가능하며 창안될 수 있다. 도 1에 도시된 바와 같이, 프로세서(10)는 프리패치/프리디코드 유닛(12), 분기 예측 유닛(14), 명령 캐시(16), 명령 정렬 유닛(18), 다수의 디코드 유닛들(20A-20C), 다수의 예약 스테이션들(22A-22C), 다수의 기능 유닛들(24A-24C), 로드/저장 유닛(26), 데이터 캐시(28), 레지스터 파일(30), 재배열 버퍼(32), MROM 유닛(34) 및 버스 인터페이스 유닛(37)을 포함한다. 여기서, 문자가 뒤따르는 특정한 참조 번호로 언급되는 구성요소들은 단지 그 참조번호로만 포괄적으로 표기하기로 한다. 예를 들어서, 디코드 유닛들(20A-20C)은 디코드 유닛들(20)로 포괄하여 표기한다.
프리패치/프리디코드 유닛(12)은 버스 인터페이스 유닛(37)으로부터 명령들을 수신하도록 결합되고, 명령 캐시(16) 및 분기 예측 유닛(14)과도 결합된다. 유사하게, 분기 예측 유닛(14)은 명령 캐시(16)와 결합된다. 또한, 분기 예측 유닛(14)은 디코드 유닛들(20)과 기능 유닛들(24)과도 결합된다. 명령 캐시(16)는 MROM 유닛(34)과 명령 정렬 유닛(18)과도 결합된다. 명령 정렬 유닛(18)은 또한 디코드 유닛들(20)과 결합된다. 각 디코드 유닛들(20A-20C)은 로드/저장 유닛(26)과 개별적인 예약 스테이션들(22A-C)과 결합된다. 예약 스테이션들(22A-22C)은 개별적인 기능 유닛들(24A-C)과도 결합된다. 부가적으로, 디코드 유닛들(20)과 예약 스테이션들(22)은 레지스터 파일(30) 및 재배열 버퍼(32)와 결합된다. 기능 유닛들(24)은 로드/저장 유닛(26), 레지스터 파일(30), 그리고 재배열 버퍼(32)와도 결합된다. 데이터 캐시(28)는 로드/저장 유닛(26) 및 버스 인터페이스 유닛(37)과 결합된다. 버스 인터페이스 유닛(37)은 L2 인터페이스를 거쳐 L2 캐시 및 버스에 결합된 다. 마지막으로, MROM 유닛(34)은 디코드 유닛(20)과 결합된다.
명령 캐시(16)는 명령들을 저장하기 위해 제공되는 고속 캐시 메모리이다. 명령들은 명령 캐시(16)로부터 패치되고 디코드 유닛들(20)로 디스패치된다. 일 실시예에서, 명령 캐시(16)는 64바이트 라인들(한 바이트는 8비트들로 구성됨)을 가지는 2-웨이 세트 연관적(set associative)구성으로 최대 64킬로바이트의 명령들을 저장할 수 있도록 구성된다. 대안적으로, 다른 원하는 구성 및 크기가 적용될 수 있다. 예를 들어, 명령 캐시(16)는 완전 연관적(fully associative), 세트 연관적 혹은 직접 맵핑된(direct mapped) 구성으로도 실시될 수 있다는 것에 주목하기 바란다.
명령들은 프리패치/프리디코드 유닛(12)을 통해 명령 캐시(16)에 저장된다.명령들은 프리패치 방식(scheme)에 따라서 명령 캐시(16)로부터 요청되기 전에 프리패치될 수 있다. 다양한 프리패치 방식들이 프리패치/프리디코드 유닛(12)에 의해 활용될 수 있다. 프리패치/프리디코드 유닛(12)이 명령들을 명령 캐시(16)로 전송하면, 프리패치/프리디코드 유닛(12)은 명령들의 각 바이트에 대해 3개의 프리디코드 비트들 즉, 시작 비트, 종료 비트 그리고 기능 비트를 생성한다. 상기 프리디코드 비트들은 각 명령의 경계들을 지시하는 태그들을 형성한다. 상기 프리디코드 태그들은 또한 주어진 명령이 디코드 유닛들(20)에 의해 직접적으로 디코드 될 수 있는지, 혹은 상기 명령이, MROM 유닛(34)에 의해 제어되는 마이크로코드 절차를 호출함으로써 실행되는 지와 같은 부가적인 정보를 전달할 수 있는바, 이에 대해서는 하기에 상세히 설명하기로 한다. 또한, 프리패치/프리디코드 유닛(12)은 분기 명령들을 검출하고, 상기 분기 명령들에 해당하는 분기 예측 정보를 분기 예측 유 닛(14)에 저장하도록 구성될 수 도 있다. 다른 실시예들은 임의의 적절한 프리디코드 방식을 활용할 수 있다.
가변 바이트 길이 명령 세트를 활용하는 프로세서(10)의 한 실시예에 있어서의 프리디코드 태그들의 한 인코딩에 관해 다음에 설명될 것이다. 가변 바이트 길이 명령 세트는 상이한 명령들이 상이한 수의 바이트들을 점유하는 명령 세트이다. 프로세서(10)의 일 실시예에의해 활용되는 예시적 가변 바이트 길이 명령 세트는 x86 명령 세트이다.
예시적 인코딩에서, 주어진 바이트가 명령의 제 1바이트인 경우, 상기 바이트에 대한 시작 비트가 세트된다. 만일 상기 바이트가 명령의 최종 바이트인 경우, 상기 바이트에 대한 종료 비트가 세트된다. 디코드 유닛들(20)로 직접 디코드되는 명령들은 "고속 경로(fast path)" 명령들로 간주된다. 일 실시예에 따르면, 나머지 x86 명령들은 MROM 명령들로 간주된다. 고속 경로 명령들에 있어서, 상기 기능 비트는 명령들에 포함되는 각 접두 바이트에 대해 세트되고, 다른 바이트들에 대해 클리어된다. 대안적으로, MROM 명령들에 대해서, 상기 기능 비트는 각 접두 바이트에 대해 클리어되고 다른 바이트들에 대해 세트된다. 상기 타입의 명령은 상기 종료 바이트에 해당하는 기능 비트를 검사함으로써 결정될 수 있다. 만일 상기 기능 비트가 클리어되면, 상기 명령은 고속 경로 명령이된다. 반대로, 만일 상기 기능 비트가 세트되면, 상기 명령은 MROM 명령이된다. 그로 인해, 명령의 오피코드(opcode)는 명령어 내에 직접 위치될 수 있는바, 이는 명령의 제 1클리어 기능 비트와 조합된 바이트로서, 디코드 유닛들(20)에의해 직접 디코드된다. 예를 들어, 2개의 접두 바이트들을 가지는 고속 경로 명령, Mod R/M 바이트, 그리고 즉시(immediate) 바이트는 다음과 같은 시작, 종료 그리고 기능 비트들을 가질 수 있다.
기능 비트들 10000
종료 비트들 00001
기능 비트들 11000
하나의 특정 실시예에 따르면, 스케일-인덱스-기반 (scale-index-base: SIB)바이트는 MROM 유닛(34)에 장점적이다. 이러한 실시예에 있어서, 만일 명령이 오피코드 바이트 이후 적어도 2개의 바이트를 포함하고 있으면, Mod R/M 바이트에 대한 기능 비트는 SIB 바이트의 존재를 표시한다. 만일 Mod R/M 바이트에 대한 기능 비트가 세트(set)되면 SIB 바이트가 존재한다. 반대로, 만일 Mod R/M 바이트에 대한 기능 비트가 클리어(clear)되면 SIB 바이트는 존재하지 않는다.
MROM 명령들은 디코드 유닛(20)이 디코딩하기에는 너무 복잡한 것으로 판단되는 명령들이다. MROM 명령들은 MROM 유닛(34)을 동작시킴으로써 실행된다. 보다 구체적으로, MROM 명령을 수신하면, MROM 유닛(34)은 그 명령을 서브세트의 정의된 고속 경로 명령들로 구문분석하여 송출함으로써 원하는 동작이 이루어지도록 한다. MROM 유닛(34)은 상기 서브세트의 고속 경로 명령들을 디코드 유닛(20)에 송출한다.
일 실시예에서, MROM 유닛(34)은 명령이 목적지의 일부분만을 갱신할때를 검출한다. MROM 유닛(34)이 그러한 명령 및 이 명령에 의해 갱신되지 않은 목적지의 부분을 검출하게되면, 상기 명령의 실행에 앞서 목적지의 판독이 수행되게 된다. 목적지 내용들은 이후에 상기 명령 결과와 병합된다. 다른 한편으로, MROM 유닛(34)이 목적지의 일부분만을 갱신하는 명령을 검출하고 그리고 상기 명령에 의해 갱신되지 않은 상기 목적지의 부분이 상기 명령에 의해 요구되지 않는 것으로 검출될때, 상기 목적지의 판독은 수행되지 않는다.
프로세서(10)는 다음의 조건 분기 명령들에 후속하는 명령을 투기적으로 패치하기 위해서 분기 예측을 활용할 수 있다. 분기 예측 유닛(14)은 분기 예측 연산들을 수행하기 위해 포함된다. 일 실시예에서, 분기 예측 유닛(14)은 최대 두개의 분기 타겟 어드레스들과 명령 캐시(16)에서 한 캐시 라인의 각 16바이트 부분당 대응 채택(taken)/비 채택(not taken) 예측들을 캐시하는 분기 타겟 버퍼를 활용한다. 예를 들어 분기 타겟 버퍼는 2048 엔트리(entry)들 또는 다른 적당한 수의 엔트리들로 구성된다. 프리패치/프리디코드 유닛(12)은 특정 라인이 프리디코드되는 경우 초기 분기 타겟들을 결정한다. 상기 캐시 라인 내부에서 명령들을 수행하기 때문에 캐시 라인에 해당하는 상기 분기 타겟들이 후속적으로 갱신된다. 명령 캐시(16)는 패치되는 명령 어드레스의 표시를 제공하며, 그로인해 분기 예측 유닛(14)은 분기 예측을 구성하기위해 어떤 분기 타겟 어드레스들을 선택할지 판단할 수 있다. 디코드 유닛들(20)과 기능 유닛들(24)은 분기 예측 유닛(14)에 갱신 정보를 제공한다. 디코드 유닛들(20)은 분기 예측 유닛(14)에의해 예측되지 않는 분기 명령들을 검출한다. 기능 유닛(24)은 상기 분기 명령들을 실행하고, 상기 예측된 분기 방향이 부정확한 지를 결정한다. 상기 분기 방향은 "채택"으로 될 수 있 는데, 이때, 후속 명령들은 상기 분기 명령의 타겟 어드레스로부터 패치된다. 반대로, 상기 분기 방향은 "비 채택"으로 될 수 있는데, 이때, 후속 명령들은 상기 분기 명령의 연속적 메모리 위치에서 패치된다. 잘못 예측된 분기 명령이 검출되면, 상기 예측 실패된 분기에 대한 후속 명령들은 프로세서(10)의 다양한 유닛들로부터 버려진다. 대안적인 구성에 있어서, 분기 예측 유닛(14)은 디코드 유닛들(20)과 기능 유닛들(24) 대신 재배열 버퍼(32)와 결합될 수 있고, 재배열 버퍼(32)로부터 예측 실패된 분기 정보를 수신 할 수 있다. 다양하고 적절한 분기 예측 알고리즘들이 분기 예측 유닛(14)에의해 활용될 수 있다.
명령 캐시(16)로부터 패치된 명령 바이트들은 명령 정렬 유닛(18)으로 전송된다. 명령들이 명령 캐시(16)로부터 패치되면, 해당하는 프리디코드 데이터는 패치되는 명령들에 관한 정보를 명령 정렬 유닛(18)에(그리고, MROM 유닛(34)에)제공하기위해서 검색된다. 명령 정렬 유닛(18)은 명령들을 각 디코드 유닛들(20)에 정렬시키는 상기 검색 데이터를 이용한다. 일 실시예에서, 명령 정렬 유닛(18)은 8개 명령 바이트들의 3개 세트로부터의 명령들을 디코드 유닛들(20)에 정렬시킨다. 디코드 유닛(20A)은 디코드 유닛들(20B와 20C)로부터 동시에 수신되는 명령들에 우선하는 명령을 수신한다(프로그램 순서에 따름). 유사하게, 디코드 유닛(20B)은 프로그램 순서에 따라 디코드 유닛(20C)으로부터 동시에 수신되는 명령에 우선하는 명령을 수신한다.
디코드 유닛들(20)은 명령 정렬 유닛(18)으로부터 수신된 명령들을 디코드하도록 구성된다. 레지스터 피연산자 정보가 검출되고, 레지스터 파일(30) 및 재배열 버퍼(32)로 전달된다. 부가적으로, 만일 상기 명령들이 수행을 위해 하나 이상의 메모리 연산들을 요구하면, 디코드 유닛들(20)은 상기 메모리 연산들을 로드/저장 유닛(26)으로 디스패치한다. 각 명령은 기능 유닛들(24)에 대한 제어값들의 세트로 디코드되고, 이러한 제어값들은 피연산자 어드레스 정보 및 상기 명령이 포함될 수 있는 변위 혹은 즉시 데이터와 함께 예약 스테이션들(22)로 디스패치된다. 특정 일 실시예에 있어서, 각 명령은 기능 유닛들(24A-24C)에 의해 개별적으로 실행될 수 있는 최대 두개의 피연산자들로 디코드된다.
프로세서(10)는 순서를 벗어난 실행을 지원하고, 그래서 레지스터 판독 및 기록 동작을 위한 원래 프로그램 순서를 따르며, 레지스터 변경(renaming)을 실행하고, 투기적 명령 수행 및 분기 예측 실패를 복구하고, 그리고 정밀한 예외(precise exception)들을 용이하게 하도록 재배열 버퍼(32)를 활용한다. 재배열 버퍼(32) 내의 임시 저장 위치가 레지스터의 갱신을 수반하는 명령의 디코드시에 예약됨으로써 투기적 레지스터 상태를 저장하게된다. 만일 분기 예측이 정확하지 않다면, 상기 잘못 예측된 경로를 따라 투기적으로 실행된 명령들의 결과는 이들이 레지스터 파일(30)에 기록되기 전에 상기 재배열 버퍼(32)에서 무효화 된다. 유사하게, 만일 특정 명령이 예외를 유발하면, 상기 특정 명령에 후속하는 명령들은 폐기될 수 있다. 이러한 방식으로, 예외들은 "정밀"하게 된다(즉, 예외를 유발하는 특정 명령에 후속하는 명령들은 그 예외 전에 완결되지 않는다). 주목할 사항으로, 만일 특정 명령이 프로그램 순서상 상기 특정 명령에 선행하는 명령 보다 먼저 실행되면 상기 특정 명령은 투기적으로 실행된다. 선행 명령들은 분기 명령이거나 예외-유발 명령일 수 있고, 이러한 경우, 상기 투기적 결과는 재배열 버퍼(32)에 의해 폐기될 수 있다.
상기 디코드 유닛들(20)의 출력에서 제공되는 명령 제어 데이터와 즉시 또는 변위 데이터는 개별적인 예약 스테이션들(22)로 직접 전달된다. 일 실시예에서, 각 예약 스테이션(22)은 해당 기능 유닛에 발부(issue)되기를 대기하는 최대 6개의 진행 명령들에 대해 명령 정보(즉, 명령 제어 값들, 피연산자 값들, 피연산자 태그들 그리고/또는 즉시 데이터)를 유지할 수 있다. 주목할 사항으로, 상기 도 2의 실시예에서, 각 예약 스테이션(22)은 전용 기능 유닛(24)과 결합된. 따라서, 세개의 전용 "발부 지점(issue position)들"은 예약 스테이션들(22)과 기능 유닛들(24)로 형성된다. 다시 말해서, 발부 지점(0)은 예약 스테이션(22A) 및 기능 유닛(24A)으로 형성된다. 예약 스테이션(22A)으로 정렬되고 디스패치되는 명령들은 기능 유닛(24A)에 의해 실행된다. 유사하게, 발부 지점(1)은 예약 스테이션(22B) 및 기능 유닛(24B)으로 형성되고, 발부 지점(2)은 예약 스테이션(22C) 및 기능 유닛(24C)으로 형성된다.
특정 명령의 디코드 하에서, 만일 요구된 피연산자가 레지스터 위치라면, 레지스터 어드레스 정보는 재배열 버퍼(32) 및 레지스터 파일(30)로 동시에 전송된다. 당업자라면, 상기 x86 레지스터 파일이 8개의 32비트의 실제 레지스터들(즉, 전형적으로 EAX, EBX, ECX, EDX, EBP, ESI, EDI 그리고 ESP로 간주됨)을 포함한다는 것을 이해할 수 있을 것이다. 상기 x86 프로세서 구조를 채용한 프로세서(10)의 실시예들에서, 레지스터 파일(30)은 상기 32비트의 실제 레지스터들 각각의 저장 위치들을 포함한다. 부가적인 저장 위치들은 MROM 유닛(34)에 의한 사용을 위해 레지스터 파일(30) 내에 포함될 수 있다. 재배열 버퍼(32)는 이러한 레지스터들의 내용을 변경하는 결과들을 저장하기 위한 임시 저장 위치들을 포함함으로써, 순서를 벗어난실행을 허용한다. 디코드시, 상기 실제 레지스터들 중 하나의 내용을 변경하도록 결정된 각 명령에 대해 재배열 버퍼(32)의 임시 저장 위치가 예약된다. 그래서, 특정 프로그램의 실행 중 다양한 지점들에서, 재배열 버퍼(32)는 주어진 레지스터에 대해 투기적으로 실시되는 내용을 포함하는 하나 이상의 위치들을 가질 수 있다. 만일 명령의 디코드 이후에 재배열 버퍼(32)가 상기 주어진 명령에서 피연산자로 사용된 레지스터에 할당되된 이전위치(들)를 가지면, 재배열 버퍼(32)는 1)가장 최근에 할당된 위치의 값, 또는 2)만일 상기 값이 상기 이전 명령을 궁극적으로 실행할 상기 기능 유닛에 의해 생성되지 않았으면 상기 가장 최근에 할당된 위치에 대한 태그를 상기 해당 예약 스테이션으로 보낸다. 만일 재배열 버퍼(32)가 주어진 레지스터에 대해 예약된 위치를 가지면, 상기 피연산자 값(또는 재배열 버퍼 태그)은 레지스터 파일(30)이 아닌 재배열 버퍼(32)로부터 제공된다. 만일 재배열 버퍼(32)에서 어떤 요청된 레지스터에 대해 예약된 위치가 없는 경우, 상기 값은 레지스터 파일(30)에서 직접 취해진다. 만일 상기 피연산자가 메모리 위치에 해당하면, 상기 피연산자 값은 로드/저장 유닛(26)을 통해 상기 예약 스테이션에 제공된다.
특정한 일 실시예에서, 재배열 버퍼(32)는 동시에 디코드된 명령들을 한 단위로 저장 및 취급하도록 구성된다. 이러한 구성은 여기서 "라인-지향(line- oriented)"으로 간주될 것이다. 여러개의 명령들을 함께 취급함으로써, 재배열 버퍼(32) 내에 적용되는 하드웨어는 단순화 될 수 있다. 예를 들어, 본 실시예에 포함되는 라인-지향 재배열 버퍼는 하나 이상의 명령들이 디코드 유닛들(20)에 의해 디스패치될 때마다 3개의 명령들에 속하는 명령 정보에 대해 충분한 저장부를 할당한다. 반면에, 통상적인 재배열 버퍼들에서는 실질적으로 디스패치되는 명령들의 수에 따라 가변적인 양의 저장부가 할당된다. 가변 저장부를 할당하는데 비교적 많은 수의 논리 게이트들이 필요할 수 있다. 동시적으로 디코드된 명령들 각각이 실행되는 경우, 상기 명령의 결과들은 동시에 레지스터 파일(30)에 저장된다. 그 다음, 상기 저장부는 동시에 디코드된 다른 세트의 명령들로의 할당을 위해 비워진다. 부가적으로, 명령당 적용되는 제어 논리 회로부의 양은 줄어드는데, 그 이유는 제어 논리가 동시에 디코드된 몇몇 명령들에 대해 상각(amortize)되기 때문이다. 특정 명령을 식별하는 재배열 버퍼 태그는 두개의 필드들로 분리될 수 있는데, 라인 태그와 오프셋(offset) 태그가 그것들이다. 상기 라인 태그는 특정 명령을 포함하는 동시적으로 디코드된 명령들의 세트를 식별하고, 상기 오프셋 태그는 상기 특정 명령에 해당하는 세트 내부의 명령을 식별한다. 주목할 사항으로, 레지스터 파일(30)에 명령의 결과들을 저장하고 해당 저장부를 공백상태로 하는 것을 명령들을 "퇴거(retiring)"하는 것으로 언급하기로 한다. 또한 주목할 사항으로, 임의의 재배열 버퍼 구성이 프로세서(10)의 다양한 실시예들에 활용될 수 있다.
전술한 바와 같이, 예약 스테이션들(22)은 명령들이 해당 기능 유닛(24)에 의해 실행되기까지 명령들을 저장한다. 만일 (i)명령의 피연산자들이 제공되는 경 우, 그리고 (ii) 동일한 예약 스테이션(22A-22C) 내에 있으며 상기 명령에 우선하는 명령들에 대해 상기 피연산자들이 아직 제공되지 않은 경우, 어떤 명령이 실행을 위해 선택된다. 주목할 사항으로, 어떠한 명령이 상기 기능 유닛들(24) 중 하나에 의해 실행되는 경우, 그 명령의 결과는 상기 결과가 재배열 버퍼(32)를 갱신하도록 전달되는 것과 동시에 상기 결과를 기다리는 임의의 예약 스테이션들(22)로 직접 전달한다(이러한 기법을 일반적으로 "결과 포워딩(result forwarding)"으로 간주한다). 상기 관련된 결과가 포워드되는 클럭 주기 동안 어떤 명령이 실행을 위해 선택되어 기능 유닛(24A-24C)으로 전달된다. 이러한 경우, 예약 스테이션들(22)은 상기 포워드되는 결과를 상기 기능 유닛(24)으로 전달한다. 기능 유닛들(24)에 의해 실행되도록 명령들이 다중 동작들로 디코드되는 실시예들에서, 상기 동작들은 각각 개별적으로 스케쥴될 수 있다.
일 실시예에 있어서, 각 기능 유닛들(24)은 덧셈과 뺄샘의 정수 산술 연산 뿐만 아니라 쉬프트, 순환(rotate), 논리 연산, 그리고 분기 연산들을 수행하도록 구성된다. 상기 동작들은 디코드 유닛들(20)을 이용하여 특정 명령에 대해 디코드되는 제어 값들에 응답하여 수행된다. 부동 소숫점 연산들을 수행하기위해 부동 소숫점 연산(미도시)이 역시 적용될 수 있다. 상기 부동 소숫점 유닛은 코프로세서(coprocessor)로서 동작될 수 있으며, MROM 유닛(34) 또는 재배열 버퍼(32)로부터 명령들을 수신하고, 명령들을 완료하기 위해 재배열 버퍼(32)와 순차적으로 통신한다. 부가적으로, 기능 유닛들(24)은 로드/저장 유닛(26)에 의해 수행되는 로드 및 저장 메모리 동작들을 위한 어드레스 생성을 수행하도록 구성될 수 있다. 특정 일 실시예에 있어서, 각 기능 유닛(24)은 어드레스들의 생성을 위한 어드레스 생성 유닛과 나머지 기능들을 수행하기 위한 실행 유닛을 포함할 수 있다. 이들 두 유닛들은 한 클럭 주기 동안 상이한 명령들 또는 연산들 하에서 독립적으동작을 수행할 수 있다.
각 기능 유닛들(24)은 또한 조건 분기 명령들의 실행에 관한 정보들을 상기 분기 예측 유닛(14)에 제공한다. 만일 분기 예측이 틀리다면, 분기 예측 유닛(14)은 잘못 예측된 분기에 후속하는 명령 처리 파이프라인에 인가된 명령들을 플러싱(flush)하고, 명령 캐시(16) 또는 주 메모리로부터 상기 요구된 명령들이 패치 되도록 한다. 주목할 사항으로, 이러한 경우 상기 잘못 예측된 분기 명령 후 발생하는 (투기적으로 실행되고 로드/저장 유닛(26)과 재배열 버퍼(32)에 임시적으로 저장된 것들을 비롯한)원래 프로그램 절차에서의 명령들의 결과들은 모두 버려진다. 또한 주목할 사항으로, 기능 유닛들(24)에 대한 분기 예측 실패를 나타내는 분기 실행 결과들이 기능 유닛들(24)에서 재배열 버퍼(32)로 제공될 수 있다.
기능 유닛들(24)에 의해 생성되는 결과들은, 만일 레지스터 값이 갱신되면, 재배열 버퍼(32)로 전달되고, 만일 상기 메모리 위치의 내용들이 변경되면 로드/저장 유닛(26)으로 전달된다. 만일 상기 결과가 레지스터에 저장되면, 재배열 버퍼(32)는 상기 명령이 디코드되었을때 상기 레지스터 값에 대해 예약된 위치에 상기 결과를 저장한다. 다수의 결과 버스들(38)이 기능 유닛들(24)과 로드/저장 유닛(26)으로부터의 결과들을 전송하도록 포함된다. 결과 버스들(38)은 생성된 결과들 및 상기 명령이 실행됨을 식별하는 재배열 버퍼 태그를 전달한다.
로드/저장 유닛(26)은 기능 유닛들(24)과 데이터 캐시(28) 간에 인터페이스를 제공한다. 일 실시예에서, 로드/저장 유닛(26)은 데이터 캐시(28)의 엑세스 되지 않은 계류중인 로드들과 저장들에 대한 데이터 및 어드레스 정보의 저장 위치들을 가지는 제 1로드/저장 버퍼와, 데이터 캐시(28)에 엑세스된 로드들과 저장들에 대한 데이터 및 어드레스 정보의 저장 위치들을 가지는 제 2로드/저장 버퍼로 구성된다. 예를 들어, 상기 제 1버퍼는 12개의 위치들을 포함할 수 있으며, 제 2버퍼는 32개 위치들을 포함할 수 있다. 디코드 유닛들(20)은 상기 로드/저장 유닛(26)에 대한 엑세스를 중재한다. 상기 제 1버퍼가 가득 차면, 디코드 유닛들(20)은 로드/저장 유닛(26)이 계류중인 로드 또는 저장 요청 정보에 대한 공간을 가질 때 까지 대기한다. 또한, 로드/저장 유닛(26)은 데이터 코히어런시(coherency)가 유지되도록 계류중인 저장 메모리 동작들에 대한 로드 메모리 동작들의 종속성 검사를 실시한다. 메모리 동작은 프로세서(10)와 상기 주 메모리 하부 시스템간의 데이터 전송이다. 메모리 동작들은 메모리에 저장된 피연산자를 이용하는 명령의 결과일 수 있거나, 다른 동작 없이 상기 데이터의 전달만을 유발하는 로드/저장 명령의 결과일 수 있다. 부가적으로, 로드/저장 유닛(26)은 세그먼트 레지스터들 그리고 상기 x86 프로세서 구조로 정의되는 어드레스 전달 메커니즘에 관련된 다른 레지스터들과 같은 특별한 레지스터 저장부를 포함할 수 있다.
데이터 캐시(28)는 로드/저장 유닛(26)과 상기 주 메모리 하부 시스템간에 전송되는 데이터를 임시적으로 저장하기 위해 제공되는 고속 캐시 메모리이다. 일 실시예에서, 데이터 캐시(28)는 2-웨이 세트 연관적 구조로 최대 64킬로바이트까지 저장할 수 있는 용량을 가진다. 데이터 캐시(28)는 세트 연관적 구성, 완전 연관적 구성, 직접-맵핑된 구성, 그리고 임의의 적절한 크기의 다른 구성을 포함하는 다양한 특정 메모리 구조들에 적용될 수 있다는 것을 이해할 수 있을 것이다.
x86 프로세서 구조를 적용한 프로세서(10)의 특정 일 실시예에서, 명령 캐시(16) 및 데이터 캐시(28)는 선형으로 어드레스되고 물리적으로 태그된다. 상기 선형 어드레스는 명령으로 특정되는 오프셋과 x86 어드레스 변환 메커니즘의 세그먼트 부분으로 특정되는 기본 어드레스로부터 형성된다. 선형 어드레스들은 주 메모리에 엑세스하기 위해 물리적인 어드레스들로 선택적으로 변환될 수 있다. 상기 선형 어드레스를 물리적 어드레스로 변환하는 것은 x86 어드레스 변환 메커니즘의 페이징 부분으로 특정된다. 상기 물리적 어드레스는 적중/적중실패 상태를 결정하기 위해 상기 물리적 태그들과 비교된다.
버스 인터페이스 유닛(37)은 버스를 통해 프로세서(10)와 컴퓨터 시스템의 다른 구성원들이 서로 통신하도록 구성된다. 예를 들어, 상기 버스는 디지털 이퀴프먼트 코포레이션에의해 개발된 EV-6 버스와 호환될 수 있다. 대안적으로, 패킷-기반, 단방향 또는 양방향 링크들 등을 포함하는 임의의 적절한 내부결합 구조가 사용될 수 있다. 선택적 L2 캐시 인터페이스 역시 레벨 2캐시에 대한 인터페이싱을 위해 적용될 수 있다.
도 2에서, 디코드 유닛(20A), 예약 스테이션(22A), 기능 유닛(24A), 레지스터 파일(30), 재배열 버퍼(32), MROM(34), 그리고 로드/저장 유닛(26)의 블록 다이어그램이 도시된다. 상기 유닛들 간의 상호결합은 마이크로프로세서(10)의 일 실시 예에 따라 도시된다. 다른 실시예들은, 다른 상호결합을 활용할 수 있으며, 부가적인 상호결합이 다른 목적을위해 사용될 수 있다. 디코드 유닛들(20B-20C), 예약 스테이션들(22B-22C), 기능 유닛들(24B-24C), 그리고 도 2에 도시된 나머지 구성원들 사이의 상호결합도 마찬가지이다.
디코드 유닛(20A)은 명령 정렬 유닛(18)으로부터 명령을 수신한다. 디코드 유닛(20A)은 상기 명령에 사용되는 피연산자들을 검출하고 상기 레지스터 피연산자들의 표시들을 피연산자 요청 버스(50A)를 통해 재배열 버퍼(32)와 레지스터 파일(30)로 전달한다. 레지스터 포인터들이 전달되며, 상기 피연산자의 소스 그리고/또는 목적지 속성이 식별된다. 부가적으로, 디코드 유닛(20A)은 버스(82)를 통해 디코드된 명령을 예약 스테이션(22A)으로 전달하고 버스(84)를 통해 피연산자 크기 정보를 예약 스테이션(22A)으로 전달한다. 상기 설명된 고속 경로 명령들에서, 최대 두개의 소스 피연산자들이 식별될 수 있고, 이들 중 하나는 목적지 피연산자가 될 것이다. 즉시 데이터는 직접 버스(51A)를 통해 재배열 버퍼(32)로 전달된다. 재배열 버퍼(32)는 피연산자 데이터 버스(58A)를 통해 즉시 데이터를 중계(relay)한다. 대부분의 x86 명령은 제 2레지스터 피연산자 혹은 즉시 데이터 중 하나를 특정할 뿐, 둘다를 특정하지는 않는다. 그래서, 제 2레지스터 피연산자 값을 전달하는데 사용되는 피연산자 데이터 버스(58A)의 일부는 직접 데이터를 전달하는데 사용될 수 있을 것이다. 분기 명령에 있어서, 상기 프로그램 카운터 어드레스, 오프셋, 그리고 예측된 목표 어드레스는 피연산자 데이터 버스(58A)를 통해 전달될 수 있다.
부가적으로, 디코드 유닛(20A)은 상기 명령에 관련된 특정 정보를 명령 버스(52A)를 통해 재배열 버퍼(32)로 전달한다. 또한, 명령이 소스 피연산자를 제외한 목적지 레지스터의 일부분만을 갱신함을 디코드 유닛(20A)이 검출하면, 디코드 유닛(20A)은 목적지에 대한 피연산자 요청을 상기 명령의 소스 피연산자들 중 하나로서 상기 재배열 버퍼(32)와 레지스터 파일(30)에 전달한다. 다른 한편으로, 만일 디코드 유닛(20A)이 명령 목적지가 또한 소스 피연산자인 것으로 검출하면, 목적지가 상기 소스 피연산자들 중 하나로서 이미 요청되었기 때문에 부가적인 피연산자 요청은 요구되지 않는다. 부가적으로, 디코드 유닛(20A)은 명령에의해 특정되는 로드/저장 메모리 동작들을 검출한다. 상기 메모리 동작의 표시는 로드/저장 인터페이스(54)를 통해 로드/저장 유닛(26)으로 전달된다. 부가적으로, 로드/저장 유닛(26)은 피연산자 크기 정보를 수신할 수 있다. 저장을 위해서, 로드/저장 유닛(26)은 저장될 바이트들의 수에 대한 표시를 수신할 수 있다. 로드를 위해서, 로드/저장 유닛(26)은 메모리로부터 로드될 바이트들의 수에 대한 표시를 수신할 수 있다. 로드/저장 유닛(26)이 단지 레지스터 일부인 피연산자 데이터의 양을 크기에 맞게 로드하기위한 지시를 수신하는 경우, 상기 로드된 데이터는 전달되는 데이터가 크기에 맞는 레지스터 일부분만을 포함한다는 지시와 함께 예약 스테이션(22A)과 재배열 버퍼(32)로 포워드된다. 이어서, 로드/저장 유닛(26)에의해 예약 스테이션(22A)으로 전달되는 상기 데이터는 상기 레지스터의 크기에 해당하는 데이터를 형성하기위하여 기능 유닛(24A)에의해 레지스터 피연산자 데이터와 병합된다.
로드/저장 유닛(26), 예약 스테이션(22A), 디코드 유닛(20A) 그리고 기능 유닛(24A)은 명령 피연산자들의 크기를 인지하고 있는 동안, 마이크로프로세서의 다른 부분들은 피연산자 크기를 고려할 필요가 없다. 상기 마이크로프로세서의 다른 부분들은 모든 데이터를 32비트로 처리하는 것이 바람직하다. 예를 들어, 디코드 유닛(20A)이 피연산자 요청들을 재배열 버퍼(32)와 레지스터 파일(30)로 전달하는 경우, 재배열 버퍼(32)와 레지스터 파일(30) 모두는 이러한 모든 요청들을 32비트 데이터에 대한 요청들로 처리한다. 재배열 버퍼(32) 또는 레지스터 파일(30) 중 어디에도 요청되는 피연산자들의 크기에 대한 임의의 표시가 주어지지 않는다. 결과적으로, 명령 피연산자 요청의 가변 크기를 식별하기위해 상기 마이크로프로세서의 다른 부분들에 요구되는 부가적인 회로부가 필요없으므로 회로부는 대단히 간단해진다. 또한, 상기 재배열 버퍼 내부의 모든 데이터가 32비트로 처리되기 때문에, 상기 재배열 버퍼 내부의 종속성 검사 회로 역시 대단히 간단해진다.
전술한 바와 같이, 로드/저장 유닛(26)은 크기 정보를 수신하고 그 정보에 따라 동작한다. 부가적으로, 예약 스테이션(22A)과 기능 유닛(24A)은 피연산자 정보를 수신한다. 명령이 목적지의 일부분만을 갱신하고 상기 목적지는 소스 피연산자가 아닌 경우를 예약 스테이션(22A)이 검출하면, 예약 스테이션은 3개의 피연산자들이 도달할 때까지 실행을 위해 상기 명령을 선택하지 않는다. 상기 명령에의해 요구되는 피연산자들 중 2개는 소스 피연산자들이며, 3번째 피연산자는 상기 명령의 실행 이전에 상기 목적지 레지스터의 내용들을 포함하는 목적지 피연산자이다. 이러한 피연산자들을 수신한 다음, 상기 소스 피연산자와 목적지 피연산자는 기능 유닛(24A)으로 전달된다. 상기 명령의 실행에 후속하여, 기능 유닛(24A)은 상기 실행 결과들을 이하 설명될 이전 목적지 피연산자 데이터와 병합한다.
명령이 목적지의 일부분만을 갱신하고 상기 목적지는 명령의 소스 피연산자이기도 한 경우를 예약 스테이션(22A)이 검출하면, 상기 명령의 실행을 위해서 단 2개의 피연산자들 만이 필요하다. 상기 명령의 두 소스 피연산자들을 수신한 다음, 예약 스테이션(22A)은 상기 소스 피연산자를 기능 유닛(24A)으로 전달한다. 명령의 실행에 후속하여, 기능 유닛(24A)은 실행 결과들을 이하 설명될 목적지 피연산자의 피연산자 데이터와 병합한다.
피연산자 요청 버스(50A)를 통해 전달된 상기 피연산자들에 응답하여, 레지스터 파일(30)은 레지스터 피연산자 버스(56)를 통해 레지스터 피연산자 값들을 재배열 버퍼(32)로 전달한다. 상기 전달된 레지스터 값들은 레지스터 파일(30)에 저장된 값들(즉, 재배열 버퍼(32)에의해 이전에 퇴거된 명령에 따라 생성된 값들)을 포함한다. 만일 재배열 버퍼(32)가 레지스터를 목적지 피연산자로 사용하는 명령에 해당하는 정보를 저장하고 있지 않다면, 레지스터 파일(30)에의해 제공되는 값은 상기 명령을 수신하는 예약 스테이션(22A-22C)으로 전달된다. 예를 들어, 예약 스테이션(22A)으로 전달되는 명령에 해당하는 레지스터 값은 피연산자 데이터 버스(58A)에의해 전달될 수 있다.
대안적으로, 재배열 버퍼(32)는 요청된 레지스터를 갱신하는 명령에 관한 정보를 저장하고 있을 것이다. 만일 상기 명령이 실행되었고 명령 결과들이 제공되었다면, 피연산자 레지스터 파일(30)에의해 제공되는 레지스터 값 대신에 상기 결과 들이 데이터 버스(58A)를 통해 전달된다. 만일 상기 명령이 아직 실행되지 않았으면, 재배열 버퍼(32) 내부의 명령에 위치하는 상기 재배열 버퍼 태그는 피연산자 태그들 버스(60A)를 통해 전달된다. 하나의 피연산자 데이터 값과 하나의 피연산자 태그는 각각 피연산자 데이터 버스(58A)와 피연산자 태그들 버스(60A)를 통해 상기 명령의 각 피연산자들을 위해 제공된다. 부가적으로, 재배열 버퍼(32)에 의해 각 데이터와 태그 값에 대한 유효 표시자(validity indicator)들이 표명되고, 그로인해 예약 스테이션(22A)은 무엇이 특정 피연산자(예를 들어, 데이터 또는 재배열 버퍼 태그)를 위해 제공될 것인지를 인지하게된다.
피연산자 값들과 태그들의 제공에 부가적으로, 재배열 버퍼(32)는 명령 태그 버스(62A)를 통해 예약 스테이션(22A)으로 디스패치되는 명령에 대한 명령 태그를 제공한다. 상기 명령 태그는 상기 명령에 관련된 정보를 저장하는 재배열 버퍼(32) 내부의 저장 위치를 식별한다. 상기 명령이 실행되면 상기 명령 태그는 결과 버스(38A)(도 1에 도시된 결과 버스들(38) 중 하나)를 통해 전달되고, 그로인해 해당 명령 결과는 재배열 버퍼(32) 내부에 저장될 수 있다. 일 실시예에서, 명령 태그 버스(62A)는 명령 정보를 저장하는 저장부의 라인을 식별하는 라인 태그를 전달한다. 상기 오프셋 태그는 명령이 전달되는 발부 위치의 고유한 상수이다. 다시 말하면, 기능 유닛(24A)은 특정 오프셋에서 재배열 버퍼(32)의 저장부 라인들에 항상 저장되는 결과들을 제공한다.
상기 피연산자 값들과 명령에 해당하는 태그들의 저장에 부가적으로, 예약 스테이션(22A)은 디코드 유닛(20A)에의해 제공되는 디코드된 명령을 수신한다. 필 요시 목적지 피연산자의 이전 값을 포함하는, 상기 명령에 해당하는 각 소스 피연산자 값들이 재배열 버퍼(32)에의해 제공되거나 혹은 결과 버스들(38)로부터 포획되는 경우, 상기 명령은 기능 유닛(24A)에의하여 실행을 위해 선택된다. 실행을 위한 상기 명령의 선택에 있어서, 예약 스테이션(22A)은 디코드된 명령과 해당 피연산자들을 기능 유닛(24A)으로 전달한다.
기능 유닛(24A)은 예약 스테이션(22A)으로부터 수신된 명령을 실행하고, 그로부터 생성된 명령 결과에 부가적으로 명령에 해당하는 명령 태그를 결과 버스(38A)를 통해 전달한다. 일 실시예에서, 명령 태그는 명령이 실행을 개시하면 포워드되지만, 재배열 버퍼(32)는 후속 명령 실행의 클럭 주기까지 해당 명령 결과를 수신하지 않는다. 상기 명령 태그는 명령 실행 동안 변화되지 않기 때문에 이와 동일한 방식으로 포워드되는데, 여기서 상기 명령 결과는 반드시 기능 유닛(24A)에의해 생성된 후 포워드되어야만 한다. 주목할만한 사항으로, 결과 버스(38A)는 포워드된 결과들을 제공하기위해서 (도 1에 도시된 예약 스테이션(22A)과 같은)예약 스테이션(22A)과 또한 결합된다. 또한, 결과 버스(38A)는 로드/저장 유닛(26)과 결합된다. 기능 유닛(24A)은 거기서 실행되는 명령에의해 식별되는 메모리 동작의 논리적 어드레스를 결과 버스(38A)를 통해 로드/저장 유닛(26)에 제공한다.
부가적으로, 기능 유닛(24A)은 결과 버스(64A)를 통해 결과 상태를 재배열 버퍼(32)로 포워드한다. 상기 결과 상태는 상기 명령과 관련된 임의의 예외들을 지시하며, 그로인해 재배열 버퍼(32)는 적절한 보정 행위(corrective action)를 실시한다. 보정 행위들은 하드웨어 지원 보정, MROM 유닛(34) 내부의 마이크로코드 루 틴에 대한 트래핑(trapping), 또는 상기 명령을 위해 식별된 특정 어드레스에 저장된 소프트웨어 루틴에 대한 트래핑을 포함할 수 있다. 결과 상태 버스(64A)는 예측실패된 분기 명령의 실행을 표시하기위해 부가적으로 사용될 수 있다.
재배열 버퍼(32)는 로드/저장 메모리 동작들의 완료를 허용하기위해 로드/저장 유닛(26)과 인터페이스한다. 로드/저장 유닛(26)은 데이터 캐시(28)에 적중하는 로드 및 저장 메모리 동작들을 투기적으로 실행하도록 구성될 수 있다. (라인 태크와 오프셋 태그 부분들 모두를 포함하는 재배열 버퍼 태그에 따르는)로드 메모리 동작 결과는 LS 결과 버스(66)를 통해 재배열 버퍼(32)로 전달된다. 부가적으로, 상기 로드 결과들은 그에관한 피연산자들을 제공하기위해 예약 스테이션들(22)로 포워드된다. 일 실시예에서, 최대 2개의 결과들이 LS 결과들 버스(66)를 통해 제공될 수 있다.
로드/저장 유닛(26)은 데이터 캐시(28)에 적중실패하는 메모리 동작들을 투기적으로 수행하지 못하도록 구성될 수 있다. 재배열 버퍼(32)는 퇴거 포인트 버스(68)를 통해, 퇴거될 위치에 있지만은 아직 실행되지않은 메모리 명령들을 표시한다. 그 다음, 로드/저장 유닛(26)은 표시된 메모리 동작들을 수행하고 LS 결과 버스(66)를 통해 결과들을 돌려준다. 부가적으로, 로드/저장 유닛(26)은 종료(done) 버스(70)를 통해 해당 신호를 표명한다. 재배열 버퍼(32)는 퇴거 포인터들 버스(68)를 통해 표시되는 메모리 동작의 완료로서 표명된 종료 신호를 식별한다. 로드/저장 유닛(26)이 일 실시예에 따라서 최대 2개의 메모리 동작까지 동시적으로 수행할 수 있기 때문에, 퇴거 포인터 버스(68)는 최대 2개의 재배열 버퍼 태그들을 운반할 수 있다.
취소 버스(72)는 재배열 버퍼(32)와 로드/저장 유닛(26) 사이에 포함될 수 있다. 취소 버스(72)는 퇴거 포인터 버스(68)에 의해 전달되는 각 재배열 버퍼 태그에 대한 신호를 포함한다. 만일 해당 취소 신호가 표명되면, 재배열 버퍼(32)는 해당 메모리 동작이 재배열 버퍼(32)로부터 제거되었다는 것을 표시한다. 메모리 동작들은 이들이 예측실패된 분기 또는 예컨대 예외를 경험한 명령에 후속하는 경우 제거된다.
재배열 버퍼(32)는 MROM 인터페이스(74)를 통해 MROM 유닛(34)과 인터페이스한다. MROM 인터페이스(74)는 (비록 다른 동작들을 수행하는데도 사용될 수 있지만은 그 무엇보다도) 원래 명령 스트림에 대비되는 MROM 유닛(34)에서 비롯된 분기 명령들에 대한 예측실패에 대한 복구를 수행하기위해 사용된다. 만일 예측실패된 분기가 고려되고 상기 분기 명령이 MROM 유닛(34) 내부로부터 비롯되었다면, 재배열 버퍼(32)는 MROM 인터페이스(74)를 통해 MROM 유닛(34)에 통보한다. MROM 인터페이스(74)는 이러한 예측실패된 분기 명령들에 대한 분기 예측실패 복구를 수행한다.
명령들은 프로그램 순서에 따라 재배열 버퍼(32)로부터 퇴거된다. 퇴거에 따라서, 해당 레지스터 결과들은 퇴거 버스(78)를 통해 레지스터 파일(30)로 전달된다. 전술한 바와 같이, 저장부의 라인 내부의 명령들은 동시에 퇴거된다. 상기 명령들 중 하나 이상의 명령이 동일 레지스터를 갱신할 수 있기 때문에, 재배열 버퍼(32)는 라인 내 최종(Last in Line:LIL) 비트들로서 간주되는 각 라인 내부의 비트들의 세트를 활용할 수 있다. 상기 LIL 비트들은 특정 레지스터를 갱신하기위한 라인 내부에서 최종 명령인 각 명령에 대한 세트이다. 한 LIL 비트는 각 명령에 대해 포함된다.
최종적으로, 재배열 버퍼(32)는 명령 디스패치를 지연시키는 지연 라인(stall line)(80)을 활용한다. 명령 디스패치는 많은 이유로인해 지연되는데, 이에는 재배열 버퍼, 예약 스테이션, 또는 로드/저장 버퍼가 가득차는 조건들, 명령 직렬화(instruction serialization)등이 있다. 지연 조건의 검출에 있어서, 재배열 버퍼(32)는 지연 라인(80)을 통해 지연 신호를 표명한다. 만일 디코드 유닛(20A)이 클럭 주기 중 표명된 지연 신호를 수신하고 디코드 유닛(20A)이 명령의 디스패치를 시도하면, 디코드 유닛(20A)은 후속 클럭 주기동안 동일 명령을 제공한다. 이러한 방식으로, 특정 클럭 주기동안 디스패치될 수 없는 명령은 상기 지연 조건이 없어질때 까지 계속해서 반복디스패치된다.
일 실시예에서, 마이크로 프로세서의 범용 레지스터들은 8, 16, 32 비트 부분들로 갱신되거나 엑세스될 수 있는 32비트들을 포함한다. 예를 들어, x86 구조에서 EAX 레지스터는 32비트들을 포함한다. EAX의 하위 16비트들은 AX로서 참조되고, EAX의 하위 8비트들은 AL로 참조되며, AX의 상위 8비트들은 AH로 참조된다.
도 3에서, 기능 유닛(24A)의 일실시예의 블록 다이어그램을 도시하며, 상기 설명된 마이크로프로세서의 관점에서 설명될 것이다. 전술된 바와같이 참조될 수 있는 32비트 범용 레지스터는 예시적인 목적으로 사용된다. 다른 실시예들, 레지스터 크기들 그리고 레지스터 참조 방법들 역시 고려될 수 있다.
기능 유닛(24A)은 선택 논리부(202), 산술 논리 유닛(200), 그리고 멀티플렉서들(204, 206, 그리고 208)을 포함한다. 피연산자들 및 피연산자 정보는 기능 유닛(24A)에의해서, 버스들(212, 246 그리고 214)를 통해 예약 스테이션(22A)으로부터 수신되며, 이는 이하 설명된다. 부가적으로, 디코드된 명령 정보 및 피연산자 크기 정보는 예약 스테이션(22A)에의해서 기능 유닛(24A)으로 전달된다.
상기 명령 소스 피연산자들은 피연산자 버스들(246과 214)을 통해서 예약 스테이션(22A)으로부터 전달된다. 어떠한 경우에 있어서, 소스 피연산자들은 또한 목적지일 수도 있다. 디코드 유닛(20A)이 명령 결과 목적지가 상기 목적지 레지스터의 일부만이라는 것을 검출하면, 상기 목적지 레지스터의 내용들은 버스(212)을 통해 예약 스테이션(22A)으로부터 전달되고 상기 명령 결과 목적지의 크기 및 위치는 버스(210)를 통해 선택 논리부(202)로, 버스(216)를 통해 산술논리 유닛(200)으로 전달된다. 일 실시예에서, 상기 크기 정보는 결과 목적지가 8, 16, 또는 32 비트들이라는 것을 나타낸다. 상기 표시된 크기가 8비트라면, 상기 명령 결과 목적지가 상기 32비트 목적지 레지스터의 하위 16비트들 중 상위 또는 하위 8비트인지를 또한 표시한다.
전술한 바와 같이, 명령이 갱신을 위해 상기 목적지 레지스터의 일부만을 요구하며, 상기 목적지 레지스터가 소스 피연산자로서 사용되지 않는다는 것을 디코드 유닛(20A)이 검출하면, 디코드 유닛(20A)은 상기 목적지 레지스터에 대한 피연산자 요청을 재배열 버퍼(32)로 전달한다. 재배열 버퍼(32)는 상기 목적지 레지스터의 내용들을 버스(58A)를 통해 예약 스테이션(22A)으로 후속 전달한다. 예약 스 테이션(22A)은 상기 명령이 실행을 위해 선택될 때까지 명령 소스 및 목적지 피연산자들을 유지한다. 기능 유닛(24A)이 후속적으로 상기 명령을 실행하는 경우, 버스(212)를 통해 전달되는 상기 목적지 레지스터 데이터는 명령 실행의 결과와 병합되며, 이는 이하 설명된다.
반면에, 상기 목적지 레지스터가 소스 피연산자로 사용되고 상기 목적지의 일부만이 갱신된다는 것을 디코드 유닛(20A)이 검출하면, 상기 소스 피연산자 레지스터의 내용들은 예약 스테이션(22A)에의해서 버스들(212와 246)을 통해 전달된다. 해당 명령의 실행에 있어서, 소스 피연산자로서 사용되지 않는 소스 피연산자 레지스터 데이터부분은 상기 명령의 결과와 병합된다.
마지막으로, 만일 디코드 유닛(20A)이 전체 목적지 레지스터가 상기 디코드된 명령에의해 갱신된다는 것을 검출하면, 병합은 필요없다. 이러한 경우에서, 명령 실행 이후 버스(38A)를 통해 전달되는 값은 명령 결과 자체이다.
예약 스테이션(22A)이 수신된 명령에 요구되는 모든 피연산자를 검출하면, 상기 디코드된 명령 및 피연산자 정보는 실행을 위해 기능 유닛(24A)으로 전달된다. 상기 목적지 레지스터의 일부만이 갱신되면, 상기 목적지 레지스터의 내용들은 버스(212)를 통해 전달된다. 상기 목적지 레지스터의 상위 절반 내용들이 버스(218)을 통해 멀티플렉서(204)로 전달된다. 상기 목적지 레지스터의 하위 절반의 상위 부분이 버스(220)를 통해 멀티플렉서(206)로 전달되고 상기 목적지 레지스터의 하위 절반의 하위 부분이 버스(222)를 통해 멀티플렉서(208)로 전달된다.
상기 명령이 실행을 위해 선택되면, 산술 논리 유닛(200)은 예약 스테이션(22A)으로부터 수신되는 디코드된 명령을 실행한다. 실행 이전에, 소스 피연산자들은 필요하다면 적절히 정렬된다. 예를 들어, 만일 AH가 AL에 가산되어야 한다면, 피연산자들 모두는 이들이 함께 올바르게 가산되기위해서 상호간에 정렬될 것이다. 또한, 실행 결과들 역시 적절하게 정렬될 것이다. 만일 명령 목적지가 상기 목적지 레지스터의 하위 16비트들의 상위 8비트라면, 상기 실행된 명령의 결과는 버스(230)를 통해 전달되기 전에 좌측으로 8번 쉬프트된다. 이는 상기 결과가 버스(226)로 적절히 전달됨을 보장한다.
실행에 후속하여, 산술논리 유닛(200)으로부터 상기 명령 실행 결과(230)의 상위 절반이 버스(224)를 통해 멀티플렉서(204)로 전달된다. 상기 결과(230)의 하위 절반의 상위 부분은 버스(226)를 통해 멀티플렉서(206)로 전달되고 상기 결과(230)의 하위 부분은 버스(228)를 통해 멀티플렉서(208)로 전달된다.
선택 논리부(202)는 선택 신호들(240, 242, 그리고 244)을 각각 멀티플렉서들(204, 206, 그리고 208)에 제공한다. 버스(210)를 통해 수신된 목적지 크기 및 위치를 기반으로, 상기 선택 신호들은 각 멀티플렉서에 인가된 데이터의 어느부분들이 게이트 아웃(gate out) 될 것인지를 판단한다. 멀티플렉서(204, 206, 208)로부터의 이와같은 데이터의 게이트 아웃의 결과로 최종 결과가 형성되어, 기능 유닛(24A)으로부터 버스(38a)를 통해 운반된다.
명령의 목적지가 레지스터의 하위 절반의 하위 부분인 경우, 버스(218)의 내용들은 게이트 아웃되고, 버스(220)의 내용들이 게이트 아웃되며, 그리고 버스(228)의 내용들이 게이트 아웃된다. 상기 목적지가 하위 절반의 상위 부분인 경우, 버스(218)의 내용들이 게이트 아웃되고, 버스(226)의 내용들이 게이트 아웃되며, 버스(222)의 내용들이 게이트 아웃된다. 상기 목적지가 하위 절반이라면, 버스(218)의 내용들이 게이트 아웃되고, 버스(226)의 내용들이 게이트 아웃되며, 버스(228)의 내용들이 게이트 아웃된다. 마지막으로, 만일 목적지가 전체 레지스터라면, 버스들(224, 226, 그리고 228)이 게이트 아웃된다.
명령의 실행 이후, 버스들(232, 234 그리고 236)을 통해 전달된 데이터가 명령 실행의 결과로서 버스(38a)를 통해 전달된다. 이러한 방식으로, 명령 실행의 결과들과 이전 데이터는 명령의 결과로서 전달되는 데이터를 형성하기위해 병합된다. 이전 명령 결과를 소스로서 요구하는 후속 명령들은 이들의 소스로서 병합된 데이터를 수신한다.
도 4에서, 버스 브리지(402)를 통해 다양한 시스템 구성요소들과 결합되는 프로세서(10)를 포함하는 컴퓨터 시스템(400)의 일 실시예의 블록 다이어그램이 도시된다. 다른 실시예들이 가능하며 고려될 수 있다. 상기 시스템에서, 주 메모리(404)는 메모리 버스(406)를 통해 버스 브리지(402)와 결합되고, 그래픽 콘트롤러(408)는 AGP 버스(410)를 통해 버스 브리지(402)와 결합된다. 마지막으로 다수의 PCI 디바이스들(412A-412B)이 PCI 버스(414)를 통해 버스 브리지(402)와 결합된다. 보조(secondary) 버스 브리지(416)가 EISA/ISA 버스(420)를 통해서 하나 이상의 EISA 또는 ISA 디바이스들(418)과의 전기적 인터페이스를 수용할 수 있도록 더 제공된다. 프로세서(10)는 CPU 버스(424)를 통해 버스 브리지(402) 및 선택적 L2 캐시(428)와 결합된다.
버스 브리지(402)는 프로세서(10), 주 메모리(404), 그래픽 콘트롤러(408), 그리고 PCI 버스(414)에 부착된 디바이스들 간의 인터페이스를 제공한다. 버스 브리지(402)와 결합된 디바이스들 중 하나에서 동작이 수신되면, 버스 브리지(402)는 상기 동작의 타겟(예를들어, 특정 디바이스 또는 PCI 버스(414)의 경우, 그 타겟은 PCI 버스(414)에 있는 특정 디바이스임)를 식별한다. 버스 브리지(402)는 상기 동작을 상기 타겟 디바이스로 전달한다. 버스 브리지(402)는 일반적으로 소스 디바이스에 의해 사용되는 프로토콜 또는 상기 타겟 디바이스 혹은 버스에 의해 사용되는 프로토콜로부터 동작을 해석한다.
PCI 버스(414)를 위한 ISA/EISA 버스에 인터페이스를 제공하는데 부가적으로, 보조 버스 브리지(416)는 원하는 부가적인 기능을 더 포함할 수 있다. 보조 버스 브리지(416)의 외부 또는 내부적으로 포함되는 입/출력 콘트롤러(미도시) 역시 필요하다면 키보드 및 마우스(422) 그리고 다양한 직렬 및 병렬 포트들을 선택적으로 지원하도록 컴퓨터 시스템(400) 내에 포함될 수 있다. 외부 캐시 유닛(미도시)이 프로세서(10)와 버스 브리지(402) 간의 CPU 버스(424)에 더 결합될 수 있다. 대안적으로, 상기 외부 캐시는 버스 브리지(402)와 결합될 수 있고, 상기 외부 캐시에 대한 캐시 제어 논리부는 버스 브리지(402)에 집적될 수 있다. L2 캐시(428)는 프로세서(10)의 후면 구성에서 더 도시된다. L2 캐시(428)는 프로세서(10)와 분리되고, 프로세서(10)와 한 카트리지(예를들어 슬롯 1 또는 슬롯 A)에 집적되거나 심지어는 프로세서 컴퓨터(10)와 하나의 반도체 기판 상에 집적될 수 있다.
주 메모리(404)는 어플리케이션 프로그램들이 저장되고, 이로부터 프로세서 (10)가 우선적으로 실행하는 메모리이다. 적절한 주 메모리(440)에는 DRAM(동적 랜덤 엑세스 메모리)이 있다. 예를들어, 다수의 뱅크들의 SDRAM(동기 DRAM) 또는 램버스 DRAM(RDRAM)이 적절할 수 있다.
PCI 디바이스들(412A-412B)은 예를들어 네트워크 인터페이스 카드들, 비디오 가속기들, 오디오 카드들, 하드 또는 플로피 디스크 드라이브들 혹은 드라이브 콘트롤러들, SCSI(소형 컴퓨터 시스템 인터페이스) 어탭터들 그리고 전화기 카드들과 같은 다양한 주변 디바이스들의 예시이다. 유사하게, ISA 디바이스(418)는 모뎀, 음악 카드, 그리고 예를들어 GPIB 또는 필드 버스 인터페이스 카드들 같은 다양한 데이터 수집 카드들과 같은 다양한 종류의 주변 디바이스들의 예시이다.
그래픽 콘트롤러(408)는 표시부(426) 상에 문자나 그림들의 표시를 제어하기위해 제공된다. 그래픽 콘트롤러(408)는 당 업계에서 잘 알려진 바와 같이 3차원 데이터 구조들을 주 메모리(404)로/이로부터 효율적으로 이동시킬 수 있도록 한 전형적인 그래픽 가속기로 구체화 될 수 있다. 그래서 그래픽 콘트롤러(408)는 AGP 버스(410)의 마스터일 수 있고, 즉, 버스 브리지(402) 내의 목표 인터페이스에 대해 엑세스를 요청 및 수신할 수 있어 주 메모리(404)에 대한 엑세스들 획득할 수 있다. 전용 그래픽 버스는 주 메모리(404)로부터의 빠른 검사를 수용한다. 특정한 동작들에서, 그래픽 콘트롤러(408)는 AGP 버스(210)상에서 PCI 프로토콜 트랜잭션(transaction)들을 생성하도록 더 구성될 수 있다. 그래서, 버스 브리지(202)의 상기 AGP 인터페이스는 AGP 프로토콜 처리 및 PCI 프로토콜 목표 및 초기화 처리들 모두를 지원하기 위한 기능을 포함할 수 있다. 표시부(426)는 그림 과 문자가 표시될 수 있는 임의의 전자 표시부이다. 적절한 표시부(426)는 캐소드 레이 튜브("CRT"), 액정 표시기("LCD")등을 포함한다.
AGP, PCI, 그리고 ISA 또는 EISA 버스들이 상기 설명에서 예제로 사용되어졌지만, 원하는 어떠한 버스 구조들도 대신 사용될 수 있다는 것을 유의한다. 컴퓨터 시스템(200)은 부가적인 다중 프로세서 컴퓨터들(예를들어 컴퓨터 시스템(400)의 선택적 구성요소로서 도시된 프로세서(10a))을 포함하는 다중 처리 컴퓨터 시스템일 수 있다는 것에도 유의한다. 프로세서(10a)는 프로세서(10)와 유사하다. 좀더 구체적으로, 프로세서(10a)는 프로세서(10)와 동일할 수 있다. 프로세서 (10a)는 (도 4에 도시된 바와 같은) 독립 버스를 통하거나 또는 프로세서(10)와 CPU 버스(424)를 공유하여 버스 브리지(402)와 결합될 수 있다. 또한, 프로세서(10a)는 L2 캐시(428)와 유사한 선택적 L2 캐시(428a)와 결합될 수 있다.
또한 주목할 사항으로, 본 설명은 다양한 신호들의 표명에 대해 언급한다. 만일 신호가 특정 조건을 표시하는 값을 운반하면 이 신호는 "표명"된다. 반대로, 신호가 특정 조건의 부재를 표시하는 값을 운반하면 이신호는 "비표명"된다. 신호가 논리 0 값을 운반하면 이 신호는 표명되는 것으로 정의되고, 반대로 논리 1 값을 운반하면 이 신호는 비표명되는 것으로 정의된다. 추가로, 다양한 값들이 상기 설명에서 폐기(discard)되는 것으로 설명되었다. 어떤 값은 다수의 방식들에서 폐기될 수 있으나, 이 값을 수신하는 논리 회로에 의해 이 값이 무시되도록 이 값을 수정할 수 있다. 예컨대, 이 값이 비트를 포함하고 있으면 이 값의 논리 상태는 그 값을 폐기하도록 반전된다. 만일 이 값이 n-비트 값이면, n-비트 엔코딩들중 하나 는 이 값이 무효임을 표시한다. 이 값을 무효 엔코딩으로 세팅하면 이 값은 폐기되게 된다. 추가로, n-비트 값은 세팅시 n-비트 값이 유효임을 표시하는 유효값을 포함한다. 값을 폐기하는 다른 방법들이 또한 사용될 수 있다.
본 발명에 대한 상기 설명을 완전히 인지한 당업자는 본 발명에 대한 다양한 변형 및 수정을 꾀할 수 있을 것이다. 다음의 청구항들은 이러한 모든 변형 및 수정을 포괄하는 것으로 해석되어야 할 것이다.
본 발명은 마이크로프로세서 및 컴퓨터 시스템들에 적용될 수 있다.

Claims (20)

  1. 명령을 디코드하도록 된 디코드 유닛과, 여기서 상기 디코드 유닛은 상기 명령이 상기 목적지 레지스터의 일부분만을 갱신하는 것을 검출하고, 피연산자 요청 정보를 운반하고, 상기 디코드된 명령 및 상기 피연산자 크기 정보를 운반하며; 그리고
    상기 디코드된 명령 및 피연산자 크기 정보를 수신하도록 결합된 기능 유닛을 포함하여 구성되며, 여기서 상기 기능 유닛은 피연산자 데이터를 수신하고, 상기 디코드된 명령을 실행하고, 상기 명령이 상기 피연산자 크기 정보에 의해 표시된 상기 목적지 레지스터의 일부분만을 갱신함에 응답하여 상기 디코드된 명령의 목적지 레지스터의 내용을 상기 디코드된 명령의 실행 결과와 병합하며, 상기 실행의 결과로서 상기 병합된 데이터를 운반하는 것을 특징으로 하는 마이크로프로세서.
  2. 제 1항에 있어서,
    상기 디코드 유닛으로부터 피연산자 요청 정보를 수신하도록 결합된 재배열 버퍼를 더 포함하여 구성되며,
    상기 재배열 버퍼는 피연산자 데이터를 저장함과 아울러, 상기 피연산자 요청 정보에 의해 표시된 피연산자 데이터가 상기 재배열 버퍼에 저장되어 있으면, 상기 표시된 피연산자 데이터를 상기 기능 유닛에 운반하여 상기 기능유닛에 의해 연산되게 하는 것을 특징으로 하는 마이크로프로세서.
  3. 제 2항에 있어서,
    상기 디코드 유닛으로부터 상기 디코드된 명령 및 상기 피연산자 크기 정보를 수신하도록 결합된 예약 스테이션을 더 포함하여 구성되며, 여기서 상기 예약 스테이션은 상기 재배열 버퍼로부터 상기 피연산자 데이터를 수신하고, 상기 디코드된 명령, 상기 피연산자 데이터 및 상기 피연산자 크기 정보를 홀드하며, 상기 디코드된 명령, 상기 피연산자 데이터 및 상기 피연산자 크기 정보를 상기 기능 유닛에 운반하는 것을 특징으로 하는 마이크로 프로세서.
  4. 제 3항에 있어서,
    상기 예약 스테이션은 명령의 목적지 레지스터가 상기 명령의 소스 피연산자가 아님을 검출함과 아울러, 상기 명령이 상기 목적지의 일부분만을 갱신함을 검출하는 것을 특징으로 하는 마이크로 프로세서.
  5. 제 1항에 있어서,
    상기 피연산자 크기 정보는 상기 레지스터 전체 또는 그의 일부분을 표시하는 것을 특징으로 하는 마이크로프로세서.
  6. 제 5항에 있어서,
    상기 피연산자 크기 정보는 상기 레지스터내의 상기 일부분의 위치를 표시하는 것을 특징으로 하는 마이크로프로세서.
  7. 명령을 디코딩하는 단계와, 여기서 상기 디코딩 단계는 상기 명령이 목적지 레지스터의 일부분만을 갱신하는지를 판단하는 단계를 포함하며;
    실행 결과를 생성하도록 상기 명령을 실행하는 단계와;
    상기 명령이 상기 목적지의 상기 일부분만을 갱신함과 아울러, 상기 목적지역시 상기 명령의 소스 피연산자 레지스터임을 판단함에 응답하여, 상기 실행 결과를 제 1 데이터와 병합하는 단계와, 여기서 상기 제 1 데이터는 상기 명령의 실행 이전의 상기 명령의 소스 피연산자 레지스터의 내용의 일부분이며; 그리고
    상기 명령의 결과로서 상기 병합의 결과를 운반하는 단계를 포함하는 것을 특징으로 하는 피연산자들에서의 계산 수행 방법.
  8. 제 7항에 있어서,
    상기 실행의 결과는 8비트로 구성되고, 상기 제 1 데이터는 24비트로 구성되는 것을 특징으로 하는 피연산자들에서의 계산 수행 방법.
  9. 제 7항에 있어서,
    상기 실행의 결과는 16비트로 구성되고, 상기 제 1 데이터는 16비트로 구성되는 것을 특징으로 하는 피연산자들에서의 계산 수행 방법.
  10. 디코드된 명령을 실행하도록 구성된 산술 논리 유닛, 여기서 상기 산술 논리 유닛은 소스 피연산자 데이터와 피연산자 크기 정보를 수신하도록 결합되고, 상기 실행은 제 1 데이터를 생성하며;
    목적지 피연산자 크기 정보를 수신하도록 결합됨과 아울러 제어 신호를 운반하도록 구성된 선택회로와; 그리고
    복수의 멀티플렉서를 포함하여 구성되며, 여기서 상기 멀티플렉서 각각은 상기 제 1 데이터의 일부분을 수신하도록 결합되고, 상기 멀티플렉서들은 제 2 데이터의 일부분을 수신하도록 결합되며, 상기 상기 멀티플렉서들은 상기 회로로부터 제어신호를 수신하도록 결합되고, 상기 멀티플렉서들은 상기 제어 신호의 제 1 조건을 검출함에 응답하여 상기 제 1 데이터의 상기 부분을 운반하도록 구성되고, 상기 멀티플렉서들은 상기 제어 신호의 제 2 조건을 검출함에 응답하여 상기 제 2 데이터의 상기 부분을 운반하도록 구성되고, 상기 운반된 부분들은 제 3 데이터를 형성하도록 병합되며, 상기 제 3 데이터는 상기 실행된 명령의 결과로서 운반되는 것을 특징으로 하는 기능 유닛.
  11. 제 10항에 있어서,
    상기 피연산자 크기 정보는 피연산자 레지스터내의 상기 피연산자의 위치를 포함하고, 그리고 상기 목적지 피연산자 크기 정보는 피연산자 레지스터내의 상기 목적지 피연산자의 위치를 포함하는 것을 특징으로 하는 기능 유닛.
  12. 제 10항에 있어서,
    상기 제 2 데이터는 상기 명령의 실행에 앞서 상기 명령의 목적지 레지스터인 소스 피연산자 레지스터의 내용을 포함하거나 혹은 상기 실행에 앞서 상기 명령의 소스 피연산자 레지스터가 아닌 목적지 피연산자 레지스터의 내용을 포함하는 것을 특징으로 하는 기능 유닛.
  13. 제 10항에 있어서,
    상기 제어 신호의 상기 제 1 조건은 상기 제 1 데이터의 상기 부분이 상기 명령의 목적지를 나타냄을 표시하고, 상기 제어 신호의 상기 제 2 조건은 상기 제 1 데이터의 상기 부분이 상기 명령의 상기 목적지를 나타내지 않음을 표시하는 것을 특징으로 하는 기능유닛.
  14. 마이크로 프로세서와, 여기서 상기 마이크로 프로세서는 명령을 디코드하도록 구성된 디코드 유닛을 포함하고, 상기 디코드 유닛은 피연산자 요청 정보를 운반하도록 구성되고, 디코드된 명령 및 피연산자 크기 정보를 운반하도록 구성되고, 상기 명령이 목적지의 일부만을 갱신함을 검출하도록 구성되고, 상기 검출의 표시를 운반하도록 구성되며;
    디코드된 명령 및 피연산자 크기 정보를 수신하도록 결합된 기능 유닛과, 여기서 상기 기능 유닛은 상기 표시를 수신함과 아울러 피연산자 데이터를 수신하도록 결합되어 있으며, 상기 기능 유닛은 명령을 실행하고, 상기 피연산자 데이터를 상기 표시의 검출하에서 상기 명령의 실행 결과와 병합하고, 상기 병합된 데이터를 운반하도록 되어 있으며; 그리고
    I/O 장치를 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  15. 제 14항에 있어서,
    상기 I/O 장치는 모뎀인 것을 특징으로 하는 컴퓨터 시스템.
  16. 제 14항에 있어서,
    상기 디코드 유닛으로부터 피연산자 요청 정보를 수신하도록 결합된 재배열 버퍼를 더 포함하며,
    상기 재배열 버퍼는 피연산자 데이터를 저장함과 아울러, 상기 피연산자 요청 정보에 의해 표시된 피연산자 데이터가 상기 재배열 버퍼에 저장되어 있으면, 상기 표시된 피연산자 데이터를 상기 기능 유닛에 운반하여 상기 기능유닛에 의해 연산되게 하는 것을 특징으로 하는 컴퓨터 시스템.
  17. 제 16항에 있어서,
    상기 디코드 유닛으로부터 상기 피연산자 크기 정보 및 상기 디코드된 명령을 수신하도록 결합된 예약 스테이션을 더 포함하며, 상기 예약 스테이션은 상기 재배열 버퍼로부터 상기 피연산자 데이터를 수신하도록 결합되고, 상기 디코드된 명령, 상기 피연산자 데이터 및 상기 피연산자 크기 정보를 홀드하도록 구성되며, 상기 디코드된 명령, 상기 피연산자 데이터 및 상기 피연산자 크기 정보를 상기 기능 유닛에 운반하도록 구성된 것을 특징으로 하는 컴퓨터 시스템.
  18. 명령을 디코딩하는 단계, 여기서 상기 디코딩 단계는 상기 명령이 목적지 레지스터의 일부분만을 갱신하는지를 판단하는 단계를 포함하며;
    실행 결과를 생성하도록 상기 명령을 실행하는 단계와;
    상기 명령이 상기 목적지의 상기 일부분만을 갱신함과 아울러 상기 목적지 역시 상기 명령의 소스 피연산자 레지스터가 아님을 판단함에 응답하여, 상기 실행 결과를 제 1 데이터와 병합하는 단계와, 여기서 상기 제 1 데이터는 상기 명령의 상기 목적지의 내용의 일부분이며; 그리고
    상기 명령의 결과로서 상기 병합의 결과를 운반하는 단계를 포함하는 것을 특징으로 하는 피연산자들에서의 계산 수행 방법.
  19. 제 18항에 있어서,
    상기 실행의 결과는 8비트로 구성되고, 상기 제 1 데이터는 24비트로 구성되는 것을 특징으로 하는 피연산자들에서의 계산 수행 방법.
  20. 제 18항에 있어서,
    상기 실행의 결과는 16비트로 구성되고, 상기 제 1 데이터는 16비트로 구성되는 것을 특징으로 하는 피연산자들에서의 계산 수행 방법.
KR1020027006312A 1999-11-16 2000-06-13 좁은 피연산자들에서 계산을 수행하는 방법 및 장치 KR100698493B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/442,209 US6493819B1 (en) 1999-11-16 1999-11-16 Merging narrow register for resolution of data dependencies when updating a portion of a register in a microprocessor
US09/442,209 1999-11-16

Publications (2)

Publication Number Publication Date
KR20020087386A KR20020087386A (ko) 2002-11-22
KR100698493B1 true KR100698493B1 (ko) 2007-03-23

Family

ID=23755935

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020027006312A KR100698493B1 (ko) 1999-11-16 2000-06-13 좁은 피연산자들에서 계산을 수행하는 방법 및 장치

Country Status (6)

Country Link
US (1) US6493819B1 (ko)
EP (1) EP1230592B1 (ko)
JP (1) JP2003515214A (ko)
KR (1) KR100698493B1 (ko)
DE (1) DE60042277D1 (ko)
WO (1) WO2001037084A1 (ko)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1217513A3 (en) * 2000-12-23 2003-08-13 International Business Machines Corporation Method for handling 32 bit results for an out-of-order processor with a 64 bit architecture
US7228403B2 (en) * 2000-12-23 2007-06-05 International Business Machines Corporation Method for handling 32 bit results for an out-of-order processor with a 64 bit architecture
US7340590B1 (en) * 2003-12-11 2008-03-04 Sun Microsystems, Inc. Handling register dependencies between instructions specifying different width registers
US7237096B1 (en) 2004-04-05 2007-06-26 Sun Microsystems, Inc. Storing results of producer instructions to facilitate consumer instruction dependency tracking
US7418582B1 (en) 2004-05-13 2008-08-26 Sun Microsystems, Inc. Versatile register file design for a multi-threaded processor utilizing different modes and register windows
US7509484B1 (en) 2004-06-30 2009-03-24 Sun Microsystems, Inc. Handling cache misses by selectively flushing the pipeline
US7571284B1 (en) 2004-06-30 2009-08-04 Sun Microsystems, Inc. Out-of-order memory transactions in a fine-grain multithreaded/multi-core processor
US7366829B1 (en) 2004-06-30 2008-04-29 Sun Microsystems, Inc. TLB tag parity checking without CAM read
US7519796B1 (en) * 2004-06-30 2009-04-14 Sun Microsystems, Inc. Efficient utilization of a store buffer using counters
US7290116B1 (en) 2004-06-30 2007-10-30 Sun Microsystems, Inc. Level 2 cache index hashing to avoid hot spots
JP2007034731A (ja) * 2005-07-27 2007-02-08 Toshiba Corp パイプラインプロセッサ
ITMI20072450A1 (it) * 2007-12-31 2009-07-01 St Microelectronics Srl Sistema di comunicazione tra un primo ed un secondo dispositivo sincroni temporalmente non correlati.
US8495699B2 (en) * 2008-12-23 2013-07-23 At&T Intellectual Property I, L.P. Distributed content analysis network
US20100223673A1 (en) * 2009-02-27 2010-09-02 At&T Intellectual Property I, L.P. Providing multimedia content with access restrictions
US20100223660A1 (en) * 2009-02-27 2010-09-02 At&T Intellectual Property I, L.P. Providing multimedia content with time limit restrictions
US8504805B2 (en) * 2009-04-22 2013-08-06 Oracle America, Inc. Processor operating mode for mitigating dependency conditions between instructions having different operand sizes
US8335912B2 (en) * 2009-04-22 2012-12-18 Oracle America, Inc. Logical map table for detecting dependency conditions between instructions having varying width operand values
US20100274961A1 (en) * 2009-04-22 2010-10-28 Golla Robert T Physically-indexed logical map table
US8458444B2 (en) * 2009-04-22 2013-06-04 Oracle America, Inc. Apparatus and method for handling dependency conditions between floating-point instructions
US8904421B2 (en) * 2009-06-30 2014-12-02 At&T Intellectual Property I, L.P. Shared multimedia experience including user input
US9052890B2 (en) * 2010-09-25 2015-06-09 Intel Corporation Execute at commit state update instructions, apparatus, methods, and systems
EP3001307B1 (en) * 2014-09-25 2019-11-13 Intel Corporation Bit shuffle processors, methods, systems, and instructions
CN106095393B (zh) * 2016-06-22 2019-04-30 上海兆芯集成电路有限公司 在回退阶段期间合并部分写结果的系统和方法
US10866805B2 (en) * 2018-01-03 2020-12-15 Arm Limited Speculation barrier instruction

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5615385A (en) * 1994-03-01 1997-03-25 Intel Corporation Method and apparatus for zero extension and bit shifting to preserve register parameters in a microprocessor utilizing register renaming
US5790826A (en) * 1996-03-19 1998-08-04 S3 Incorporated Reduced register-dependency checking for paired-instruction dispatch in a superscalar processor with partial register writes
WO1999008185A1 (en) * 1997-08-06 1999-02-18 Advanced Micro Devices, Inc. A dependency table for reducing dependency checking hardware
US5881259A (en) * 1996-09-23 1999-03-09 Arm Limited Input operand size and hi/low word selection control in data processing systems

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2703884B2 (ja) * 1985-12-27 1998-01-26 日本電気株式会社 データ書込み制御方式
JPH01230125A (ja) * 1988-03-10 1989-09-13 Nec Corp レジスタの部分的更新機能を持つデータ処理装置
US4982402A (en) * 1989-02-03 1991-01-01 Digital Equipment Corporation Method and apparatus for detecting and correcting errors in a pipelined computer system
US5878244A (en) 1995-01-25 1999-03-02 Advanced Micro Devices, Inc. Reorder buffer configured to allocate storage capable of storing results corresponding to a maximum number of concurrently receivable instructions regardless of a number of instructions received
US5903741A (en) 1995-01-25 1999-05-11 Advanced Micro Devices, Inc. Method of allocating a fixed reorder buffer storage line for execution results regardless of a number of concurrently dispatched instructions
JPH08263289A (ja) * 1995-03-22 1996-10-11 Oki Electric Ind Co Ltd 複数命令流パイプライン計算機
US5768555A (en) 1997-02-20 1998-06-16 Advanced Micro Devices, Inc. Reorder buffer employing last in buffer and last in line bits
US6334183B1 (en) * 1997-11-18 2001-12-25 Intrinsity, Inc. Method and apparatus for handling partial register accesses

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5615385A (en) * 1994-03-01 1997-03-25 Intel Corporation Method and apparatus for zero extension and bit shifting to preserve register parameters in a microprocessor utilizing register renaming
US5790826A (en) * 1996-03-19 1998-08-04 S3 Incorporated Reduced register-dependency checking for paired-instruction dispatch in a superscalar processor with partial register writes
US5881259A (en) * 1996-09-23 1999-03-09 Arm Limited Input operand size and hi/low word selection control in data processing systems
WO1999008185A1 (en) * 1997-08-06 1999-02-18 Advanced Micro Devices, Inc. A dependency table for reducing dependency checking hardware

Also Published As

Publication number Publication date
EP1230592B1 (en) 2009-05-27
US6493819B1 (en) 2002-12-10
DE60042277D1 (de) 2009-07-09
EP1230592A1 (en) 2002-08-14
KR20020087386A (ko) 2002-11-22
JP2003515214A (ja) 2003-04-22
WO2001037084A1 (en) 2001-05-25

Similar Documents

Publication Publication Date Title
KR100698493B1 (ko) 좁은 피연산자들에서 계산을 수행하는 방법 및 장치
US6574725B1 (en) Method and mechanism for speculatively executing threads of instructions
US8069336B2 (en) Transitioning from instruction cache to trace cache on label boundaries
KR100880686B1 (ko) 2개 레벨의 분기 예측 캐시를 갖는 분기 예측
US6651163B1 (en) Exception handling with reduced overhead in a multithreaded multiprocessing system
US6279106B1 (en) Method for reducing branch target storage by calculating direct branch targets on the fly
US6502185B1 (en) Pipeline elements which verify predecode information
US7213126B1 (en) Method and processor including logic for storing traces within a trace cache
US6189089B1 (en) Apparatus and method for retiring instructions in excess of the number of accessible write ports
US6427192B1 (en) Method and apparatus for caching victimized branch predictions
US6542986B1 (en) Resolving dependencies among concurrently dispatched instructions in a superscalar microprocessor
KR20020087929A (ko) 인덱스와 선택적 경로 비교를 기반으로 데이터를포워딩하는 저장 버퍼
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
US20070033385A1 (en) Call return stack way prediction repair
US20030074530A1 (en) Load/store unit with fast memory data access mechanism
US6425072B1 (en) System for implementing a register free-list by using swap bit to select first or second register tag in retire queue
US6453387B1 (en) Fully associative translation lookaside buffer (TLB) including a least recently used (LRU) stack and implementing an LRU replacement strategy
US6460132B1 (en) Massively parallel instruction predecoding
US6446189B1 (en) Computer system including a novel address translation mechanism
JP3866920B2 (ja) 命令のリタイアメント時に物理レジスタを選択的に自由にするよう構成されたプロセッサ
US6425074B1 (en) Method and apparatus for rapid execution of FCOM and FSTSW
US5946468A (en) Reorder buffer having an improved future file for storing speculative instruction execution results
US5915110A (en) Branch misprediction recovery in a reorder buffer having a future file
US5951671A (en) Sharing instruction predecode information in a multiprocessor system
US6704854B1 (en) Determination of execution resource allocation based on concurrently executable misaligned memory operations

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

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20140220

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20150226

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20160218

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee