KR20220064975A - 섀도우-래치로 구성된 레지스터 파일을 사용한 비트 폭 재구성 - Google Patents

섀도우-래치로 구성된 레지스터 파일을 사용한 비트 폭 재구성 Download PDF

Info

Publication number
KR20220064975A
KR20220064975A KR1020227010069A KR20227010069A KR20220064975A KR 20220064975 A KR20220064975 A KR 20220064975A KR 1020227010069 A KR1020227010069 A KR 1020227010069A KR 20227010069 A KR20227010069 A KR 20227010069A KR 20220064975 A KR20220064975 A KR 20220064975A
Authority
KR
South Korea
Prior art keywords
shadow
latch
bit
bit width
latches
Prior art date
Application number
KR1020227010069A
Other languages
English (en)
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 KR20220064975A publication Critical patent/KR20220064975A/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/30098Register arrangements
    • G06F9/30141Implementation provisions of register files, e.g. ports
    • 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/30098Register arrangements
    • G06F9/30101Special purpose 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/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • 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/30105Register structure
    • G06F9/30116Shadow registers, e.g. coupled registers, not forming part of the register space
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30138Extension of register space, e.g. register cache
    • 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/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

프로세서는, 제1 비트 폭에서 동작하는 명령어 세트를 갖는 프론트 엔드 및 상기 제1 비트 폭에서 동작하는 상기 명령어 세트를 상기 프로세서에서 수신하도록 결합된 부동 소수점 유닛을 포함한다. 상기 부동 소수점 유닛은 제2 비트 폭에서 동작하고, 상기 부동 소수점 유닛에 제공된 명령어 세트의 비트 폭을 평가한 것에 기초하여, 상기 부동 소수점 유닛은 섀도우-래치로 구성된 부동 소수점 레지스터 파일을 사용하여 비트 폭 재구성을 수행한다. 상기 섀도우-래치로 구성된 부동 소수점 레지스터 파일은 상기 섀도우 래치로부터 판독되거나 상기 섀도우 래치에 기입되어야 하는 데이터를 저장하기 위해 복수의 일반 래치와 복수의 섀도우 래치를 포함한다. 상기 비트 폭 재구성은 상기 제2 비트 폭에서 동작하는 상기 부동 소수점 유닛이 상기 제1 비트 폭에서 수신된 명령어 세트에 대해 동작할 수 있게 한다.

Description

