총 주소 지정 디코더

Sum-addressed decoder

CPU 설계에서 Sum-Addressed Decoder(SAD;주소 디코더) 또는 Sum-Addressed Memory(SAM; 총 주소 메모리) 디코더를 사용하는 것은 CPU 캐시 액세스 및 주소 계산(기본값 + 오프셋)의 지연을 줄이는 방법입니다.이것은 캐시 SRAM의 디코드 조작과 주소 생성 합계 조작을 융합함으로써 실현됩니다.

개요

L1 데이터 캐시는 보통 가장 중요한 CPU 리소스에 있어야 합니다.이는 데이터 캐시가 클수록 사이클당 명령(IPC)이 직접 개선되고 데이터 캐시가 클수록 액세스 시간이 길어지며 데이터 캐시를 파이프라인화하면 IPC가 더 나빠지기 때문입니다.L1 데이터 캐시 액세스의 레이텐시를 줄이는 방법 중 하나는 캐시 SRAM 내의 디코드 동작과 주소 생성 합계 동작을 융합하는 것입니다.

메모리 파이프에 있는 다른 장치가 결과 가상 주소를 사용하기 때문에 주소 생성 합계 작업을 수행해야 합니다.이 합계는 여기에 설명된 퓨전된 추가/디코딩과 병렬로 수행됩니다.

가속에 가장 유리한 반복은 부하이며, 그 부하를 정수 연산 체인으로 사용하여 다른 부하로 이어집니다.로드 결과가 정수 결과와 동일한 우선순위로 바이패스된다고 가정하면 이 반복을 로드 후에 다른 로드로 요약할 수 있습니다. 마치 프로그램이 링크된 목록을 따르는 것처럼 말이죠.

이 페이지의 나머지 부분에서는 단일 어드레싱 모드(register+offset), 가상 인덱스 데이터 캐시 및 가변 폭의 부호 확장 부하를 가진 Instruction Set Architecture(ISA; 명령 세트아키텍처)를 전제로 하고 있습니다.대부분의 RISC ISA는 이 설명에 들어맞습니다.인텔 x86 등의 ISA에서는 가상 주소를 생성하기 위해 3개 또는 4개의 입력을 합산합니다.다중 입력 추가는 캐리 세이브애더를 사용하여2 입력 추가로 줄일 수 있습니다.나머지 문제는 다음과 같습니다.따라서 임계 반복은 가산기, 디코더, SRAM 워드선, SRAM 비트선, 센스 앰프, 바이트 스티어링 뮤크스 및 바이패스 뮤크스입니다.

이 예에서는 더블워드(8바이트) 정렬 값을 반환하는 직접 매핑된 16KB 데이터 캐시를 상정하고 있습니다.SRAM의 각 행은 8바이트이며 Addr [13:3]에 의해 주소가 지정된 2048 행이 있습니다.SRAM 합계 아이디어는 설정된 관련 캐시에 동일하게 적용됩니다.

주소 합계 캐시: 가산기와 디코더를 접습니다.

이 예의 SRAM 디코더에는 11비트 입력 Addr [ 13 : 3 ]및 디코딩된 워드라인인 2048 출력이 있습니다.각 고유 주소[13:3] 값에 대한 응답으로 1개의 워드 행이 높게 표시됩니다.

가장 단순한 형태의 디코더에서는 2048라인 각각이 논리적으로 AND 게이트입니다.11비트(A[13:3]라고 불립니다)와 그 보완 비트(B[13:3]라고 불립니다)는 디코더로 구동됩니다.각 회선에 대해 11비트 또는 보완이 11입력 AND 게이트에 공급됩니다.예를 들어 1026의 10진수는 100000010 바이너리와 같습니다.회선 1026 의 기능은 다음과 같습니다.

워드라인 [1026]= A[13]& B[11]& B[10]& B[9]& B[8]& B[7]& B[6]& B[5]& A[4]& B[3]

