프로세서 레지스터

Processor register

프로세서 레지스터는 컴퓨터 프로세서가 빠르게 접근할 수 있는 위치입니다.레지스터는 보통 소량의 고속 저장소로 구성되어 있지만 일부 레지스터는 특정 하드웨어 기능을 가지고 있으며 읽기 전용 또는 쓰기 전용일 수 있습니다.컴퓨터 아키텍처에서 레지스터는 일반적으로 메인 메모리 이외의 메커니즘에 의해 주소 지정되지만, 경우에 따라서는 DEC PDP-10, ICT 1900과 같은 메모리 주소를 할당할 수 있습니다.

로드/스토어 아키텍처에 관계없이 거의 모든 컴퓨터는 더 큰 메모리에서 데이터를 레지스터에 로드합니다. 레지스터는 연산 작업에 사용되며 기계 명령에 의해 조작 또는 테스트됩니다.조작한 데이터는 같은 명령 또는 후속 명령으로 메인 메모리에 저장되는 경우가 많습니다.최신 프로세서는 메인 메모리로 스태틱 또는 다이내믹 RAM을 사용합니다.메인 메모리는 보통 1개 이상의 캐시 레벨을 통해 액세스 됩니다.

프로세서 레지스터는 일반적으로 메모리 계층의 맨 위에 있으며 데이터에 가장 빨리 액세스할 수 있는 방법을 제공합니다.이 용어는 일반적으로 명령 집합에서 정의된 명령의 일부로 직접 인코딩된 레지스터 그룹만을 가리킵니다.그러나 현대의 고성능 CPU는 레지스터 이름을 변경하여 성능을 향상시키고 병렬 및 추측 실행을 가능하게 하기 위해 이러한 "아키텍처 레지스터"를 복제하는 경우가 많습니다.최신 x86 설계에서는 1995년경 Pentium Pro, Cyrix 6x86, Nx586AMD K5 출시와 함께 이러한 기술을 습득했습니다.

컴퓨터 프로그램이 동일한 데이터에 반복적으로 액세스하는 경우 이를 참조 인접성이라고 합니다.자주 사용하는 값을 레지스터에 유지하는 것은 프로그램 성능에 매우 중요합니다.레지스터 할당코드 생성 단계에서 컴파일러에 의해 수행되거나 어셈블리 언어 프로그래머에 의해 수동으로 수행됩니다.

사이즈

레지스터는 일반적으로 "8비트 레지스터", "32비트 레지스터", "64비트 레지스터" 등과 같이 보유할 수 있는 비트 수로 측정됩니다.일부 명령 집합에서 레지스터는 기억 메모리를 작은 것으로 분해하는 다양한 모드로 동작할 수 있으며(32비트를 예를 들어 4개의 8비트로 분할) 여러 데이터(벡터 또는 데이터의 1차원 배열)가 동시에 로드 및 동작할 수 있다.일반적으로 메모리를 더 큰 레지스터에 매핑하는 추가 레지스터를 추가하여 구현됩니다.여러 데이터에 대해 단일 명령을 실행할 수 있는 프로세서를 벡터 프로세서라고 합니다.

종류