섀도우-래치로 구성된 레지스터 파일을 사용한 비트 폭 재구성
프로세서는 처리 활동 동안 사용할 데이터를 저장하기 위해 다양한 구조를 사용한다. 데이터 구조의 일 유형은 레지스터 파일이다. 일반적인 레지스터 파일은 병렬로 기입되거나 판독될 수 있는 항목(entry)과 관련된 기능 래치(latch)에 데이터를 저장한다. 기능 래치에 저장된 데이터에 액세스하기 위해 일반적인 프로세서는 레지스터를 상위 비트 레지스터와 하위 비트 레지스터로 "분할"하기 위해 분할 이름 변경(split renaming)을 활용한다. 분할 이름 변경을 통해 프로세서는 프로세서의 기본 폭보다 넓은 레지스터를 구현할 수 있다. 특히, 레지스터의 상위 비트 부분과 레지스터의 하위 비트 부분에는 마이크로프로세서에 의해 다른 식별자 또는 이름이 할당되어 레지스터는 논리적으로 2개의 다른 레지스터로 처리된다. 예를 들어, 현재 이용 가능한 여러 마이크로프로세서는 256-비트 레지스터를 상위 128-비트 레지스터와 하위 128-비트 레지스터로 분할 이름 변경한다. 레지스터를 상위 레지스터와 하위 레지스터로 분할 이름 변경하면 계산 동작을 수행하는 데 필요한 레지스터 공간이 늘어난다. 예를 들어, 위에서 설명한 256-비트 레지스터를 상위 및 하위 128-비트 레지스터로 분할 이름 변경하려면 물리적 레지스터 파일의 영역과 항목의 수가 두 배 필요하다. 분할 이름 변경에 필요한 물리적 레지스터 파일의 크기가 증가하면 분할 이름 변경 동작을 수행하는 데 마이크로프로세서 공간이 더 많이 필요하므로 제조 비용이 증가한다.
본 발명은 첨부된 도면을 참조함으로써 이 기술 분야에 통상의 지식을 가진 자에게 더 잘 이해될 수 있고 그 수많은 특징 및 장점이 명백해질 수 있다. 다른 도면에서 동일한 참조 기호를 사용하는 것은 유사하거나 동일한 항목을 나타낸다.
도 1은 일부 실시형태에 따라 섀도우 래치(shadow-latch)를 사용하여 레지스터의 비트 폭 재구성을 지원하는 프로세서 코어의 블록도이다.
도 2는 일부 실시형태에 따라 도 1의 프로세서 코어에서 섀도우-래치로 구성된 부동 소수점(floating point) 레지스터 파일의 비트셀(bitcell) 레이아웃이다.
도 3은 일부 실시형태에 따라 도 1의 프로세서 코어에서 섀도우 래치를 사용하여 비트 폭 재구성을 사용하는 방법의 흐름도이다.
도 4는 일부 실시형태에 따라 도 1의 프로세서 코어에서 섀도우-래치로 구성된 부동 소수점 레지스터 파일의 블록도이다.
도 5는 일부 실시형태에 따라 도 4의 프로세서 코어에서 섀도우-래치로 구성된 부동 소수점 레지스터 파일에서 활용되는 타이밍도이다.
도 1 내지 도 5는 일부 실시형태에 따라 프로세서의 프로세서 코어에서 레지스터의 비트 폭 재구성을 지원하는 시스템 및 기술을 도시한다. 프로세서의 부동 소수점 유닛은 섀도우-래치로 구성된 부동 소수점 레지스터 파일에서 섀도우 래치의 이용 가능성에 기초하여 비트 폭을 제1 비트 폭(예를 들어, 256-비트 폭)으로부터 제2 비트 폭(예를 들어, 512-비트 폭)으로 재구성하는 섀도우-래치로 구성된 부동 소수점 레지스터 파일을 포함하고, 이에 따라 제1 비트 폭에서 동작하는 부동 소수점 유닛은 제2 비트 폭에서 동작하는 프로세서에서 사용될 수 있다. 섀도우-래치로 구성된 부동 소수점 레지스터 파일은 예를 들어 부동 소수점 유닛을 활용하는 데이터 판독 및 기입 동작 동안 비트 폭 재구성에 사용되는, 섀도우 래치, 일반 래치(regular latch), 및 섀도우 선택 멀티플렉서(MUX)를 포함한다.
비트 폭 재구성을 수행하기 위해, 제1 및 제2 클록 사이클 동작 동안, 512-비트 연산의 제1 256-비트는 일반 래치에 저장되고, 제2 256-비트는 동일한 단일 항목의 섀도우-래치로 구성된 부동 소수점 레지스터 파일 내의 섀도우 래치에 저장된다. 예를 들어, 512-비트 판독 또는 기입 동작 동안, 제1 256-비트는 제1 클록 사이클 동안 섀도우-래치로 구성된 부동 소수점 레지스터 파일로부터 액세스되고, 제2 256-비트는 제2 클록 사이클 동안 액세스되며, 두 액세스는 동일한 항목으로부터 발생한다. 제1 256-비트와 제2 256-비트는 섀도우-래치로 구성된 부동 소수점 레지스터 파일의 단일 항목에 저장되기 때문에 512-비트 연산에 대한 비트 폭을 재구성하기 위해 분할 이름 변경이 필요치 않다. 즉, 섀도우-래치로 구성된 부동 소수점 레지스터 파일을 활용함으로써, 부동 소수점 유닛이 512-비트 명령어 세트에 대해 동작할 수 있기 위해 일반적으로 512-비트 명령어를 2개의 개별 레지스터(즉, 상위 비트 레지스터와 하위 비트 레지스터)로 분할하는 분할 이름 변경이 필요치 않다.
도 1은 일부 실시형태에 따라 비트 폭 재구성을 지원하는 실행 파이프라인(105)을 갖는 프로세서의 프로세서 코어(100)를 도시한다. 일부 실시형태에서, 도시된 프로세서 코어(100)는 예를 들어 x86 명령어 세트 아키텍처(ISA), ARM ISA 등에 기반한 중앙 처리 유닛(CPU) 코어를 포함한다. 프로세서는 복수의 이러한 프로세서 코어를 구현하고, 프로세서는 노트북 컴퓨터, 데스크탑 컴퓨터, 태블릿 컴퓨터, 서버, 컴퓨팅 가능 휴대폰, 개인 휴대 정보 단말기(PDA), 셋톱 박스, 게임 콘솔 등과 같은 다양한 전자 디바이스 중 하나에서 구현된다.
일부 실시형태에서, 프로세서 코어(100)에 활용되는 프로세서는 2가지 유형의 벡터 산술 명령어, 즉 스트리밍 단일 명령어 다중 데이터(SIMD) 확장(SSE) 명령어 및 고급 벡터 확장(AVX) 명령어의 실행을 지원하는 x86 아키텍처를 지원한다. AVX 명령어는 256-비트 피연산자(operand)를 조작하고, SSE 명령어는 128-비트 피연산자를 조작한다. AVX-512 명령어는 x86 명령어 세트 아키텍처(ISA)용 256-비트 AVX SIMD 명령어에 대한 512-비트 확장이다. 따라서, 512-비트 레지스터가 있는 레지스터 파일을 사용하는 프로세서는 AVX 명령어와 SSE 명령어의 실행을 모두 지원한다. 일부 실시형태에서, 본 명세서에 설명된 섀도우-래치로 구성된 부동 소수점 레지스터 파일을 활용하여, 256-비트 레지스터가 있는 레지스터 파일을 사용하는 프로세서 또는 처리 유닛(예를 들어, 부동 소수점 유닛(120))은 또한 512-비트 연산을 지원한다.
도시된 예에서, 실행 파이프라인(105)은 명령어 캐시(110)("I캐시"), 프론트 엔드(front end)(115), 부동 소수점 유닛(120), 및 고정 소수점 유닛(125)(일반적으로 "정수 실행 단위(integer execution unit)"라고도 함)을 포함한다. 프로세서 코어(100)는 또한 하나 이상의 캐시 레벨(예를 들어, L1 캐시, L2, 캐시 등), 시스템 RAM과 같은 시스템 메모리, 및 솔리드 스테이트 드라이브(SSD) 또는 광 드라이브와 같은 하나 이상의 대용량 저장 디바이스를 포함하는, 메모리 계층(도시되지 않음)에 결합된 로드 저장 유닛(LSU)(130)을 포함한다.
명령어 캐시(110)는 요청 페치 동작(demand fetch operation)(예를 들어, 프로그램 카운터에 의해 식별된 명령어 스트림에서 그 다음 명령어를 요청하기 위한 페치)에 응답하여 또는 추측 프리페치 동작(speculative prefetch operation)에 응답하여 프론트 엔드(115)의 페치 유닛(도시되지 않음)에 의해 페치되는 명령어 세트 데이터를 저장한다. 프론트 엔드(115)는 페치 유닛에 의해 페치된 명령어를 부동 소수점 유닛(120) 또는 고정 소수점 유닛(125)에 의해 수행되거나 실행되어야 하는 하나 이상의 연산으로 디코딩한다. 부동 소수점 계산을 포함하는 연산은 실행을 위해 부동 소수점 유닛(120)으로 디스패치(dispatched)되는 반면, 고정 소수점 계산을 포함하는 연산은 고정 소수점 유닛(125)으로 디스패치된다.
본 명세서에 사용된 명령어의 유형은 명령어에 의해 조작되는 피연산자의 크기를 의미한다. 따라서, 다른 유형의 명령어는 다른 크기의 피연산자를 조작한다. 예를 들어, 일부 실시형태에서 부동 소수점 유닛(120)은 128-비트 피연산자를 조작하는 명령어(128-비트 명령어라고 함)로부터 디코딩된 연산을 실행하고, 또한 256-비트 피연산자를 조작하는 명령어(256-비트 명령어라고 함)로부터 디코딩된 연산을 실행한다. 또한, 부동 소수점 유닛(120)은 본 명세서에 설명된 비트 폭 재구성 기술을 활용하여 512-비트 피연산자를 조작하는 명령어(512-비트 명령어라고 함)로부터 디코딩된 연산을 실행한다.
일부 실시형태에서, 부동 소수점 유닛(FPU)(120)은 맵 유닛(map unit)(135), 스케줄러 유닛(140), 섀도우-래치로 구성된 부동 소수점 레지스터 파일(SC-FPRF)(145), 및 하나 이상의 실행(EX) 유닛(150)을 포함한다. 일부 실시형태에서, FPU(120)는 부동 소수점 수에 대한 연산을 수행하고, 덧셈, 뺄셈, 곱셈, 나눗셈, 제곱근, 비트 시프트 또는 브로드캐스트를 포함하는 연산을 수행할 뿐만 아니라, 지수 함수, 삼각 함수 등과 같은 초월 함수를 수행한다. 다양한 실시형태에서, FPU(120)는 다양한 그래픽 처리 유닛(GPU) 및 중앙 처리 유닛(CPU)의 동작을 지원한다. 예를 들어, CPU가 부동 소수점 연산을 수행할 것을 요구하는 명령어를 만나면 CPU는 FPU(120)에 요청을 전송하고, FPU는 연산을 수행하고 결과를 CPU에 반환한다. 도 1에 도시된 FPU(120)는 프로세서 코어(100)의 내부에서 구현되고, 다른 실시형태에서 FPU(120)는 GPU 및 CPU의 외부에서 구현된다.
SC-FPRF(145)는 추가 섀도우 래치(147) 및 섀도우 선택 MUX(148)를 활용하여 명령어, 이 명령어에 의해 사용되는 피연산자, 및 실행된 명령어의 결과를 저장한다. SC-FPRF(145)의 항목은 물리적 레지스터 번호로 표시된다. 일부 실시형태에서, 물리적 레지스터 번호는 맵 유닛(135)을 사용하여 명령어 세트 아키텍처에 의해 정해지는 아키텍처 레지스터 번호로 매핑(또는 이름 변경)된다. 일반적으로, 스케줄러 유닛(140)에 의해 유지되는 큐 항목(queue entry)은 연산 페이로드(operation payload) 또는 연산 식별자(예를 들어, 연산을 위한 연산 코드(opcode))를 저장하는 필드, 연산을 위한 소스 피연산자를 포함하는 물리적 레지스터의 어드레스 또는 기타 식별자를 위한 필드, 연산에 사용될 임의의 즉시 값 또는 변위 값을 저장하는 필드, 대응하는 연산의 실행 결과를 저장하는 물리적 레지스터를 식별하는 목적지 필드, 및 명령어 의존 정보를 저장하는 적어도 하나의 필드를 포함한다. 예를 들어, 로드 명령어는 로드 명령어의 타깃을 나타내는 어드레스 정보, 및 이 타깃 어드레스로부터 데이터를 수신하는 SC-FPRF(145)의 PRN을 나타내는 구조화된 레지스터 피연산자를 포함한다.
제1 비트 폭(256-비트 폭)에서 동작하는 명령어에 대해 동작하는 것에 더하여, FPU(120)는 예를 들어 512-비트 명령어에 비교적 많은 수의 비트를 포함하는 제2 비트 폭에서 동작하는 명령어에 대해 동작한다. 즉, 일부 실시형태에서, FPU(120)의 데이터 경로가 256-비트 명령어로 제한되더라도, FPU(120)는 명령어 동작 또는 트랜잭션을 단일 클록 사이클로부터 2개의 클록 사이클(예를 들어, 제1 클록 사이클과 제2 클록 사이클)로 확장함으로써 512-비트 명령어에 대해 동작하도록 SC-FPRF(145)를 활용하여 256-비트 데이터 경로를 재구성할 수 있다. 따라서, 일부 실시형태에서, SC-FPRF(145)가 512-비트 레지스터 파일일 때(즉, 하위 256 비트를 일반 래치(146)에 저장하고, 상위 256 비트를 섀도우 래치(147)에 저장할 때), 512 비트에 대한 액세스는 하나의 512-비트 사이클이 아닌 2개의 256-비트 사이클에 걸쳐 발생한다.
일부 실시형태에서, 예를 들어, 판독 동작 동안, 실행 유닛(150)이 SC-FPRF(145)로부터 데이터를 판독할 때, 하위 256 비트는 트랜잭션의 제1 사이클에서 일반 래치(146)로부터 판독되고, 상위 256-비트는 트랜잭션의 제2 사이클에서 섀도우 래치(147)로부터 판독된다. 섀도우 선택 MUX(148)에 제공된 판독 어드레스를 사용하여, 섀도우 선택 MUX(148)는 판독 기능을 활용하여 판독 동작의 제2 사이클 동안 섀도우 래치(147)들 중 판독할 섀도우 래치를 선택한다. 일부 실시형태에서, 판독 동작을 수행하기 위해 판독 기능이 SC-FPRF(145)에 추가되고, SC-FPRF는 섀도우 래치에 저장된 섀도우 데이터를 판독할지 또는 일반 래치에 저장된 일반 데이터를 판독할지 여부를 결정하는 데 사용된다. 따라서, 판독 기능을 통해 실행 유닛(150)은 섀도우 선택 MUX(148)를 사용하여 판독할 데이터를 선택할 수 있다.
유사하게, 기입 동작 동안, 스케줄러 유닛(140) 또는 실행 유닛(150)이 SC-FPRF(145)에 기입 동작을 수행할 때, 하위 256 비트는 트랜잭션의 제1 사이클 동안 일반 래치(146)에 기입되고, 상위 256 비트는 트랜잭션의 제2 사이클 동안 섀도우 래치(147)에 기입된다. 기입 동작 동안, 기입되는 추가 256 비트가 별도의 항목으로 기입되지 않기 때문에, 즉 추가 256 비트는 동일한 항목의 일반 래치와 관련된 데이터의 섀도우 부분이기 때문에 전통적인 레지스터 파일에 비해 추가 기입 논리가 필요치 않다.
일부 실시형태에서, SC-FPRF(145)의 인터페이스에 대한 입력에서, 기입 제어 신호와 판독 제어 신호는 제2 사이클 동안 판독 동작 또는 기입 동작이 발생할 것인지 여부를 지시하는 SC-FPRF 제어기(127)로부터 제공된다. 기입 동작 동안, SC-FPRF 제어기(127)로부터 제공되는 기입 제어 신호(예를 들어, Is512 기입 제어 입력 신호)가 트랜잭션이 시작될 때 하이(high) 논리 값으로 설정되면, 섀도우 기입용 클록이 제2 사이클 동안 활성화된다. 즉, Is512 기입 제어 입력 신호는 섀도우 기입 클록이 2개의 사이클 중 제2 사이클에서 발생하도록 한다. 판독 동작의 경우, SC-FPRF 제어기(127)로부터 제공되는 판독 제어 신호(예를 들어, Is512 판독 제어 입력 신호)가 트랜잭션이 시작될 때 하이 논리 값으로 설정되면, 섀도우 선택 MUX(148)는 제2 사이클 동안 섀도우 선택 MUX(148)에 제공된 판독 어드레스에 기초하여 판독될 섀도우 래치를 선택한다. 즉, Is512 판독 제어 입력 신호는 섀도우 선택 MUX(148)가 제2 사이클에서 판독할 요청된 어드레스에 대응하는 섀도우 래치(147)를 선택하게 한다. 다시 말해, 트랜잭션의 제2 사이클에서 섀도우 래치(147)로부터의 데이터는 섀도우 선택 MUX(148)에 의해 선택된다. SC-FPRF(145)를 사용한 결과, 다양한 실시형태에서, 판독 디코더와 기입 디코더는 제2 사이클 동안 클록되지 않고, 디코딩된 값을 일정하게 유지하고, 프로세서 코어(100)에서 명령어를 실행하는 동안 전력을 절약한다.
일부 실시형태에서, 섀도우 선택 MUX(148)에 대한 제어 신호가 스케줄보다 앞서, 즉 트랜잭션의 제1 사이클 내에 도달하기 때문에, 예를 들어, 플립플롭에 의해 제공되는 섀도우 선택 MUX에 제공되는 신호(즉, 섀도우 선택 MUX 신호)는 추가 섀도우 선택 MUX(148)를 추가하는 것과 관련된 타이밍을 숨겨, 본질적으로 레지스터 파일에 추가된 추가 섀도우 선택 MUX(148)를 전환해야 하는 효과를 무효화한다.
일부 실시형태에서, 512-비트 연산 또는 256-비트 연산을 위한 FPU(120)를 활성화하는 것은 SC-FPRF 제어기(127)의 구성에 의존한다. 실행될 마이크로 연산(micro-operation)이 512-비트 명령어일 때, SC-FPRF 제어기(127)는 512-비트 연산을 위해 FPU(120)를 인에이블한다. 실행될 마이크로 연산이 256-비트 명령어일 때, SC-FPRF 제어기(127)는 512-비트 연산을 위해 FPU(120)를 인에이블한다. 즉, FPU(120)가 512-비트 연산이 발생할지 또는 256-비트 연산이 발생할지 여부를 결정하기 위해 SC-FPRF 제어기(127)는 FPU(120)를 512-비트 연산자 또는 256-비트 연산자로 활성화한다. FPU(120)가 512-비트 판독 또는 기입 동작에서 인에이블되지 않으면, 256-비트 판독 또는 기입 동작이 활성화되고 단일 사이클에서 발생한다. FPU(120)가 512-비트 판독 또는 기입 동작에서 인에이블되면, 512-비트 판독 또는 기입 동작이 활성화되고, 주어진 포트에서 512 연산을 수행하는 데 2개의 클록 사이클이 소요된다.
일부 실시형태에서, FPU(120)는 512-비트 연산을 실행하는 데 2개의 256-비트 사이클을 사용하는 256-비트 폭 FPU이기 때문에, FPU(120)의 스케줄러 유닛(140)은 제1 마이크로 연산이 제1 및 제2 사이클 동안 완료될 수 있도록 하기 위해 제2 사이클 동안 제2 마이크로 연산의 수락을 차단한다. 즉, FPU(120)에 의해 512-비트 연산을 실행하는 데 2개의 사이클이 소요되기 때문에, FPU(120)의 스케줄러 유닛(140)은 SC-FPRF 제어기(127)에 의해 512-비트 마이크로 연산이 2개의 사이클을 소요하고 제2 사이클 동안 다른 마이크로 연산 또는 다른 트랜잭션이 시작되는 것을 방지하는 플래그가 지정된다.
유사하게, 로드 저장 유닛(130)은 512-비트 연산과 256-비트 연산에서 동작한다. 로드 저장 유닛(130)은 SC-FPRF 제어기(127)에 의해 FPU(120)가 512-비트 마이크로 연산을 실행하고 있다는 플래그로 지정된다. 로드 저장 유닛(130)이 512-비트 로드를 처리하고 내부 256-비트 데이터 경로를 통해 저장하기 때문에, 512-비트 연산의 하위 256-비트는 제1 사이클 동안 실행되고, 상위 256-비트는 제2 사이클 동안 실행되어, SC-FPRF(145) 및 실행 파이프와 일치한다. 따라서, 일부 실시형태에서, 로드 저장 유닛(130) 인터페이스와 FPU(120) 인터페이스는 모두 256-비트 폭이다.
일부 실시형태에서, FPU(120)에서 512-비트 마이크로 연산을 실행하면 512-비트 명령어는 폐기 큐(retire queue)(도시되지 않음)의 단일 항목과, 프로세서 코어(100)의 다른 많은 구조, 예를 들어, 로드 큐(load queue) 및 EX(150)의 스케줄러를 사용할 수 있다. 단일 항목을 사용하면 예를 들어 512-비트 명령어를 2개의 256-비트 마이크로 연산으로 분할하는 분할 이름 변경보다 성능이 향상된다. 일부 실시형태에서, 본 명세서에 설명된 섀도우-래치로 구성된 부동 소수점 레지스터 파일 방식은 128-비트 데이터 경로를 통해 512-비트 연산을 수행하기 위해 4개의 래치 및 4개의 사이클과 같은 다수의 래치 및 사이클로 확장된다.
SC-FPRF(145)를 사용하여 256-비트 데이터 경로를 통해 512-비트 이름 변경 및 512-비트 마이크로 연산을 구현하기 위해, 레지스터 파일에 데이터를 저장하는 일반적으로 사용되는 일반 래치에 더하여, 레지스터 파일의 항목마다 추가 섀도우 래치 세트가 추가된다(도 2를 참조하여 상세히 도시됨). 또한, 섀도우 래치가 기입되는 것을 허용하기 위해 제2 기입 클록이 부동 소수점 유닛(120)에 추가된다.
스케줄러 유닛(140)은 FPU(120)에서 실행하기 위한 명령어를 스케줄링한다. 또한, SC-FPRF(145)는 2개의 사이클을 사용하여 단일 사이클 동작을 수행하기 때문에, 스케줄러 유닛(140)은 2개의 사이클 동작을 수행하는 데 필요한 추가 사이클을 수용하도록 구성된다. 그 결과, 부동 소수점 유닛(120)의 스케줄러 유닛(140)은 2개의 사이클 동작이 완료될 때까지 추가 사이클 동안 다른 마이크로 연산을 수락하는 것을 차단하거나 지연시킨다. 즉, 일 실시형태에서, 스케줄러 유닛(140)은 512-비트 마이크로 연산이 2개의 사이클을 소요하고, 제2 사이클에서 다른 마이크로 연산 또는 다른 트랜잭션을 취하는 것을 차단하는 것을 이해한다. 일부 실시형태에서, 부동 소수점 유닛(120)은 또한 512-비트 마이크로 연산이 레지스터 파일과 실행 파이프라인에서 2개의 사이클을 취하는 것을 식별하도록 스케줄러(스케줄러 유닛(140))에 요구한다.
로드 저장 유닛(130)은 섀도우 래치 동작을 위해 추가되는 추가 사이클을 조정하기 위해 단일 사이클이 아닌 2개의 사이클에 걸쳐 로드 및 저장 동작을 수행한다. 따라서, 예를 들어, 512-비트 연산의 경우, 로드 저장 유닛(130)은 단일 사이클이 아닌 2개의 사이클에 걸쳐 256-비트 데이터 경로를 통해 512-비트 로드 및 저장을 수행한다.
다양한 실시형태에서, FPU(120)가 256-비트 데이터 경로를 사용하여 전체 동작을 수행하지만, 디코더(도시되지 않음)는 256 비트가 아닌 512-비트 데이터 경로를 사용하여 512-비트 연산을 디코딩한다. 다시 말해, 디코더는 FPU(120)가 256-비트 데이터 경로를 사용하여 동작한다는 것을 인식하지 못하고, 대신 디코더가 512-비트 연산에서 일반적으로 하는 것처럼 수행한다.
일부 실시형태에서, 섀도우 선택 멀티플렉서 신호는 제1 사이클 트랜잭션과 함께 오기 때문에 섀도우 선택 멀티플렉서 신호는 로컬 플립플롭에 의해 출력된다. 일부 실시형태에서, 로컬 플립플롭으로부터 섀도우 선택 멀티플렉서 신호를 출력하면 프로세서는 판독 디코드보다 더 빠르고, 여분의 또는 추가 섀도우 선택 멀티플렉서를 통해 타이밍을 숨길 수 있다.
이하의 설명은 부동 소수점 유닛(120)에서 구현되는 섀도우-래치로 구성된 부동 소수점 레지스터 파일(145)에 관한 것이지만, 이 설명은, 예를 들어, 고정 소수점 유닛(125), 또는 완전히 다른 유형의 처리 유닛, 예를 들어, 디지털 신호 프로세서, 그래픽 프로세서, 주문형 집적 회로(ASIC) 등에 구현되는 임의의 유형의 레지스터 파일 또는 섀도우-래치로 구성된 레지스터 파일에 적용된다. SC-FPRF(145)는 기능 래치, 섀도우 래치, 및 이 기능 래치와 섀도우 래치로부터 데이터를 판독하고 이 래치에 데이터를 기입하는 것을 허용하는 섀도우 선택 멀티플렉서를 포함한다(도 2를 참조하여 아래에서 더 논의됨).
도 2는 일부 실시형태에 따라 섀도우 래치를 사용하여 비트 폭 재구성을 사용하는 도 1의 SC-FPRF(145)의 비트셀 레이아웃이다. SC-FPRF(145)는 섀도우 래치(147), 섀도우 선택 MUX(148), 기능 또는 일반 래치(146), 판독 논리 유닛(판독 논리 회로)(265) 및 기입 논리 유닛(기입 논리 회로)(270)을 포함한다. 도시된 예에서, 섀도우 래치(147)는 복수의 섀도우 래치를 포함하고, 섀도우 선택 MUX(148)는 복수의 섀도우 선택 멀티플렉서를 포함하고, 일반 래치(146)는 복수의 일반 래치를 포함하고, 판독 논리 유닛(265)은 복수의 판독 논리 유닛을 포함하고, 기입 논리 유닛(270)은 복수의 기입 논리 유닛을 포함한다. 일부 실시형태에서, 각각의 섀도우 래치(147)와 일반 래치(146)는 비트 폭 재구성 동작 동안 SC-FPRF(145)에 기입되고 이로부터 판독되어야 할 데이터를 저장하는 래칭 동작을 수행한다. 각각의 섀도우 선택 MUX(148)는 비트 폭 재구성 동작 동안 SC-FPRF(145)로부터 판독되어야 하는 데이터를 선택하는 데 사용된다. 일부 실시형태에서, 판독 논리 유닛(265)과 기입 논리 유닛(270)은 이 기술 분야에 일반적으로 알려진 바와 같이 판독 및 기입 동작을 수행하는 데 사용되는 논리 회로를 포함한다.
도 2에 도시된 바와 같이, 512-비트 연산의 비트 폭 재구성을 위해, FPU(120)(256-데이터 경로를 가짐)는 2개의 클록 사이클 동안 일반 래치(146)에 제1 256-비트를 저장하고, 섀도우 래치(147)에 제2 256-비트를 저장한다. 즉, 기입 동작 동안, 제1 사이클에서 일반 래치(146)는 512-비트 연산과 관련된 하위 256-비트를 저장한다. 제2 사이클에서, 섀도우 래치(147)는 512-비트 연산의 상위 256-비트를 저장한다. 판독 동작 동안, 제1 사이클에서 데이터는 일반 래치(146)로부터 판독된다. 제2 사이클에서, 섀도우 선택 MUX(148)에 의해 선택된 섀도우 래치(147)는 EX(150)(도 1 및 도 3에 도시됨)로부터 판독되고 이 EX에 제공된다.
도 3은 일부 실시형태에 따라 도 1의 프로세서 코어를 사용하여 섀도우 래칭을 사용하는 방법(300)을 도시한다. 블록(310)에서, 데이터 동작(예를 들어, 판독 동작 또는 기입 동작)을 갖는 명령어 세트는 프로세서 코어(100)에 의해 부동 소수점 유닛(120)으로 개시된다. 블록(330)에서, 부동 소수점 유닛(120)은 제2 비트 폭의 명령어 세트에 대해 동작한다. 블록(340)에서, 명령어 세트의 비트 폭 동작을 평가한 것에 기초하여, 부동 소수점 유닛(120)은 SC-FPRF(145)를 사용하여 비트 폭 재구성을 수행한다. 예를 들어, 일부 실시형태에서, 명령어 세트의 비트 폭 동작을 평가하는 것은 명령어 세트의 비트 폭이 512-비트 연산인지 또는 256-비트 연산인지 여부를 결정하는 것과, 부동 소수점 유닛(120)에 의해 수행될 데이터 동작이 판독 동작인지, 기입 동작인지, 또는 판독 동작과 기입 동작 모두인지 여부를 결정하는 것을 포함한다. 일부 실시형태에서, 명령어 세트의 비트 폭이 512-비트인지 또는 256-비트인지 여부를 결정하는 것은 부동 소수점 유닛(120)이 부동 소수점 연산 동안 비트 폭 재구성을 수행할지 또는 단순히 규정된 256-비트(부동 소수점 유닛(120)의 데이터 경로의 비트 폭)의 부동 소수점 연산을 수행할지 여부를 지시한다. 일부 실시형태에서, 부동 소수점 유닛(120)에 의해 수행될 데이터 동작이 판독 동작인지 또는 기입 동작인지 여부를 결정하는 것은, 섀도우 래치에 액세스하는 타이밍을 지시하는 기입 제어 신호 또는 판독 제어 신호를 활성화하고, 부동 소수점 유닛(120)에서 판독 및 기입 동작을 위해 섀도우 선택 MUX(148)를 사용하여 액세스되어야 하는 섀도우 래치를 활성화한다.
도 4는 일부 실시형태에 따라 도 1의 프로세서 코어(100)의 SC-FPRF(145)의 블록도이다. SC-FPRF(145)는 기입 MUX(470), 일반 래치(446), 섀도우 래치(447), 및 섀도우 선택 MUX(448)를 포함한다. 다양한 실시형태에서, 2개의 래치(예를 들어, 일반 래치(446)와 섀도우 래치(447))는 단일 기입 MUX(470)를 공유하지만, 기입 과정 동안 상이한 기입 클록(예를 들어, 기입 클록 신호(410)와 섀도우 기입 클록 신호(420))을 활용한다.
기입 동작 동안, SC-FPRF(145)의 기입 포트에서, 기입 MUX(470)는 일반 래치(446)와 섀도우 래치(447)에 기입되어야 하는 기입 데이터(예를 들어, 512-비트 데이터)를 수신한다. 기입 MUX 신호(440)에 기초하여, 기입 클록 신호(410) 논리 값이 하이일 때, 기입 MUX(470)는 기입 데이터(491)가 일반 래치(446)에 기입되게 한다. 섀도우 기입 클록 신호(420) 논리 값이 하이일 때, 기입 MUX(470)는 기입 데이터(492)를 섀도우 래치(447)로 보낸다. 일반 래치(446)와 섀도우 래치(447)는 수신된 기입 데이터(491)와 기입 데이터(492)를 각각 저장한다. 판독 동작 동안, 일반 래치(446)와 섀도우 래치(447)는 예를 들어 섀도우 선택 MUX(448)를 제어하는 섀도우 선택 MUX 신호(430)의 논리 값에 기초하여 래치 데이터(461)와 섀도우 래치 데이터(471)를 방출한다. 일부 실시형태에서, 예를 들어, 섀도우 선택 MUX 신호(430)의 논리 값이 로우(low)일 때, 래치 데이터(461)는 래치(446)로부터 판독 데이터(499)로서 판독된다. 섀도우 선택 MUX 신호(430)가 하이일 때, 섀도우 래치 데이터(471)는 섀도우 래치(447)로부터 판독 데이터(499)로서 판독된다. 그런 다음 판독 데이터(499)는 SC-FPRF(145)의 출력으로서 판독 포트 MUX를 통해 실행 유닛(150)에 제공된다.
도 5는 일부 실시형태에 따라 도 4의 SC-FPRF(145)를 활용하는 판독 및 기입 동작의 타이밍도(500)이다. 타이밍도(500)는 클록 신호(510), 섀도우 선택 MUX 신호(430), 판독 데이터(499), 기입 클록 신호(410), 래치 데이터(461), 섀도우 기입 클록 신호(420), 및 섀도우 래치 데이터(471)를 도시한다. 도시된 실시형태에서, 타이밍도(500)는 4개의 클록 사이클을 도시하지만, 다른 실시형태에서는 다양한 수의 클록 사이클이 활용된다.
기입 동작의 경우, 제1 클록 사이클 동안 기입 클록 신호(410)와 섀도우 기입 클록 신호(420)가 로우이고, 데이터가 일반 래치(446) 또는 섀도우 래치(447)에 기입되지 않는다. 제1 클록 사이클의 끝에서, 기입 클록 신호(410)는 로우로부터 하이로 전이하고, 그 결과 기입 데이터(491)는 일반 래치(446)에 기입된다. 섀도우 기입 클록 신호(420)는 전이 동안 로우에 유지되고, 데이터는 제2 사이클 동안 섀도우 래치(447)에 기입되지 않는다. 제2 클록 사이클의 끝에서, 제2 클록 사이클의 중간에 로우로 전이된 기입 클록 신호(410)는 로우에 유지되고, 제3 사이클 동안 일반 래치(446)에 데이터가 기입되지 않는다. 섀도우 기입 클록 신호(420)는 제2 클록 사이클의 끝에서 로우로부터 하이로 전이하고, 기입 데이터(492)는 섀도우 래치(447)에 기입된다. 제3 클록 사이클의 끝에서, 기입 클록 신호(410)와 섀도우 기입 클록 신호(420)는 로우에 유지되고, 제4 클록 사이클 동안 일반 래치(446)와 섀도우 래치(447)에 각각 데이터가 기입되지 않는다. 판독 동작의 경우, 제1 클록 사이클 동안 섀도우 선택 MUX 신호(430)는 로우이고, 데이터는 섀도우 래치(447)로부터 판독되지 않는 반면, 래치 데이터(461)는 일반 래치(446)로부터 판독된다. 제1 사이클의 끝에서, 섀도우 선택 MUX 신호(430)가 로우로부터 하이로 전이할 때, 섀도우 래치 데이터(471)는 섀도우 래치(447)로부터 판독된다. 함께, 래치 데이터(461)와 섀도우 래치 데이터(471)는 도 1의 SC-FPRF(145)의 출력에서 원하는 비트 폭 구성을 제공하도록 결합된다.
컴퓨터 판독 가능 저장 매체는 컴퓨터 시스템에 명령어 및/또는 데이터를 제공하기 위해 사용 동안 컴퓨터 시스템에 의해 액세스 가능한 임의의 비일시적 저장 매체 또는 비일시적 저장 매체의 조합을 포함할 수 있다. 이러한 저장 매체는 광학 매체(예를 들어, 콤팩트 디스크(CD), 디지털 다목적 디스크(DVD), 블루-레이 디스크), 자기 매체(예를 들어, 플로피 디스크, 자기 테이프 또는 자기 하드 드라이브), 휘발성 메모리(예를 들어, 랜덤 액세스 메모리(RAM) 또는 캐시), 비휘발성 메모리(예를 들어, 판독 전용 메모리(ROM) 또는 플래시 메모리), 또는 마이크로 전기기계 시스템(MEMS) 기반 저장 매체를 포함하지만 이들로 제한되지 않는다. 컴퓨터 판독 가능 저장 매체는 컴퓨팅 시스템에 내장되거나(예를 들어, 시스템 RAM 또는 ROM), 컴퓨팅 시스템에 고정 부착되거나(예를 들어, 자기 하드 드라이브), 컴퓨팅 시스템에 착탈식으로 부착되거나(예를 들어, 광 디스크 또는 범용 직렬 버스(USB) 기반 플래시 메모리), 또는 유선 또는 무선 네트워크를 통해 컴퓨터 시스템에 결합될(예를 들어, 네트워크 액세스 가능 저장 매체(NAS)) 수 있다.
일부 실시형태에서, 위에서 설명된 기술의 특정 양태는 소프트웨어를 실행하는 처리 시스템의 하나 이상의 프로세서에 의해 구현될 수 있다. 소프트웨어는 비일시적 컴퓨터 판독 가능 저장 매체에 저장되거나 유형적으로 구현되는 하나 이상의 실행 가능한 명령어 세트를 포함한다. 소프트웨어는, 하나 이상의 프로세서에 의해 실행될 때 하나 이상의 프로세서를 조작하여 위에서 설명된 기술의 하나 이상의 양태를 수행하는 명령어 및 특정 데이터를 포함할 수 있다. 비일시적 컴퓨터 판독 가능 저장매체는 예를 들어, 자기 또는 광 디스크 저장 디바이스, 솔리드 스테이트 저장 디바이스, 예를 들어, 플래시 메모리, 캐시, 랜덤 액세스 메모리(RAM) 또는 기타 비휘발성 메모리 디바이스 또는 디바이스들 등을 포함할 수 있다. 비일시적 컴퓨터 판독 가능 저장 매체에 저장된 실행 가능 명령어는 하나 이상의 프로세서에 의해 해석되거나 실행 가능한 소스 코드, 어셈블리 언어 코드, 목적 코드, 또는 다른 명령어 형식일 수 있다.
일반적인 설명에서 위에서 설명한 모든 활동이나 요소가 필요한 것은 아니며, 특정 활동이나 디바이스의 일부는 필요하지 않을 수도 있고, 설명된 것에 더하여 하나 이상의 추가 활동이 수행되거나 요소가 포함될 수 있다는 것이 주목된다. 더 나아가, 활동이 나열되는 순서는 반드시 활동이 수행되는 순서인 것은 아니다. 또한, 특정 실시형태를 참조하여 개념을 설명하였다. 그러나, 이 기술 분야에 통상의 지식을 가진 자라면 하기 청구범위에 제시된 본 발명의 범위를 벗어나지 않고 다양한 수정 및 변경이 이루어질 수 있음을 인식할 수 있을 것이다. 따라서, 본 명세서와 도면은 본 발명을 제한하는 것이 아니라 본 발명을 예시하는 것으로 간주되어야 하며, 이러한 모든 변형은 본 발명의 범위 내에 포함되는 것으로 의도된다.
이점, 다른 장점, 및 문제에 대한 솔루션은 특정 실시형태와 관련하여 위에서 설명되었다. 그러나, 이점, 장점, 문제에 대한 솔루션, 및 임의의 이점, 장점 또는 솔루션을 발생시키거나 보다 현저하게 할 수 있는 임의의 특징(들)은 임의의 청구항 또는 모든 청구항의 중요, 필수 또는 핵심 기능인 것으로 해석되어서는 안 된다. 더욱이, 위에 개시된 특정 실시형태는 단지 예시적인 것이며, 개시된 주제는 본 명세서의 내용의 이점을 갖는 이 기술 분야에 통상의 지식을 가진 자에게 명백한 다른 균등한 방식으로 수정되고 실시될 수 있다. 아래의 청구범위에 제시된 것 외에 본 명세서에 제시된 구성 또는 디자인의 세부사항에 제한을 두지 않는다. 따라서 위에 개시된 특정 실시형태는 변경되거나 수정될 수 있고, 이러한 모든 변형은 개시된 주제의 범위 내에 있는 것으로 고려되는 것이 명백하다. 따라서, 본 명세서에서 추구하는 보호 범위는 아래의 청구범위에 제시된 바와 같다.

