Skip to content

기글하드웨어기글하드웨어

컴퓨터 / 하드웨어 : 컴퓨터와 하드웨어, 주변기기에 관련된 이야기, 소식, 테스트, 정보를 올리는 게시판입니다.

Extra Form
참고/링크 http://pc.watch.impress.co.jp/docs/colum...37983.html

x86 / x64에서 효력을 발휘하는 마이크로 OP 캐시

 

AMD의 새로운 CPU 마이크로 아키텍처 ZEN은 내부 명령 마이크로 OP (Micro-OP)를 포함하는 OP 캐시 (OP Cache)를 갖춥니다. ZEN에서 성능 / 전력이 크게 향상하는 이유 중 하나가 이 OP 캐시입니다. 복잡하기 짝이 없는 x86 / x64 명령의 디코딩을 우회하여 디코딩 소비 전력과 대기 시간을 줄여 성능을 향상시킬 수 있어서입니다.

 

1.jpg

 

복잡하기 짝이 없는 x86 / x64 계의 명령 포맷

 

지금도 x86 / x64 CPU는 내부 명령어 캐시를 씁니다. 인텔은 펜티엄 4의 넷버스트 아키텍처 마이크로 OP를 저장하는 트레이스 캐시 (Trace Cache)를 채택했습니다. 추적 캐시는 실행된 명령의 궤적(Trace)에 따라 캐시에 저장하는 방식입니다. 분기가 없는 명령인 베이스 블럭을 조건 분기 명령의 예측된 분기에 따라 결합시켜 추적하고 저장합니다. 그러나 트레이스 캐시는 궤적을 만들기가 복잡해 효과를 보지 못하는 경우가 있었습니다.

 

 

그래서 인텔은 샌디브릿지에서 다른 방식의 uOP 캐시를 도입했습니다. uOP는 마이크로 오퍼레이션으로 AMD의 마이크로 OP와 같은 의미입니다. uOP 캐시는 추적을 생성하지 않고 L1 명령 캐시와 마찬가지로 주소 기반으로 읽어들입니다. 여기에는 트레이스 캐시와 크게 다른 점이 있는데 명령어 인출 라인(16-byte)를 2개 연결 한 32바이트 마이크로 OP를 uOP 캐시 라인에 저장합니다.

 

2.jpg

 

마이크로 OP 캐시의 장점

 

AMD는 ZEN에서 마침내 마이크로 OP 캐시를 탑재했습니다. 마이크로 OP를 캐시하는 경우 문제가 되는 건 캐시에 어떻게 명령을 저장하고 어떻게 액세스하느냐는 겁니다. 구체적으로 말하면 메모리에서 명령어의 주소를 저장한 Instruction Pointer (IP) 레지스터와 OP 캐시 라인에서 마이크로 OP의 주소를 어떻게 가져오는지가 중요합니다. 여기가 어렵기에 마이크로 OP 캐시 사용이 어려웠습니다.

 

ZEN에서 채용한 OP 캐시는 아마도 인텔의 샌디브릿지 이후 채용한 캐시와 유사한 구조로 볼 수 있습니다. 먼저 마이크로 OP를 포함하지만 트레이스 캐시는 아닙니다. 그리고 L1 명령 캐시에서 명령 페티시 라인과 라인이 연결돼 IP에서 쉽게 OP 캐시의 명령 주소를 파악하는 것으로 보입니다.

 

3.jpg

 

ZEN의 설계자인 Mike Clark(Senior Fellow, AMD)

 

ZEN의 설계자인 Mike Clark(Senior Fellow, AMD)는 다음과 같이 설명합니다.

 