프로세서에는 여러 종류의 레지스터가 포함되어 있는 경우가 많습니다.레지스터는, 그 내용이나 그 위에서 동작하는 지시에 따라서 분류할 수 있습니다.

  • 사용자가 액세스할 수 있는 레지스터는 기계 지침에 따라 읽거나 쓸 수 있습니다.사용자가 접근할 수 있는 레지스터의 가장 일반적인 구분은 데이터 레지스터와 주소 레지스터입니다.
    • 데이터 레지스터에는 정수 등의 숫자 데이터 값, 일부 아키텍처에서는 부동소수점 값, 문자, 작은 비트 배열 및 기타 데이터를 저장할 수 있습니다.일부 구형 및 로우엔드 CPU에서는 어큐뮬레이터라고 하는 특수한 데이터 레지스터가 많은 작업에 암묵적으로 사용됩니다.
    • 주소 레지스터는 주소를 유지하며 프라이머리 메모리에 간접적으로 액세스하는 명령에 의해 사용됩니다.
      • 일부 프로세서는 주소 보유에만 사용할 수 있는 레지스터 또는 숫자보유에만 사용할 수 있는 레지스터를 포함하고 있습니다(어떤 경우에는 값이 어떤 주소에서 오프셋으로 추가되는 인덱스 레지스터로 사용됨). 다른 프로세서에서는 레지스터가 어떤 종류의 수량도 보유할 수 있습니다.피연산자의 유효 주소를 지정하기 위해서 사용되는, 다양한 어드레싱 모드가 있습니다.
      • 스택 포인터는 런타임스택 관리에 사용됩니다.다른 데이터 스택은 전용 주소 레지스터에 의해 주소 지정되는 경우가 거의 없습니다(스택 머신 참조).
    • 범용 레지스터(GPR)는 데이터와 주소의 양쪽 모두를 저장할 수 있습니다.즉, 그것들은 결합된 데이터/주소 레지스터입니다.어떤 아키텍처에서는 GPR이 부동소수점 번호도 저장할 수 있도록 레지스터 파일을 통합합니다.
    • 상태 레지스터명령을 실행해야 하는지 여부를 결정하기 위해 자주 사용되는 진실 값을 유지합니다.
    • 부동소수점 레지스터(FPR)는 많은 아키텍처에서 부동소수점 번호를 저장합니다.
    • 상수 레지스터는 0, 1 또는 pi와 같은 읽기 전용 값을 유지합니다.
    • 벡터 레지스터는 SIMD 명령(단일 명령, 다중 데이터)에 의해 수행된 벡터 처리를 위한 데이터를 보유합니다.
    • 특수 목적 레지스터(SPR)는 프로그램 상태를 유지합니다. 일반적으로 명령 포인터라고도 불리는 프로그램 카운터 및 상태 레지스터를 포함합니다. 프로그램 카운터와 상태 레지스터는 프로그램 상태 워드(PSW) 레지스터에 결합될 수 있습니다.전술한 스택포인터도 이 그룹에 포함되는 경우가 있습니다.임베디드 마이크로프로세서는 특수한 하드웨어 요소에 대응하는 레지스터를 가질 수도 있습니다.
    • 일부 아키텍처에서는 모델 고유의 레지스터(머신 고유의 레지스터라고도 함)가 프로세서 자체에 관련된 데이터와 설정을 저장합니다.이러한 의미는 특정 프로세서의 설계에 따라 달라지기 때문에 프로세서 세대 간에 표준으로 유지될 것으로 기대할 수 없습니다.
    • 메모리 타입 레인지 레지스터(MTRR)
  • 내부 레지스터 – 명령으로 접근할 수 없는 레지스터.프로세서 동작에 내부적으로 사용됩니다.
    • 명령 레지스터. 현재 실행 중인 명령을 보관합니다.
    • CPU와는 다른 칩에 있는 스토리지 레지스터의 집합인 RAM에서 정보 가져오는 것과 관련된 레지스터:
  • 아키텍처 레지스터 – 기본 하드웨어에 의해 레지스터 이름이 변경된 경우 아키텍처에 의해 정의된 소프트웨어에 표시되는 레지스터가 물리적 하드웨어에 대응하지 않을 수 있습니다.

하드웨어 레지스터는 비슷하지만 CPU 외부에서 발생합니다.

일부 아키텍처(SPARC 및 MIPS 등)에서 정수 레지스터 파일의 첫 번째 또는 마지막 레지스터는 읽기 시 항상 0을 반환하도록 유선 연결되어 있어(대부분 인덱싱 모드를 단순화하기 위해), 덮어쓸 수 없다는 점에서 의사 레지스터입니다.Alpha에서는 부동소수점 레지스터 파일에 대해서도 이 작업이 수행됩니다.그 결과, 레지스터 파일은, 실제로 사용할 수 있는 레지스터의 수보다 많은 1개의 레지스터를 가지는 것으로 통용된다.예를 들면, 그 중 31개만이 레지스터의 상기의 정의내에 들어갈 경우, 32개의 레지스터가 인용된다.

다음 표에 몇 가지 메인스트림 CPU 아키텍처의 레지스터 수를 나타냅니다.x86 호환 프로세서에서는 스택 포인터()ESP가 정수 레지스터로 카운트됩니다.단, 스택 포인터()의 내용에 대한 조작에 사용할 수 있는 명령의 수는 한정되어 있습니다.대부분의 아키텍처에도 동일한 경고가 적용됩니다.