가산기의 캐리어 체인 및 디코더 양쪽은 주소의 인덱스 부분의 폭 전체로부터의 정보를 조합한다.전폭에 걸쳐 정보를 2회 조합하는 것은 장황합니다.SRAM은 가산기와 디코더를 1개의 구조로 구현함으로써 정보를 1회만 조합한다.

SRAM은 add의 결과로 인덱싱됩니다.Summands R(레지스터용)과 O(레지스터용 오프셋용)를 호출합니다.Sum-Addressed 디코더는 R+O를 디코딩합니다.각 디코더 회선에 대해서, 회선 번호 L 에 콜 합니다.

디코더가 각 디코더 회선에 R과 O를 모두 구동하고 각 디코더 회선이 구현되었다고 가정합니다.

워드선 [L] = (R+O) = L
(R+O)==L <=> R+O-L==0 <=> R+O+~L+1==0 <=> R+O+~L==-1==11..1.

풀 가산기 세트를 사용하여 R+O+~L을 S+C로 줄일 수 있습니다(이것은 carry save addition).S+C==11..1 <=> S==~C.마지막 추가에는 캐리어가 없습니다.C는 캐리 행이므로 1비트 위로 이동하므로 R[13:3]+는O[13:3]+~L [13:3]== {0,S[13:3]} + {C[14:4],0}

이 공식에서 디코더 내의 각 행은 기본 레지스터, 오프셋 및 행 번호를 캐리 저장 형식으로 줄이는 풀 가산기 세트 및 비교기입니다.이 하드웨어의 대부분은 이하에서 용장성이 검증됩니다만, 현시점에서는, 각 행에 모두 존재하는 것을 간단하게 생각할 수 있습니다.

LSB 무시: 레이트 온 캐리 선택

위의 공식은 추가의 전체 결과를 확인합니다.단, CPU 캐시 디코더에서는 add의 전체 결과는 바이트 주소이며 캐시는 보통 8바이트 블록의 주소보다 큰 주소로 인덱싱됩니다.주소의 LSB 중 일부를 무시하는 것이 좋습니다.단, 2개의 summands의 LSB는 어드레싱된 더블워드를 변경할 가능성이 있기 때문에 무시할 수 없습니다.

R [ 13 : 3 ]및 O [ 13 : 3 ]가 추가되어 인덱스 I[ 13 : 3 ]가 취득되는 경우, 실제 주소 Addr [ 13 : 3 ]는, R [ 2 : 0 ]+ 에 따라 I [ 13 : 3 ]또는 I [ 13: 3]+1 이 됩니다.O [ 2 : 0 ]는 테이크아웃을 생성합니다.2개의 SRAM 뱅크가 있는 경우 I와 I+1을 모두 취득할 수 있습니다.하나는 짝수 주소이고 다른 하나는 홀수 주소입니다.짝수 은행에는 주소 000xx, 010xx, 100xx, 110xx 등이, 홀수 은행에는 주소 001xx, 011xx, 101xx, 111xx 등이 있습니다.R [ 2 : 0 ]+로부터의 성과물그런 다음 O[2:0]를 사용하여 나중에 가져올 짝수 또는 홀수 이중 단어를 선택할 수 있습니다.

SRAM의 2개의 하프사이즈 뱅크에서 페치하면 센스암페어 및 데이터 스티어링 로직의 스위칭이 많아지기 때문에 1개의 풀사이즈 뱅크에서 페치하는 것보다 더 많은 전력이 소산됩니다.

일치 생성

I [ 13 : 3 ] 짝수 은행
페치 라인
홀수 은행
페치 라인
100 100 101
101 110 101
110 110 111

짝수 뱅크는 인접도를 참조하여 I[13:3]==101 또는 I[13:3]==110일 때 라인 110을 취득한다.I[13:3]==100 또는 I[13:3]==101일 때 홀수 뱅크는 라인 101을 가져옵니다.