"OP 캐시는 트레이스 캐시가 아닙니다. 베이스 블럭은 여전히 ​​중요합니다. 트레이스 캐시는 매우 복잡하기에 적합하지 않다고 생각했습니다. 또한 L1 명령 캐시와 OP 캐시는 분리된 캐시로, L1 명령 캐시는 OP 캐시에 대한 항목을 포함하나 캐시하지 않은 OP 캐시 전용 캐시 태그를 갖추고 있습니다. 마이크로 태그 (Micro-tags)에서 L1 명령 캐시와 OP 캐시 중 어디에 적중할지를 파악합니다."

 

OP 캐시는 L1 명령 캐시에 포함되지 않습니다. 즉 OP 캐시에서 적중해도 L1에선 그렇지 않은 경우도 있을 수 있습니다. 그래서 분리된(exclusive) 캐시라고도 합니다. OP 캐시의 대부분은 L1 명령 캐시에 포함되지만 L1에서 캐시 라인이 배제되도 OP 캐시에 남아있을 수 있습니다. 인텔 아키텍처의 경우에 uOP 캐시는 L1 명령 캐시에 포함된다고 볼 수 있습니다. 명령어를 꺼낼 땐 OP 캐시와 L1 명령 캐시를 모두 거쳐 마이크로 태그에 도달합니다.

 

4.jpg

 

ZEN 프런트 엔드

 

AMD는 OP 캐시의 구체적인 구조나 크기를 아직 밝히지 않았습니다. 인텔은 샌디브릿지에서 최대 1.5Kuops의 용량(실제로는 명령 페치 라인과 uOPs 캐시 라인의 캐시 라인이 효율적으로 작동하지 않을 수 있으니 이건 어디까지나 최대값임)의 uOPs 캐시를 사용합니다. AMD도 상당한 용량의 캐시를 탑재할 것으로 보입니다.

 

또한 OP 캐시의 채용은 ZEN 마이크로 아키텍처의 명령 디코딩 방식에도 영향을 주는 것으로 보입니다. 그리고 ZEN 명령 디코딩 구조에서 AMD와 인텔의 용량이 같아도 할 수 있는 작업 수는 많을 거라 추측됩니다.

 

5.jpg

 

인텔과 AMD 마이크로 아키텍처의 비교

 

 

CISC의 특징을 남긴 중간 단계의 마이크로 OP

 

ZEN 마이크로 아키텍처의 큰 특징은 명령 디코드가 구성이 2단계라는 겁니다.

 

"명령 디코더에서 어느 정도의 디코딩은 OP 캐시와 마이크로 OP 큐 후에도 발생합니다. OP 캐시와 마이크로 OP 큐에 저장되는 마이크로 OP는 상당히 밀도가 높습니다. 이것이 발송되는 단계에서 전통적인 마이크로 OP로 전개됩니다. 사실은 고밀도 마이크로 OP란 말은 확장된 마이크로 OP로 이름을 바꾸는 게 맞습니다. 이번엔 그렇게 하지 않았으니 이해가 좀 어려울지도 모릅니다."(Clark, AMD).

 

AMD의 기존 아키텍처와 인텔의 현재 아키텍처는 모두 2단계 디코딩 방식을 씁니다. x86 / x64 명령은 CISC(Complex Instruction Set Computer) 형이니 여러 작업이 포함된 명령이 많습니다. 그러나 내부 파이프 라인은 아웃 오브 오더 실행이기에 CISC의 복합 명령에서는 효율적으로 수행하는 설계가 실현되지 못합니다.

 

그래서 x86 / x64 고성능 CPU는 CISC의 복합 명령어를 간단한 작업의 내부 명령, 마이크로 OP로 변환해 실행합니다. 마이크로 OP는 RISC (Reduced Instruction Set Computer) 형의 단순한 명령입니다. 예를 들어 로드 / 연산 / 스토어의 복합 CISC 명령의 경우 로드 명령, 연산, 저장 명령이 분리된 RISC 형 마이크로 OP로 분리됩니다. 이것이 CISC 마이크로 OP 변환의 기본입니다.

 