위에 열거된 모든 건축물은 다르지만, 거의 모든 건축물은 헝가리계 미국인 수학자 존 폰 노이만이 처음 제안한 폰 노이만 건축으로 알려진 기본적인 배열에 있다.GPU의 레지스터 수가 CPU의 레지스터 수보다 훨씬 많다는 점도 주목할 만하다.

아키텍처 GPR/데이터+주소 레지스터 FP 레지스터 메모들
AT&T 호빗 000. 스택 7 스택 머신
크레이-1[1] 8 스칼라 데이터, 8 주소 8 스칼라, 8 벡터

(64 요소)

스칼라 데이터 레지스터는 정수 또는 부동 소수점일 수 있습니다.또한 스칼라 스크래치 패드 T 레지스터 64개 및 주소 스크래치 패드 B 레지스터 64개
4004[2] 어큐뮬레이터x 1, 기타 16 000. 레지스터 A는 범용이며, r0~r15 레지스터는 주소 및 세그먼트용입니다.
8008[3] 어큐뮬레이터×1, 기타×6 000. A 레지스터는 모든 산술이 이루어지는 어큐뮬레이터입니다.H 레지스터와 L 레지스터를 조합하여 주소 레지스터로 사용할 수 있습니다.모든 레지스터는 로드/스토어/이동/증분/감소 명령에서 피연산자로 사용할 수 있으며, 산술 명령에서는 다른 피연산자로 사용할 수 있습니다.사용 가능한 FP 유닛이 없습니다.
8080[4] 어큐뮬레이터×1, 기타×6 000. 스택 포인터도 추가.A 레지스터는 모든 산술이 실행되는 어큐뮬레이터입니다. 레지스터 쌍 B+C, D+E 및 H+L은 일부 명령에서 주소 레지스터로 사용할 수 있습니다. 모든 레지스터는 로드/스토어/이동/증분/감소 명령에서 피연산자로 사용할 수 있습니다.일부 명령어는 H+L만을 사용하고 다른 명령어는 H+L과 D+E를 스왑합니다.8080용 부동소수점 프로세서는 인텔8231, AMD Am9511인텔8232입니다.또한 Z80 및 유사한 프로세서에서도 쉽게 사용할 수 있었습니다.
iAPX432 000. 스택 6 스택 머신
16비트 x86[5] 006 8개의 스택

(FP가 존재하는 경우)

8086/8088, 80186/80188, 80286(부동소수점용 8087, 80187 또는 80287 포함), 80비트 폭의 8 딥 레지스터 스택(일부 명령어는 스택의 상부에 상대적인 레지스터를 오퍼랜드로 사용할 수 있음), 8087/80187/80287은 부동소수점 레지스터 없음
IA-32[6] 008 스택 8(FP가 존재하는 경우),

8(SSE/MMX가 있는 경우)

80386은 부동소수점용으로 80387이 필요했고, 이후 프로세서는 80비트 폭의 8 딥 레지스터 스택을 가지고 있었으며, 일부 명령어는 스택의 상부에 상대적인 레지스터를 오퍼랜드로 사용할 수 있었다.펜티엄 III 이후에는 SSE에 128비트 XMM 레지스터가 추가되었다.
x86-64[6][7] 016 16 또는 32

(AVX-512가 있는 경우)