Claims (20)

  1. 프로세서로서,
    제1 비트 폭에서 동작하는 명령어 세트를 갖는 프론트-엔드; 및
    상기 명령어 세트를 수신하도록 결합되고 제2 비트 폭에서 동작하는 부동 소수점 유닛을 포함하고, 상기 부동 소수점 유닛에 제공된 명령어 세트의 비트 폭을 평가한 것에 기초하여, 상기 부동 소수점 유닛은 섀도우-래치로 구성된 레지스터 파일을 사용하여 비트 폭 재구성을 수행하는, 프로세서.
  2. 제1항에 있어서,
    상기 비트 폭 재구성은 상기 제2 비트 폭에서 동작하는 상기 부동 소수점 유닛이 상기 제1 비트 폭에서 수신된 명령어 세트에 대해 동작할 수 있게 하는, 프로세서.
  3. 제1항에 있어서,
    상기 섀도우-래치로 구성된 레지스터 파일은 상기 섀도우 래치로부터 판독되거나 상기 섀도우 래치에 기입되어야 하는 데이터를 저장하기 위해 복수의 일반 래치와 복수의 섀도우 래치를 포함하는, 프로세서.
  4. 제3항에 있어서,
    상기 복수의 일반 래치 중 적어도 하나는 제1 비트 폭 동작의 복수의 하위 비트를 저장하고, 상기 복수의 섀도우 래치 중 적어도 하나는 상기 제1 비트 폭 동작과 연관된 복수의 상위 비트를 저장하는, 프로세서.
  5. 제4항에 있어서,
    상기 제1 비트 폭 동작은 512-비트 폭 동작이고, 상기 제2 비트 폭은 256 비트인, 프로세서.
  6. 제3항에 있어서,
    상기 섀도우-래치로 구성된 레지스터 파일은 상기 복수의 섀도우 래치에 결합된 복수의 섀도우 멀티플렉서(MUX)를 포함하는, 프로세서.
  7. 제6항에 있어서,
    판독 동작 동안, 상기 복수의 섀도우 MUX 중 적어도 하나는 상기 복수의 섀도우 래치 중 판독할 적어도 하나의 섀도우 래치를 선택하는 데 사용되는, 프로세서.
  8. 제3항에 있어서,
    기입 동작 동안, 상기 복수의 섀도우 래치 중 적어도 하나의 섀도우 래치는 복수의 클록 사이클 중 제2 클록 사이클 동안 기입 제어 신호를 사용하여 활성화되는, 프로세서.
  9. 제3항에 있어서,
    판독 동작 동안, 상기 복수의 섀도우 래치 중 적어도 하나의 섀도우 래치의 판독 동작은 제2 클록 사이클 동안 판독 제어 신호에 의해 활성화되고, 상기 판독 제어 신호는 섀도우 선택 멀티플렉서가 복수의 클록 사이클 중 제2 클록 사이클 동안 판독 동작을 위한 섀도우 래치를 선택하게 하는, 프로세서.
  10. 제1항에 있어서,
    판독 논리는 복수의 섀도우 래치로부터 데이터를 판독할 섀도우 래치를 선택하는 데 사용하는, 프로세서.
  11. 제3항에 있어서,
    상기 섀도우 래치는 상기 섀도우-래치로 구성된 레지스터 파일의 단일 항목에 위치된, 프로세서.
  12. 방법으로서,
    제1 비트 폭에서 동작하는 명령어 세트를 수신하는 단계;
    제2 비트 폭에서 부동 소수점 유닛을 동작시키는 단계; 및
    상기 명령어 세트의 비트 폭을 평가한 것에 기초하여, 섀도우-래치로 구성된 레지스터 파일을 사용하여 비트 폭 재구성을 수행하는 단계
    를 포함하는, 방법.
  13. 제12항에 있어서,
    상기 비트 폭 재구성은 상기 제2 비트 폭에서 동작하는 상기 부동 소수점 유닛이 상기 제1 비트 폭에서 수신된 명령어 세트에 대해 동작할 수 있게 하는, 방법.
  14. 제12항에 있어서,
    상기 섀도우-래치로 구성된 레지스터 파일은 상기 섀도우 래치로부터 판독되거나 상기 섀도우 래치에 기입되어야 하는 데이터를 저장하기 위해 복수의 일반 래치와 복수의 섀도우 래치를 포함하는, 방법.
  15. 제14항에 있어서,
    제1 비트 폭 동작의 복수의 하위 비트를 상기 복수의 일반 래치 중 적어도 하나에 저장하고, 상기 제1 비트 폭 동작과 연관된 복수의 상위 비트를 상기 복수의 섀도우 래치 중 적어도 하나에 저장하는 단계를 더 포함하는, 방법.
  16. 제14항에 있어서,
    상기 제1 비트 폭은 512-비트 폭이고, 상기 제2 비트 폭은 256-비트 폭인, 방법.
  17. 제14항에 있어서,
    상기 섀도우-래치로 구성된 레지스터 파일은 상기 복수의 섀도우 래치에 결합된 복수의 섀도우 멀티플렉서(MUX)를 포함하는, 방법.
  18. 제17항에 있어서,
    판독 동작 동안, 상기 복수의 섀도우 MUX 중 적어도 하나는 상기 복수의 섀도우 래치 중 판독할 적어도 하나의 섀도우 래치를 선택하는 데 사용되고;
    기입 동작 동안, 상기 복수의 섀도우 래치 중 적어도 하나의 섀도우 래치에 대한 기입 동작은 복수의 클록 사이클 중 제2 클록 사이클 동안 기입 제어 신호를 사용하여 활성화되는, 방법.
  19. 부동 소수점 유닛으로서,
    스케줄러 유닛; 및
    상기 스케줄러 유닛에 결합된 섀도우-래치로 구성된 레지스터 파일을 포함하고, 제1 비트 폭에서 상기 부동 소수점 유닛에 제공된 명령어 세트의 비트 폭을 평가한 것에 기초하여, 상기 부동 소수점 유닛은 상기 섀도우-래치로 구성된 레지스터 파일을 사용하여 제2 비트 폭을 사용하여 비트 폭 재구성을 수행하는, 부동 소수점 유닛.
  20. 제1항에 있어서,
    상기 섀도우-래치로 구성된 레지스터 파일은 상기 섀도우 래치로부터 판독되거나 상기 섀도우 래치에 기입되어야 하는 데이터를 저장하기 위해 복수의 일반 래치와 복수의 섀도우 래치를 포함하는, 프로세서.