그러나 현재 x86 / x64 계열 CPU의 대부분은 CISC의 특징을 어느 정도 유지한 복합형 마이크로 OP를 채용합니다. 오더 부분에서 복합형 마이크로 OP로 관리해 실제로 작업을 발행하는 아웃 오브 오더 부분에서 간단한 조작 마이크로 OP로 분해합니다.

 

AMD의 기존 아키텍처는 복합형 마이크로 OP를 매크로 OP(Macro-OP), 간단한 쪽을 마이크로 OP라 불러 구분합니다. 이번 ZEN에서는 2종류의 내부 명령을 구별합니다. 이름은 구분하지 않아도 내부 지침은 2종류입니다. 또 마이크로 OP는 겉으로 노출된 ISA (Instruction Set Architecture)와 다르게 명령어 단위를 다루기 좋은 단위(32비트라던가)로 조절할 필요가 없습니다. 변칙적인 길이도 허용하니 마이크로 OP는 자유롭게 커스텀 설계가 이루어졌다고 합니다.

 

 

복합형의 내부 명령을 받는다는 점은 인텔과 AMD의 x86 / x64 CPU 마이크로 아키텍처가 같습니다. 그러나 ZEN에서는 2단계 디코딩이 더 나아졌습니다. 대부분의 x86 / x64 명령이 1대 1로 마이크로 OS로 변환됩니다. 복합형 마이크로 OP의 크기가 점점 커지고 단순 마이크로 OP로 분해되는 단계에 맞춰 디코딩 기능이 개선됐습니다. ZEN은 명령 디코더는 명령 디코드에서 발송까지 스테이지 전체로 확장된 이미지입니다.

 

 

명령 디코더의 구조가 크게 바뀐 ZEN 아키텍처

 

AMD의 기존 아키텍처는 명령 디코드 단계에서 x86 / x64 명령이 3 개의 디코딩 유형으로 나누어졌으며, AMD 고유의 네이밍이 붙었습니다. 1개의 매크로 OP로 변환되는 게 패스트 패스 싱글(Fast-Path Single), 두 개의 매크로 OP로 변환되는 게 패스트 패스 더블(Fast-Path Double), 2개 이상의 매크로 OP가 되는 게 마이크로 코드 (Microcode) 입니다. 1개의 매크로 OP는 일반적으로 2 개의 마이크로 OP를 포함합니다.

 

6.jpg

 

재규어의 3개 이상 매크로 OP와 3개 이상 마이크로 OP

 

AMD의 디코더는 기존의 AMD 프로세서에서 이어진 부분이 많아, 고성능 CPU인 불도저 계열과 저전력 CPU인 밥캣 계열의 유사점이 많습니다. 덧붙여서 AMD 아키텍처의 경우엔 x86 명령이 로드 / 연산 / 스토어, x64 명령의 경우 로드 / 스토어 OP와 연산 OP의 2 개의 마이크로 OP에 분해됩니다. 메모리 주소가 같은 피연산자의 로드/스토어는 1개의 마이크로 OP에 저장하는 게 AMD의 방식입니다. 이런 기본 구조는 ZEN에서도 이어질 것으로 보입니다.

 

2 개의 매크로 OP로 변환되는 첫 단계는 256비트 SIMD의 AVX 명령을 2개의 128비트 SIMD 매크로 OP로 변환되는 경우가 있습니다. 메모리 액세스를 포함하면 2개의 매크로 128비트 SIMD OP가 각각 2개의 마이크로 OP를 포함합니다. 총 4개의 마이크로 OP가 1개의 AVX 명령에서 생성됩니다.

 

불도저와 재규어는 위와 같이 디코딩 유형에 따라 x86 / x64 명령은 2개 이상의 매크로 OP로 변환합니다. 즉 x86 / x64 명령은 명령 디코더에서 2개 이상의 매크로 OP로 출력하기도 합니다. 그러나 ZEN에서는 그것이 거의 없고 x86 / x64 명령은 거의 1대 1로 1 개의 마이크로 OP로 출력되도록 바뀌었다고 합니다.

 