FP 레지스터는 128비트 XMM 레지스터입니다.나중에 AVX/AVX2를 사용하는 256비트 YMM 레지스터 및 AVX-512[8]사용하는 512비트 ZMM0–ZM31 레지스터로 확장됩니다.
시온파이[9] 016 032 AVX-512에 의한 256/512비트 ZMM 레지스터 32개 포함.
페어차일드 F8 축전지 1개, 스크래치 패드 레지스터 64개, ISAR(간접 스크래치 패드 레지스터) 1개 지침은 처음 16개의 스크래치 패드 레지스터를 직접 참조할 수 있으며 ISAR를[10] 통해 모든 스크래치 패드 레지스터에 간접적으로 액세스할 수 있습니다.
지오드 GX 데이터 1개, 주소 1개 008 Geode GX/Media GX/4x86/5x86Cyrix/National Semiconductor가 제조한 486/Pentium 호환 프로세서의 에뮬레이션입니다.Transmeta와 마찬가지로 프로세서는 x86 코드를 네이티브 코드로 변환하여 [citation needed]실행하는 변환 레이어를 가지고 있었습니다.128비트 SSE 레지스터는 지원하지 않고 80비트 부동소수점 레지스터 8개로 구성된 80387 스택만 지원하며 AMD의 3DNow!도 부분적으로 지원합니다.네이티브 프로세서는 모든 목적을 위해 1개의 데이터 레지스터와 1개의 주소 레지스터만 포함되며 정수 연산을 위해 스크래치패드 SRAM 내에서 32비트 명명 레지스터 r1(베이스), r2(데이터), r3(백 포인터), r4(스택 포인터)의 4개의 경로로 변환됩니다.또한 x86 코드 에뮬레이션에 L1 캐시를 사용합니다(일부 286/386/48).리얼 [citation needed]모드의 ctions).이후 AMD가 National Semiconductor로부터 IP를 인수하여 임베디드 시장에서 Athlon core로 브랜드화하면서 이 설계는 포기되었습니다.
SunPlus SPG 000. 6 스택 + 4 SIMD 대만 Sunplus Technology사의 16비트 와이드 32비트 어드레스 스페이스 스택 머신 프로세서로 Vtech의 V에 탑재되어 있습니다.교육용 스마일 라인 및 Wireless 60, Mattel HyperScan, XaviXPORT 등의 비디오 게임 콘솔.명명/이름 변경을 위한 범용 레지스터 또는 내부 레지스터는 없지만 플로팅 소수점 유닛은 정점 셰이더 보조 프로세서에 80비트 6단계 스택과 128비트 VLIW SIMD 레지스터가 4개 있습니다.
VM Labs Nuon 000. 001 VM Labs가 개발한 멀티미디어 전용 32비트 스택 머신 프로세서.동사의 Nuon DVD 플레이어 콘솔 라인과 ZaPit 게임의 Game Wave Family Entertainment System에 게재되어 있습니다.이 설계는 인텔의 MMX 테크놀로지의 영향을 많이 받아 벡터 명령과 스칼라 명령 모두에 128바이트의 통합 스택 캐시가 포함되어 있습니다.통합 캐시는 뱅크 이름 변경을 통해 8개의 128비트 벡터 레지스터 또는 32비트 SIMD 스칼라 레지스터로 나눌 수 있습니다.이 아키텍처에는 정수 레지스터가 없습니다.
니오스 2세[11][12] 031 008 Nios II는 MIPS IV 명령[citation needed] 세트를 기반으로 하며 레지스터 0이 0에 유선 연결된 32비트 GPR 31개와 64비트 부동소수점[citation needed] 레지스터 8개를 갖추고 있습니다.
모토로라 6800[13] 데이터 2개, 인덱스 1개 000. 스택 포인터 추가
모토로라 68k[14] 8 데이터(d0~d7), 8 주소(a0~a7) 008

(FP가 존재하는 경우)

주소 레지스터 8(a7)은 스택 포인터입니다.68000, 68010, 68012, 68020 및 68030에는 부동소수점용 FPU가 필요합니다.68040에는 FPU가 내장되어 있습니다.FP 레지스터는 80비트입니다.
SH 16비트 001 006
Emotion 엔진 3(VU0)+32(VU1) 32 SIMD(UV1에 내장)

+ 2 x 32 Vector (GPU 근처에 있는 전용 벡터 보조 프로세서)