KR1020227010069A 2019-09-27 2020-09-25 섀도우-래치로 구성된 레지스터 파일을 사용한 비트 폭 재구성 KR20220064975A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/585,817 2019-09-27
US16/585,817 US11544065B2 (en) 2019-09-27 2019-09-27 Bit width reconfiguration using a shadow-latch configured register file
PCT/US2020/052756 WO2021062178A1 (en) 2019-09-27 2020-09-25 Bit width reconfiguration using a shadow-latch configured register file

Publications (1)

Publication Number Publication Date
KR20220064975A true KR20220064975A (ko) 2022-05-19

Family

ID=75161993

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227010069A KR20220064975A (ko) 2019-09-27 2020-09-25 섀도우-래치로 구성된 레지스터 파일을 사용한 비트 폭 재구성

Country Status (6)

Country Link
US (1) US11544065B2 (ko)
EP (1) EP4034991A4 (ko)
JP (1) JP2022548864A (ko)
KR (1) KR20220064975A (ko)
CN (1) CN114467077A (ko)
WO (1) WO2021062178A1 (ko)

Family Cites Families (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5860000A (en) 1996-01-31 1999-01-12 Hitachi Micro Systems, Inc. Floating point unit pipeline synchronized with processor pipeline
US5933627A (en) 1996-07-01 1999-08-03 Sun Microsystems Thread switch on blocked load or store using instruction thread field
US6298431B1 (en) 1997-12-31 2001-10-02 Intel Corporation Banked shadowed register file
US5986962A (en) 1998-07-23 1999-11-16 International Business Machines Corporation Internal shadow latch
EP1004959B1 (en) 1998-10-06 2018-08-08 Texas Instruments Incorporated Processor with pipeline protection
US6240031B1 (en) 2000-03-24 2001-05-29 Cypress Semiconductor Corp. Memory architecture
US6430083B1 (en) * 2000-06-28 2002-08-06 Intel Corporation Register file scheme
US6877084B1 (en) * 2000-08-09 2005-04-05 Advanced Micro Devices, Inc. Central processing unit (CPU) accessing an extended register set in an extended register mode
US6470435B2 (en) 2000-12-28 2002-10-22 Intel Corporation Dual state rename recovery using register usage
US6950928B2 (en) 2001-03-30 2005-09-27 Intel Corporation Apparatus, method and system for fast register renaming using virtual renaming, including by using rename information or a renamed register
US20030023836A1 (en) 2001-06-01 2003-01-30 Michael Catherwood Shadow register array control instructions
JP2003016051A (ja) * 2001-06-29 2003-01-17 Nec Corp 複素ベクトル演算プロセッサ
US6795360B2 (en) 2001-08-23 2004-09-21 Integrated Device Technology, Inc. Fifo memory devices that support all four combinations of DDR or SDR write modes with DDR or SDR read modes
US7134002B2 (en) 2001-08-29 2006-11-07 Intel Corporation Apparatus and method for switching threads in multi-threading processors
US7213134B2 (en) 2002-03-06 2007-05-01 Hewlett-Packard Development Company, L.P. Using thread urgency in determining switch events in a temporal multithreaded processor unit
US7127592B2 (en) 2003-01-08 2006-10-24 Sun Microsystems, Inc. Method and apparatus for dynamically allocating registers in a windowed architecture
US7069411B1 (en) 2003-08-04 2006-06-27 Advanced Micro Devices, Inc. Mapper circuit with backup capability
US7426728B2 (en) 2003-09-24 2008-09-16 Hewlett-Packard Development, L.P. Reducing latency, when accessing task priority levels
US7343480B2 (en) 2003-10-09 2008-03-11 International Business Machines Corporation Single cycle context switching by swapping a primary latch value and a selected secondary latch value in a register file
US8140829B2 (en) 2003-11-20 2012-03-20 International Business Machines Corporation Multithreaded processor and method for switching threads by swapping instructions between buffers while pausing execution
US20050138323A1 (en) 2003-12-18 2005-06-23 Intel Corporation, A Delaware Corporation Accumulator shadow register systems and methods
US7398347B1 (en) * 2004-07-14 2008-07-08 Altera Corporation Methods and apparatus for dynamic instruction controlled reconfigurable register file
US20060294344A1 (en) 2005-06-28 2006-12-28 Universal Network Machines, Inc. Computer processor pipeline with shadow registers for context switching, and method
US7844804B2 (en) 2005-11-10 2010-11-30 Qualcomm Incorporated Expansion of a stacked register file using shadow registers
US7565513B2 (en) 2007-02-28 2009-07-21 Advanced Micro Devices, Inc. Processor with power saving reconfigurable floating point unit decoding an instruction to single full bit operation or multiple reduced bit operations
US20080209185A1 (en) * 2007-02-28 2008-08-28 Advanced Micro Devices, Inc. Processor with reconfigurable floating point unit
US7778105B2 (en) 2008-03-17 2010-08-17 Oracle America, Inc. Memory with write port configured for double pump write
KR20100009421A (ko) 2008-07-18 2010-01-27 현대자동차주식회사 자동차 배터리 케이스용 폴리프로필렌 수지 조성물 및 이를이용한 고단열성 자동차 배터리 케이스
US20110241744A1 (en) * 2008-08-28 2011-10-06 Aspen Acquisition Corporation Latch-based implementation of a register file for a multi-threaded processor
CN101788901B (zh) 2009-01-24 2013-09-25 世意法(北京)半导体研发有限责任公司 使用影子寄存器的高效硬件实现的设备及其方法
KR101553652B1 (ko) * 2009-02-18 2015-09-16 삼성전자 주식회사 이종 프로세서에 대한 명령어 컴파일링 장치 및 방법
US9207943B2 (en) 2009-03-17 2015-12-08 Qualcomm Incorporated Real time multithreaded scheduler and scheduling method
US20110004644A1 (en) * 2009-07-03 2011-01-06 Via Technologies, Inc. Dynamic floating point register precision control
US8560924B2 (en) 2010-01-05 2013-10-15 International Business Machines Corporation Register file soft error recovery
US20120110037A1 (en) * 2010-11-01 2012-05-03 Qualcomm Incorporated Methods and Apparatus for a Read, Merge and Write Register File
US9292221B2 (en) 2011-09-29 2016-03-22 Intel Corporation Bi-directional copying of register content into shadow registers
US9639369B2 (en) * 2013-11-11 2017-05-02 Apple Inc. Split register file for operands of different sizes
US9514842B2 (en) 2014-09-24 2016-12-06 Apple Inc. Memory testing system
US10241800B2 (en) 2015-06-16 2019-03-26 International Business Machines Corporation Split-level history buffer in a computer processing unit
US20170060593A1 (en) 2015-09-02 2017-03-02 Qualcomm Incorporated Hierarchical register file system
US10622043B2 (en) 2017-09-11 2020-04-14 Qualcomm Incorporated Multi-pump memory system access circuits for sequentially executing parallel memory operations
US11709681B2 (en) 2017-12-11 2023-07-25 Advanced Micro Devices, Inc. Differential pipeline delays in a coprocessor

Also Published As

Publication number Publication date
CN114467077A (zh) 2022-05-10
US11544065B2 (en) 2023-01-03
US20210096862A1 (en) 2021-04-01
WO2021062178A1 (en) 2021-04-01
JP2022548864A (ja) 2022-11-22
EP4034991A1 (en) 2022-08-03
EP4034991A4 (en) 2023-10-18

Similar Documents

Publication Publication Date Title
TWI654562B (zh) 藉由演算法匹配、停用特徵或限制效能之回溯相容性
CN107077321B (zh) 用于执行融合的单个周期递增-比较-跳转的指令和逻辑
US10048967B2 (en) Processor arranged to operate as a single-threaded (nX)-bit processor and as an n-threaded X-bit processor in different modes of operation
TWI644208B (zh) 藉由對硬體資源之限制實現的向後相容性
TWI567751B (zh) 多暫存器記憶體存取指令、處理器、方法及系統
US9639369B2 (en) Split register file for operands of different sizes
JP5853303B2 (ja) レジスタ初期化動作の最適化
US10678541B2 (en) Processors having fully-connected interconnects shared by vector conflict instructions and permute instructions
JP2017538213A (ja) アウトオブオーダーハードウェアソフトウェア協調設計プロセッサにおいてスタック同期命令を用いてプレディケート値のスタックを実装し維持する方法および装置
RU2639695C2 (ru) Процессоры, способы и системы для осуществления доступа к набору регистров либо как к множеству малых регистров, либо как к объединенному большому регистру
CN115686633A (zh) 用于实现链式区块操作的系统和方法
JP5806748B2 (ja) 書き込みマスク・レジスタの末尾の最下位マスキング・ビットを判定するためのシステム、装置、および方法
JP6807073B2 (ja) 高速ベクトルによる動的なメモリ競合検出
JP6835436B2 (ja) マスクをマスク値のベクトルに拡張するための方法および装置
JP2017538215A (ja) 逆分離演算を実行するための命令及びロジック
US20160378480A1 (en) Systems, Methods, and Apparatuses for Improving Performance of Status Dependent Computations
US20160170767A1 (en) Temporary transfer of a multithreaded ip core to single or reduced thread configuration during thread offload to co-processor
US11544065B2 (en) Bit width reconfiguration using a shadow-latch configured register file
US11960897B2 (en) Apparatus and methods employing a shared read post register file
US11573801B1 (en) Method and apparatus for executing vector instructions with merging behavior
US20210132985A1 (en) Shadow latches in a shadow-latch configured register file for thread storage
KR20140113579A (ko) 데이터 요소에 있는 비트들의 제로화를 위한 시스템, 장치, 및 방법