"ZEN의 명령 디코드는 인텔과는 상당히 다릅니다. 명령 디코더는 명령 경계를 찾아 (x86 / x64 명령을 구분) 마이크로 OP로 변환하여 마이크로 OP 큐에 보냅니다. 우리가 패스트 패스 더블 (Fast-Path Double)이라 부르는 명령도 마이크로 OP 큐 중 하나로 됩니다. 디스패치 스테이지까지 그대로입니다."(Clark, AMD)

 

불도저와 재규어는 2개의 매크로 OP로 변환된 패스트 패스 더블 (Fast-Path Double)을 ZEN에서는 1개의 마이크로 OP로 취급합니다. 덧붙여서 인텔 코어 계열의 마이크로 아키텍쳐도 2개의 매크로 OP적인 내부 명령 디코딩하는 경우가 있어 불도저와 부분적으로 비슷합니다. 인텔 기반 마이크로 아키텍처에서 x86 / x64 명령을 1개의 내부 명령으로 변환하는 경향이 강한 건 아톰에 쓰이는 실버몬트 계열 마이크로 아키텍처입니다.

 

7.jpg

 

젠의 명령 디코드 아키텍처 추측

 

 

 

 

마이크로 코드 엔진을 마이크로 OP 큐로

 

x86 / x64 명령을 분해해 1개의 내부 명령으로 매핑하는 방식은 ZEN의 명령 디코드 전반에서 일관된 설계 사상입니다. x86 / x64 CPU는 매우 복잡한 명령을 마이크로 코드 엔진 ROM에서 마이크로 OP로 전개합니다. AMD의 경우는 불도저와 재규어까지 1~2 개의 매크로 OP로 변환되는 명령은 일반적으로 병렬형 디코더, 3개 이상의 매크로 OP로 변환되는 명령은 마이크로 코드 시퀀스가 ​​있었습니다. 그리고 기존엔 디코딩 스테이지 마이크로 코드 엔진이 있어 3개 이상의 매크로 OP로 변환했습니다.

 

그러나 ZEN 마이크로 아키텍처는 마이크로 코드 ROM이 필요한 명령은 명령 디코드 스테이지에서 전개하지 않고 마이크로 코드 ROM 주소를 저장하는 마이크로 OP로 변환합니다. ZEN은 마이크로 코드 ROM 명령을 1개의 마이크로 OP로 전환하여 큐에 저장ㅎ바니다. OP 캐시에 저장되는 것도 마찬가지입니다.

 

"마이크로 코드 ROM에서 마이크로 OP는 마이크로 OP 큐에 저장되지 않습니다. 대신 우리는 마이크로 코드 ROM의 주소를 추적합니다. 우리는 마지막 순간까지 이를 마이크로 OP를 유지하다가 큐에서 마이크로 코드 ROM이 필요한 순간에 맞춰 구성된 Kicking Sequence에 마이크로 코드 ROM으로 보냅니다."(Clark, AMD)

 

8.jpg

 

ZEN의 명령 디코더에서 발송해 마이크로 OP 큐에서 마이크로 코드 ROM으로 보냄

 

ZEN 디코딩 단계에서는 마이크로 코드 ROM의 주소를 판정해 그것을 마이크로 OP로 추적하는 것으로 보입니다. 덧붙여서 인텔의 uOP 캐시도 마이크로 코드 엔진의 출력의 내부 명령은 uOP 캐시에 저장하지 않습니다. 대신 마이크로 코드 ROM의 주소를 가집니다. 내부 명령 캐시에서 보면 인텔과 AMD의 구조는 유사합니다. 이것은 인텔과 AMD의 차이점은 블럭 다이어그램을 그리는 것 뿐이라고 말할 수 있을지도 모릅니다. 

 