Emotion Engine의 메인코어(VU0)는 일반적인 백그라운드 태스크용으로 대폭 변경된 DSP 일반코어로 64비트 어큐뮬레이터 1개, 일반 데이터 레지스터 2개 및 32비트 프로그램카운터 1개를 포함합니다.수정된 MIPSIII 실행 가능 코어(VU1)는 게임 데이터 및 프로토콜 제어를 위한 것으로 정수 계산을 위한 32비트 범용 레지스터와 SIMD 명령, 스트리밍 데이터 값 및 일부 정수 계산 값을 저장하는 32128비트 SIMD 레지스터와 일반 부동소수점 계산 값을 접속하기 위한 1개의 어큐뮬레이터 레지스터를 포함한다.vector register 파일에 접속합니다.코프로세서는 32엔트리 128비트 벡터레지스터 파일(CPU 어큐뮬레이터에서 전달되는 벡터 값만 저장할 수 있음)을 통해 구축되며 정수 레지스터는 내장되어 있지 않습니다.벡터 보조 프로세서(VPU 0/1)와 Emotion Engine의 전체 메인 프로세서 모듈(VU0 + VU1 + VPU0 + VPU1)은 모두 수정된 MIPS 명령 세트를 기반으로 구축됩니다.이 경우 어큐뮬레이터는 범용이 아니라 제어 상태입니다.
쿠다[15] 설정 가능, 스레드당 최대 255 이전 세대는 스레드당 최대 127/63의 레지스터를 사용할 수 있었습니다(Tesla/Fermi).스레드당 더 많은 레지스터가 구성될수록 동시에 실행할 수 있는 스레드 수는 줄어듭니다.레지스터의 폭은 32비트이고, 2배 정밀 부동소수점 숫자이므로 64비트 포인터는 2개의 레지스터가 필요합니다.또한 [16]스레드당 최대 8개의 술어 레지스터가 있습니다.
CDC 6000 시리즈 016 008 8개의 'A' 레지스터, A0~A7은 18비트주소를 보유합니다.8개의 'B' 레지스터, B0~B7은 18비트 정수값을 보유합니다(영구적으로 B0을 0으로 설정). 8개의 'X' 레지스터, X0~X7은 60비트의 정수 또는 부동소수점 데이터를 보유합니다.8개의 18비트 A 레지스터 중 7개가 대응하는 X 레지스터에 결합되었습니다.A1 ~ A5 레지스터 중 하나를 값으로 설정하면 해당 주소의 콘텐츠 메모리 부하가 대응하는 X 레지스터에 가해집니다.마찬가지로 주소를 레지스터 A6 또는 A7로 설정하면 메모리 저장소가 X6 또는 X7에서 메모리 내의 해당 위치에 배치됩니다(레지스터 A0과 X0은 이와 같이 결합되지 않았습니다).
시스템/360, 시스템/370, 시스템/390, z/아키텍처 016 4(FP가 존재하는 경우);

G5 이후의 S/390 모델과 z/아키텍처에서는 16대

FP는 System/360에서는 옵션이며 S/370 이후에는 항상 존재합니다.벡터 퍼실리티가 있는 프로세서에는 머신 의존적인 수의 32비트 [17]요소를 포함하는 16개의 벡터 레지스터가 있습니다.를 들어 서브루틴 리턴 주소에는 레지스터 14가 사용되며 ELF ABI에는 레지스터 15가 스택 포인터로 사용됩니다.S/390 G5 프로세서는 부동소수점 레지스터의 수를 [18]16개로 늘렸습니다.
MMIX[19] 256 256 1990년대 후반 Donald Knuth가 교육학적 목적으로 설계한 명령어 세트입니다.
NS320xx[20] 008 008

(FP가 존재하는 경우)

엑스레이티드 X10 001 032 수정된 MIPS 명령 세트와 128비트 부동소수점 [citation needed]유닛을 갖춘 32/40비트 스택머신 기반의 네트워크 프로세서.
시차 프로펠러 000. 002 8코어 8/16비트 슬라이스 스택머신 컨트롤러는 내부에 단순한 논리회로가 내장되어 있으며 8개의 톱니바퀴 카운터(코어)가 있으며 각각 32비트x 512스택 RAM을 갖춘 3개의 8/16비트 특수제어 레지스터를 포함하고 있습니다.단, 정수 목적을 위한 일반 레지스터는 포함되어 있지 않습니다.최신 프로세서 및 멀티 코어 시스템의 대부분의 섀도 레지스터 파일과 달리 톱니바퀴의 모든 스택 RAM은 명령 수준에서 액세스할 수 있으며, 필요에 따라 이러한 모든 톱니바퀴가 단일 범용 코어로 작동할 수 있습니다.부동소수점 단위는 외부이며 80비트 벡터 레지스터가 2개 포함되어 있습니다.
아이테니엄 128 128 그리고 64개의 1비트 술어 레지스터와 8개의 분기 레지스터가 있습니다.FP 레지스터는 82비트입니다.
SPARC 031 032 글로벌 레지스터 0은 0에 유선 연결되어 있습니다.레지스터 창을 사용합니다.
IBM 파워 032 032 그리고 링크 하나와 카운트 레지스터 하나.
전원 ISA 032 032 그리고 링크 하나와 카운트 레지스터 하나.벡터 기능을 지원하는 프로세서에는 32개의 128비트 벡터 레지스터도 있습니다.
블랙핀 8 데이터, 2 어큐뮬레이터, 6 주소 000. 그리고 스택 포인터와 프레임 포인터.추가 레지스터는 제로 오버헤드루프 및 순환 버퍼 DAG(데이터 주소 생성기)를 구현하기 위해 사용됩니다.
IBM 셀 SPE 128 128 GPR. 정수, 주소 또는 부동소수점[21] 값을 유지할 수 있습니다.
PDP-10 016 모든 레지스터는 일반적으로 사용할 수 있습니다(정수, 플로트, 스택 포인터, 점프, 인덱싱 등).모든 36비트 메모리(또는 레지스터) 워드는 하프 워드로서 조작할 수도 있습니다.이것은 (18비트)주소로 간주할 수 있습니다.다른 단어 해석은 특정 명령에서 사용됩니다.원래의 PDP-10 프로세서에서는 이들 16개의 GPR은 메인(코어) 메모리 위치 0~15에도 대응하고 있습니다.즉, "고속 메모리"라고 불리는 하드웨어 옵션은 레지스터를 별도의 IC로 구현하고 메모리 위치 0~15는 IC 레지스터를 참조는 IC 레지스터를 참조합니다.이후 모델들은 레지스터를 "고속 메모리"로 구현했으며 메모리 위치 0 ~ 15가 레지스터를 참조하도록 했습니다.이동 명령은 (레지스터, 메모리) 오퍼랜드를 취합니다.MOVE 1,2register-register 입니다.MOVE 1,1000등록하는 메모리입니다.
PDP-11 007 006