일반적으로 홀수 SRAM 뱅크는 I[13:3]==2N 또는 I[13:3]==2N+1일 때 Lo==2N+1 라인을 페치해야 합니다.두 가지 조건은 다음과 같이 기술할 수 있습니다.

I[13:3] = Lo-1 => R[13:3] + O[13:3] + ~Lo+1 = 11..11 = > R [ 13 : 3 ]+ O [ 13 : 3 ]+ ~Lo = 11 .10 I[13:3] = Lo = > R[13:3] + O[13:3] + ~Lo = 11..11

비교의 마지막 자리(S+C)[13:4]==11..는 무시합니다.1

마찬가지로 짝수 SRAM 뱅크는 I[13:3]==2N 또는 I[13:3]==2N-1일 때 Le==2N을 페치한다.조건은 다음과 같이 작성되며, 다시 한 번 비교의 마지막 자릿수는 무시됩니다.

I[13:3] = Le-1 => R[13:3] + O[13:3] + ~Le = 11..10 I [ 13 : 3 ]= Le = > R [ 13 : 3 ]+ O [ 13 : 3 ]+ ~Le =11

게이트 레벨의 실장

R13...R65 R3 R413 O...O654 O3 O O L13...L654 L L3 ------------------------------- S13...SS654 S S314 C13...C654 C C

행간 용장성을 축소하기 전에 다음 사항을 검토하십시오.