덧붙여서 스택 엔진도 여기에 배치됩니다. 스택 엔진은 push/pop으로 조작하는 스택형 데이터 저장 영역을 수행하는 전용 엔진입니다. 스택 조작은 x86 레거시 중 하나이며 이를 실행 엔진이 로드 / 스토어 파이프로 보내면 전력 소모가 많고 대기 시간도 길어집니다. 따라서 고성능 x86 / x64 CPU는 전용 엔진을 설치해 처리하는 경우가 많으며 ZEN도 그 방식을 채택해 절전에 효과가 있습니다.

 

재밌는 건 마이크로 OP를 취급하는 Branch Fusion은 ZEN의 명령 디코더가 아니라는 겁니다. AMD는 테스트/비교 계열의 명령과 점프 명령을 융합하는 Branch Fusion을 불도저에서 채용했습니다. 서로 의존성이 있는 2개의 간단한 명령을 조합하여 하나의 마이크로 OP로 만들고 1개의 실행 파이프로 실행합니다. 이와 비슷한 기술은 인텔도 사용합니다. 명령 융합에 의해 마이크로 OP 수를 줄이고 처리량을 높이는 것이 목적입니다.

 

내부 명령 수를 줄인다는 목적에 따르자면 명령 디코더 부분에서 퓨전을 하는 게 더 합리적입니다. 그러나 ZEN에서 퓨전은 디코딩 단계에서 하지 않고 디스패치에서 수행합니다. 디코더에선 여전히 2개의 마이크로 OP가 있습니다. 디스패치 스테이지에서 함께 1개의 마이크로 OP로 만듭니다. 디스패치 스테이지에서 발송은 최대 6 마이크로 OP지만, 하나로 합친 마이크로 OP는 1개로 계산취급합니다.

 

 

브런치 퓨전의 내용은 명령 디코드 단계에서 이루어져 마이크로 OP는 줄지 않고 디스패치 이후의 아웃 오브 오더 부분에서 감소하게 됩니다. 즉 오더 부분의 명령 디코드 대역폭을 늘리는 게 목적은 아닙니다. 이건 인텔과 다른 부분이지요. AMD의 불도저 계열에는 명기되지 않았으나, 분기 퓨전의 2 명령이 1개의 매크로 OP로 변환되는 것으로 보입니다.

 

 

마이크로 OP 캐시에 맞춘 디코딩 아키텍처

 

이렇게 보면 ZEN의 명령 디코드의 설계 사상을 알 수 있습니다. ZEN의 명령 디코드 스테이지는 x86 / x64 명령을 디코딩하기 쉬운 형태로 정돈하는 등 기본적인 처리에 머무르는 것으로 보입니다. 일단 x86 / x64 CISC 명령의 특성을 짙게 남긴 마이크로 OP로 변환합니다. 그러나 2 단계 디코딩을 하기 쉬운 고정 포맷과 고정 길이입니다. OP 캐시와 마이크로 OP 큐는 마이크로 OP 그대로 취급하며, 아웃 오브 오더 부분에 들어가면 단순 작업인 마이크로 OP에 바로 바뀝니다. 명령 퓨전처럼 명령 수를 바꾸어 버리는 디코딩도 후반에서 행하는 것으로 보입니다.

 

9.jpg

 

ZEN 마이크로 아키텍처

 

AMD는 ZEN의 명령 디코드 아키텍처를 왜 이렇게 만들었는지 그 이유를 밝히지 않았습니다. 그러나 ZEN의 전체 구성에서 그 이유를 짐작할 수 있습니다. ZEN과 기존의 AMD CPU를 비교했을 때 가장 눈에 띄는 차이는 마이크로 OP를 저장하는 OP 캐시의 존재입니다. ZEN의 명령 디코드 방식이 OP 캐시를 전제로 하는 것으로 추정됩니다.

 