(FPP가 존재하는 경우)

R7은 프로그램 카운터입니다.모든 레지스터가 스택포인터가 될 수 있지만 R6은 하드웨어 인터럽트 및 트랩에 사용됩니다.
VAX 016 GPR은 부동소수점 값에도 사용됩니다.레지스터 중 R12(Argument Pointer), R13(Frame Pointer), R14(Stack Pointer)의 3가지 특수 용도가 있으며, R15는 프로그램 카운터를 나타냅니다.
알파 031 031 레지스터 R31(정수점) 및 F31(부동소수점)은 0에 직결됩니다.
6502 데이터 1개, 인덱스 2개 000. 6502의 주 목적 데이터 스토어 및 메모리 주소(8비트 데이터/16비트 주소)용 콘텐츠 A(Acumulator) 레지스터, X, Y는 간접 및 직접 인덱스 레지스터(각각)이며 SP 레지스터는 특정 인덱스일 뿐이다.
W65C816S 001 000. 65c816은 6502의 16비트 후계기입니다.X, Y, D(Direct Page Register)는 상황 레지스터이며 SP 레지스터는 특정 인덱스일 뿐입니다.호환성과 메인 레지스터를 위해 8비트(A)를 유지하면서 16비트(C)[22]까지 확장되는 메인 어큐뮬레이터는 최대 24비트(16비트 와이드 데이터 명령/24비트 메모리 주소)를 처리할 수 있게 되었습니다.
65,000 001 000. 6502, 65002만의 콘텐츠A(Acumulator)만 메인 목적의 데이터 스토어에 등록하고 데이터를 32비트 및 64비트 명령 범위로 확장하며 소프트웨어 모드에서 48비트 가상 주소를 지원합니다. X,Y는 상태 레지스터이며 8비트 및 SP 레지스터는 그대로 유지되지만 16비트 폭까지 증가합니다.
MeP 004 008 미디어 임베디드 프로세서는 모든 모드(8/16/32비트)에서 사용할 수 있는 A, B, C 및 D 레지스터만 있는 모듈화된 8080 명령 세트를 가진 도시바에 의해 개발된 32비트 프로세서입니다.x86과 호환되지 않지만 x87과 호환되는 80비트 부동소수점 장치가 포함되어 있습니다.
PIC 마이크로컨트롤러 001 000.
AVR 마이크로컨트롤러 032 000.
ARM 32비트(ARM/A32, Thumb-2/T32) 014 다르다

(최대 32)