2개의 뱅크 각각에 대한 각 디코더의 각 행은 가산되는 3개의 번호(R[13:3], O[13:3], L)를 2개의 번호(S[14:4], C[13:3])로 줄이는 풀 가산기 세트를 실장한다.LSB(==S[3])가 폐기됩니다.수행(==C[14])도 폐기됩니다.행은 S[13:4] == ~C[13:4], 즉 &(xor(S[13:4], C[13:4])일 경우 일치합니다.

L 입력이 일정하기 때문에 2입력 AND, OR, XOR 및 XNOR에 풀애더를 부분적으로 특화할 수 있습니다.결과 표현식은 디코더의 모든 행에 공통으로 나타나며 하단에 수집할 수 있습니다.

S0;i   = S(Ri, Oi, 0) = Ri xori O1;i   S = S(Ri, Oi, 1) = Ri xnori O0;i+1 C = C(Ri, Oi, 0) = Rii O1;i+1 C = C(Ri, Oi, 1) = Ri 또는i O.

각 자리수 위치에서는 가능한S는i 2개, C는i 2개, XOR는 4개뿐입니다.

Li=0 및i-1 L=0: X0;0;i = S0;i xor0;i C = Ri xori O xor (Ri-1 및 Oi-1) Li = 0 및i-1i-1 L = 10;1;i: X0;i = S xor1;i Ci = Ri xor O xori-1 (Ri-1 또는i O) L = 1 및 L1;0;i1;i = 0: Xor X = R = XOR0;ii = R = Xor C

이 예에서 사용할 수 있는 하나의 디코더는 각 비트 4.13에 대해 이들 4개의 식을 계산하여 40개의 와이어를 모두 디코더 위로 구동할 수 있습니다.디코더의 각 라인은 각 비트에 대해 4개의 와이어 중 하나를 선택하고 10개의 입력 AND로 구성됩니다.

무엇이 저장되었습니까?

단순한 데이터 캐시 경로에는 기존의 디코더에 이어 가산기가 있습니다.이 예의 캐시 서브시스템에서는 14비트의 가산기가 크리티컬 패스로 True 및 Comparent 값이 생성되며 디코더의 각 행에 대해 11비트의 AND 게이트가 이어집니다.

합계 어드레스 설계에서는 디코더 내의 최종 AND 게이트는 11이 아닌 10비트의 폭이 남습니다.가산기는 각 비트에서 4개의 입력 논리식으로 대체되었습니다.지연 시간은 가산기와 4개의 입력 식 간의 속도 차이로 인해 절약됩니다. 이는 아마도 3개의 단순한 CMOS 게이트를 절약할 수 있습니다.

만약 독자가 이것이 멀티 사이클 크리티컬 패스의 3 게이트 개선을 위한 과도한 양의 두뇌 비틀기 작업이라고 느낀다면, 독자는 최신 CPU가 최적화되는 수준에 대해 더 잘 이해할 수 있을 것이다.

추가 최적화: 사전 검출

많은 디코더 설계는 프리디코드 스테이지를 사용함으로써 디코드 라인 자체의 고팬인 AND 게이트를 회피한다.예를 들어 11비트 디코더는 4비트, 4비트 및 3비트의 3가지 그룹으로 사전에 디코딩될 수 있습니다.각 3비트 그룹은 메인 디코드 배열 위로 8개의 와이어를 구동하고, 각 4비트 그룹은 16개의 와이어를 구동합니다.디코더 라인은 3입력 AND 게이트가 됩니다.이 재구성을 통해 구현 영역과 전력을 대폭 절감할 수 있습니다.

이 재구성은, 합계 주소 디코더에도 적용할 수 있습니다.위의 비복호화 방식의 각 비트는 로컬 2비트 추가로 볼 수 있습니다.프리디코딩을 사용하면 각 프리디코드 그룹은 로컬3, 4, 또는 5비트 추가가 되고 프리디코드 그룹은 1비트씩 중복됩니다.

프리디코딩은 일반적으로 디코더를 통과하는 와이어의 수를 증가시킵니다.총 주소 지정 디코더는 일반적으로 동등한 단순 디코더보다 약 2배의 와이어 수를 가집니다.이러한 와이어는 실현 가능한 프리코딩 양의 제한 요인이 될 수 있습니다.

레퍼런스

  • Paul Demone은 실제 기술 기사에서 주소 합계 캐시에 대해 설명합니다.
  • 힐드 [1]ISSCC 1998에 Ultrasparc III의 원래 주소 합계 캐시가 무엇인지 설명하는 문서가 있습니다.
  • 주소 합계 메모리에 대해서는, 을 참조해 주세요.

미국 특허 5,754,819, 1998년 5월 19일, 저지연 메모리 인덱싱 방법구조.발명가:Lynch; William L. (Palo Alto, CA), Lauterbach; Gary R. (Los Altos, CA), Assignee:Sun Microsystems, Inc. (Mountain View, CA), 파일:1994년 7월 28일

  • 적어도 한 명의 발명가가 휴대품 없는 주소 디코딩과 관련된 특허에 기재되어 있는 것은 다음 출판물의 크레딧입니다.

A + B = 반송 전파가 없는 K 조건의 평가(1992) Jordi Cortadella, Jose M. Llaberia IEEE 컴퓨터 트랜잭션, [1] [2]

  • 다음의 특허는, 이 작업을 확장해, 프로세서 전체에 용장 형식의 연산을 사용하기 위해서, ALU 연산이나, ALU 연산이 메모리 주소로 바이패스 되는 경우에서도 전파 오버헤드를 발생시키지 않게 합니다.

미국 특허 5,619,664, 중복 중간 데이터 형식을 전송함으로써 산술 명령의 파이프라인화를 개선하는 아키텍처를 갖춘 프로세서, 1997년 4월 18일 수여, Inventor:Glew; Andrew F. (Hillsboro, OR); 할당자:Intel Corporation (Santa Clara, CA), 어플리케이션번호: 08/402,322, 출원: 1995년 3월 10일

  1. ^ Heald, R.; et al. (1998). "64 kB Sum-Addressed-Memory Cache with 1.6 ns Cycle and 2.6 ns Latency". ISSCC Digest of Technical Papers. pp. 350–351. doi:10.1109/ISSCC.1998.672519.