예를 들어 인텔의 uOP 캐시와 같은 구조일 경우 OP 캐시의 각 캐시 라인은 L1 명령 캐시에서 명령어 인출 라인과 대응합니다. 그러나 x86 / x64 명령을 마이크로 OP로 분해하면 일반적으로 여러 마이크로 OP가 생성됩니다.

 

그러면 일정한 길이의 L1 명령 캐시 라인에 들어가 있던 x86 / x64 명령이 마이크로 OP되면 OP 캐시 라인에 맞지 않게 될 가능성이 있습니다. 명령 수가 늘어날뿐만 아니라 x86 / x64의 길이가 짧은 명령도 일정한 길이의 명령으로 정렬되기에 마이크로 OP가 캐시 라인에서 초과됩니다. 이 문제를 해결하기 위해 여러 OP 캐시 라인을 바인딩하는 등의 기술이 필요해집니다. x86 / x64 및 마이크로 OP 코드 밀도 차이가 캐싱에 영향을 미칠 것입니다.

 

 

그러나 ZEN 명령 디코딩 방식의 경우 x86 / x64 명령은 거의 1 대 1로 1 개의 고밀도 마이크로 OP로 변환됩니다. 먼저 명령 수가 줄어들만큼 OP 캐시의 물리적인 양을 줄일 수 있습니다. 반대로 말하면 일정량의 OP 캐시에 더 많은 마이크로 OP를 저장할 수 있게 됩니다.

 

또한 L1 명령 캐시와 OP 캐시의 캐시 라인의 상관성이 강해집니다. 만약 IP 주소에서 OP 캐시의 주소로 전환한다면 그 구조가 더 쉽게 됩니다. 명령 퓨전을 뒤로 가져오는 것도 캐시 라인의 명령 라인은 x86 / x64 명령과 같습니다.

 

AMD의 ZEN의 명령 디코드는 이러한 OP 캐시에 최적화를 노린 결과로 추측됩니다. 완전히 처음부터 마이크로 아키텍처를 조립했기에 가능해진 최적화로, 합리적인 명령 디코드 아키텍처입니다. 블럭 다이어그램에서 OP 캐시는 작아 보이지만 충분한 양이 잘 작동한다면 ZEN의 강력한 무기가 될 것입니다. 

 

10.jpg

 

AMD의 CPU 마이크로 아키텍처의 변천 개요

 




작성된지 4주일이 지난 글에는 새 코멘트를 달 수 없습니다.


  1. 등록된 글이 없습니다.
목록
Board Pagination Prev 1 ... 2 3 4 5 6 7 8 9 10 11 Next
/ 11

최근 코멘트 30개
Lynen
00:29
아이들링
00:20
스와마망
00:16
Kylver
00:15
포인트 팡팡!
00:14
슬렌네터
00:14
연금술사
00:14
이게뭘까
00:08
급식단
00:07
급식단
00:06
아스트랄로피테쿠스
00:04
가네샤
00:03
가네샤
00:00
가네샤
00:00
가네샤
00:00
가우스군
23:59
가네샤
23:59
가네샤
23:58
그림자
23:53
낄낄
23:50
그림자
23:42
미쿠미쿠
23:38
Colorful
23:24
Sin라면
23:22
낄낄
23:21
TrustNoOne
23:18
메이드아리스
23:16
메이드아리스
23:14
TrustNoOne
23:14
메이드아리스
23:14

AMD
한미마이크로닉스
더함
MSI 코리아

공지사항        사이트 약관        개인정보취급방침       신고와 건의


기글하드웨어는 2006년 6월 28일에 개설된 컴퓨터, 하드웨어, 모바일, 스마트폰, 게임, 소프트웨어, 디지털 카메라 관련 뉴스와 정보, 사용기를 공유하는 커뮤니티 사이트입니다.
개인 정보 보호, 개인 및 단체의 권리 침해, 사이트 운영, 관리, 제휴와 광고 관련 문의는 이메일로 보내주세요. 관리자 이메일

sketchbook5, 스케치북5

sketchbook5, 스케치북5

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소