r15는 프로그램카운터이며 GPR로 사용할 수 없습니다.r13은 스택포인터입니다.r8 ~ r13은 프로세서모드 스위치로 다른 스위치(뱅크)로 스위칭할 수 있습니다.이전 버전에서는 26비트 [23]어드레싱으로 프로그램카운터(r15)의 상위 비트를 상태 플래그로 사용하여 레지스터가 32비트화되었습니다.
ARM 32비트(썸) 008 016 레지스터 r0 ~r7에[24] 대한 액세스만 지원했던 Thumb 버전1
ARM 64비트(A64)[25] 031 032 레지스터 r31은 컨텍스트에 따라 스택포인터 또는0 에 유선 접속됩니다.
MIPS 031 032 정수 레지스터 0은 0에 유선 연결되어 있습니다.
RISC-V 031 032 정수 레지스터 0이 0에 유선 연결됩니다.리소스가 매우 제한된 시스템을 위한 변형 RV32E에는 15개의 정수 레지스터가 있습니다.
에피파니 64(코어당)[26] 각 명령은 레지스터를 정수로 해석할지 또는 단정도 부동소수로 해석할지 제어합니다.아키텍처는 현재 16개 및 64개의 코어 구현을 통해 4096개의 코어로 확장 가능합니다.

사용.

프로세서에서 사용 가능한 레지스터의 수와 이러한 레지스터를 사용하여 수행할 수 있는 작업은 컴파일러 최적화에 의해 생성되는 코드의 효율성에 큰 영향을 미칩니다.식 트리의 스트라 수는 식 트리를 평가하는 데 필요한 최소 레지스터 수를 제공합니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ "Cray-1 Computer System Hardware Reference Manual" (PDF). Cray Research. November 1977.
  2. ^ "MCS-4 Micro Computer Set Users Manual" (PDF). Intel. February 1973.
  3. ^ "8008 8 Bit Parallel Central Processor Unit Users Manual" (PDF). Intel. November 1973. Retrieved January 23, 2014.
  4. ^ "Intel 8080 Microcomputer Systems User's Manual" (PDF). Intel. September 1975. Retrieved January 23, 2014.
  5. ^ "80286 and 80287 Programmer's Reference Manual" (PDF). Intel. 1987.
  6. ^ a b "Intel 64 and IA-32 Architectures Software Developer Manuals". Intel. 4 December 2019.
  7. ^ "AMD64 Architecture Programmer's Manual Volume 1: Application Programming" (PDF). AMD. October 2013.
  8. ^ "Intel Architecture Instruction Set Extensions and Future Features Programming Reference" (PDF). Intel. January 2018.
  9. ^ "Intel Xeon Phi Coprocessor Instruction Set Architecture Reference Manual" (PDF). Intel. September 7, 2012.
  10. ^ F8 Guide to Programming (PDF). Fairchild MOS Microcomputer Division. 1977.
  11. ^ "Nios II Classic Processor Reference Guide" (PDF). Altera. April 2, 2015.
  12. ^ "Nios II Gen2 Processor Reference Guide" (PDF). Altera. April 2, 2015.
  13. ^ "M6800 Programming Reference Manual" (PDF). Motorola. November 1976. Retrieved May 18, 2015.
  14. ^ "Motorola M68000 Family Programmer's Reference Manual" (PDF). Motorola. 1992. Retrieved June 13, 2015.
  15. ^ "CUDA C Programming Guide". Nvidia. 2019. Retrieved Jan 9, 2020.
  16. ^ Jia, Zhe; Maggioni, Marco; Staiger, Benjamin; Scarpazza, Daniele P. (2018). "Dissecting the NVIDIA Volta GPU Architecture via Microbenchmarking". arXiv:1804.06826 [cs.DC].
  17. ^ "IBM Enterprise Systems Architecture/370 and System/370 - Vector Operations" (PDF). IBM. SA22-7125-3. Retrieved May 11, 2020.
  18. ^ "IBM S/390 G5 Microprocessor" (PDF).
  19. ^ "MMIX Home Page".
  20. ^ "Series 32000 Databook" (PDF). National Semiconductor.
  21. ^ "Synergistic Processor Unit Instruction Set Architecture Version 1.2" (PDF). IBM. January 27, 2007.
  22. ^ "Learning 65816 Assembly". Super Famicom Development Wiki. Retrieved 14 November 2019.
  23. ^ "Procedure Call Standard for the ARM Architecture" (PDF). ARM Holdings. 30 November 2013. Retrieved 27 May 2013.
  24. ^ "2.6.2. The Thumb-state register set". ARM7TDMI Technical Reference Manual. ARM Holdings.
  25. ^ "Procedure Call Standard for the ARM 64-bit Architecture" (PDF). ARM Holdings. 22 May 2013. Retrieved 27 May 2013.
  26. ^ "Epiphany Architecture Reference" (PDF).