Computer/CPU

AMD Bulldozer [AMD / October 12, 2011]

AICAT 2024. 11. 6. 08:00
반응형

AMD Bulldozer Family 15h는 데스크탑과 서버 시장을 위해 AMD가 개발한 FX와 Opteron 라인의 마이크로프로세서 마이크로아키텍처이다. Bulldozer는 이 마이크로아키텍처의 코드네임이며, 2011년 10월 12일에 K10 마이크로아키텍처의 후속으로 출시되었다.

 

Bulldozer는 처음부터 새롭게 설계되었으며, 이전 프로세서를 발전시킨 것이 아니다. 이 코어는 TDP가 10W에서 125W 사이인 컴퓨팅 제품을 대상으로 설계되었다. AMD는 Bulldozer 코어를 사용하여 고성능 컴퓨팅(HPC) 애플리케이션에서 성능 대비 전력 효율성 개선을 크게 달성했다고 주장한다.

 

Bulldozer 코어는 출시 당시 Intel 프로세서(Sandy Bridge)에서 구현된 대부분의 명령어 세트(SSSE3, SSE4.1, SSE4.2, AES, CLMUL, AVX 등)와 함께 AMD가 제안한 새로운 명령어 세트(ABM, XOP, FMA4, F16C)를 지원한다. AVX2 명령어 세트는 Bulldozer GEN4(Excavator)에서만 지원된다.

 

개요 AMD에 따르면, Bulldozer 기반 CPU는 GlobalFoundries의 32nm 실리콘 온 인슐레이터(SOI) 공정 기술을 기반으로 하며, DEC의 다중 작업 성능 접근 방식을 재사용한다고 한다. 즉, 멀티코어 설계에서 자연스럽게 발생하는 일부 "중복된" 요소를 제거하여 하드웨어 성능을 더 잘 활용하고 전력을 덜 소비하는 방식으로 성능을 확장할 수 있는 고유한 디자인을 제공한다고 한다.

 

Bulldozer 기반의 구현은 32nm SOI와 HKMG 공정으로 2011년 10월에 서버와 데스크탑 시장에 출시되었으며, 서버 부문에는 듀얼 칩(16코어) Opteron 프로세서인 Interlagos(소켓 G34용)와 싱글 칩(4, 6, 8코어) Valencia(소켓 C32용)가 포함되었다. 데스크탑 시장에서는 Zambezi(4, 6, 8코어)가 소켓 AM3+를 통해 출시되었다.

 

Bulldozer는 AMD가 2003년에 K8 프로세서를 출시한 이후 처음으로 대대적으로 재설계된 프로세서 아키텍처이다. 또한 두 개의 128비트 FMA 지원 부동소수점 유닛(FPU)을 갖추고 있으며, 이를 결합하여 256비트 FPU로 사용할 수 있다. 이 디자인은 두 개의 정수 클러스터와 각 클러스터당 4개의 파이프라인을 가진다(페치/디코드 단계는 공유됨). Bulldozer는 새로운 아키텍처에서 공유 L2 캐시를 도입하였다. AMD는 이 디자인을 "모듈"이라고 부르며, 16코어 프로세서 디자인은 이러한 "모듈" 8개를 특징으로 한다. 그러나 운영 체제는 각 "모듈"을 두 개의 논리 코어로 인식한다.

 

모듈 아키텍처는 멀티스레드 공유 L2 캐시와 FlexFPU를 갖추고 있으며, 이는 동시 멀티스레딩을 사용한다. 각 물리적 정수 코어는 모듈당 두 개가 있으며, 이는 단일 스레드로 작동한다. 이는 인텔의 하이퍼스레딩과 달리 두 개의 가상 스레드가 하나의 물리적 코어 자원을 공유하는 방식이다.

 

회고적인 리뷰에서 APC 매거진의 Jeremy Laird는 Bulldozer의 문제를 언급하며, 이전의 Phenom II K10 디자인보다 느렸다고 평가했다. 그는 또한 PC 소프트웨어 생태계가 아직 멀티스레드 모델을 완전히 수용하지 않았다고 지적했다. 이러한 문제들로 인해 AMD는 2012년에 10억 달러 이상의 손실을 보았고, 일부 산업 분석가들은 2015년 중반까지 AMD가 파산할 것이라고 예측했다. 그러나 이후 AMD는 수익을 회복할 수 있었다. 수익 회복의 주요 원인으로는 GlobalFoundries에 대한 자사 제조업체의 매각, TSMC로의 위탁 생산 전환, 그리고 새로운 Ryzen CPU 디자인이 있었다.

 

Bulldozer는 "클러스터형 멀티스레딩" (Clustered Multithreading, CMT)을 사용한 마이크로아키텍처로, 이 기술은 프로세서의 일부 부분은 두 스레드가 공유하고, 일부는 각 스레드에 고유한 방식으로 설계된다. 이러한 비전통적인 멀티스레딩 접근법은 2005년 썬 마이크로시스템의 UltraSPARC T1 CPU에서 처음 도입된 예시를 찾아볼 수 있다. 하드웨어 복잡성과 기능 측면에서 Bulldozer의 CMT 모듈은 정수 연산 성능에서는 듀얼 코어 프로세서와 같으며, 부동소수점 연산 성능에서는 부동소수점 연산이 두 스레드에서 모두 사용될 경우 싱글 코어 프로세서 또는 제한된 듀얼 코어 프로세서와 유사하다. 그 이유는 각 두 개의 정수 코어마다 128비트 FMAC 실행 유닛으로 구성된 단일 부동소수점 유닛이 존재하기 때문이다.

 

CMT는 SMT(동시 멀티스레딩)와 유사한 설계 철학을 가지고 있지만, 구조적으로 더 단순하다. 두 설계 모두 실행 유닛을 효율적으로 활용하려고 시도하며, 두 스레드가 동일한 실행 파이프라인을 공유할 때 하나 이상의 스레드에서 성능 저하가 발생하는 문제를 겪는다. Bulldozer 모듈은 정수 코드가 포함된 코드 구간에서는 듀얼 코어, 듀얼 스레드 프로세서처럼 동작하고, 부동소수점 코드가 집중된 구간에서는 SMT2처럼 동작한다. 이는 두 스레드가 부동소수점 명령어로 가득 차 있을 때, 공유되는 부동소수점 파이프라인 때문에 발생하는 현상이다. 즉, CMT는 두 스레드가 모두 정수 연산을 수행할 때 가장 효율적이며, SMT는 두 스레드가 모두 부동소수점 연산을 수행할 때 더 효율적이다. CMT는 싱글 스레드 경우에 비해 더 많은 유휴 정수 실행 유닛이 존재하는 단점이 있다. 반면 SMT는 싱글 스레드 상황에서 CMT보다 높은 성능을 낼 수 있다.

 

CMT 프로세서와 일반 SMT 프로세서는 두 스레드 간에 L2 캐시를 효율적으로 공유하는 방식에서 유사하다.

모듈 구성

Bulldozer 모듈은 두 개의 "전통적인" x86 아웃 오브 오더 처리 코어로 구성된다. 이 처리 코어는 초기 파이프라인 단계(L1i, 페치, 디코드), FPU(부동소수점 유닛), 그리고 L2 캐시를 공유한다.

각 모듈의 독립적인 하드웨어 자원은 다음과 같다:

  • L1 캐시: 각 코어마다 16KB 4-way L1 데이터 캐시(L1d)와 2-way 64KB L1 명령어 캐시(L1i)가 있으며, 각 코어는 두 개의 L1i 캐시를 공유한다.
  • L2 캐시: 모듈당 2MB의 L2 캐시가 있으며, 두 개의 정수 코어 간에 공유된다.
  • Write Coalescing Cache (WCC): L1D 캐시에서 나온 저장 데이터는 WCC를 거쳐서 버퍼링되고 집합된다. 이 과정은 L2 캐시에 대한 쓰기 작업을 줄이는 역할을 한다.

정수 코어

  • 각 정수 코어에는 두 개의 ALU(산술 논리 장치)와 두 개의 AGU(주소 생성 장치)가 있어, 각 코어당 시클당 최대 4개의 독립적인 산술 연산과 메모리 연산을 처리할 수 있다.
  • 각 모듈은 두 개의 독립된 정수 코어를 가지고 있으며, 각 코어는 자체 실행 파이프라인을 가지고 있어, 멀티스레딩 환경에서 성능을 두 배로 향상시킨다.

부동소수점 유닛(FPU)

  • 각 모듈은 두 개의 대칭적인 128비트 FMAC 유닛(곱셈-덧셈 연산 가능)을 갖추고 있으며, 이는 AVX 명령어가 사용될 경우 하나의 256비트 유닛으로 통합될 수 있다. 또한, 각 모듈은 x87, MMX, SSE 호환 부동소수점 파이프라인을 가지고 있어 구형 SSE2 명령어도 처리할 수 있다. 각 FMAC 유닛은 나누기와 제곱근 연산도 수행할 수 있다.

추가 자원

  • 모든 모듈은 L3 캐시와 고급 듀얼 채널 메모리 서브시스템(IMC)을 공유한다.
  • 각 모듈은 213백만 개의 트랜지스터를 포함하며, 면적은 30.9 mm²에 달한다.

파이프라인 깊이

  • Bulldozer 아키텍처(및 Piledriver, Steamroller)는 20단계의 파이프라인을 가지며, 이는 K10의 12단계 파이프라인보다 깊다. 이 긴 파이프라인은 Bulldozer가 K10보다 높은 클럭 주파수를 달성할 수 있게 했지만, 지연 시간(latency)과 분기 예측 오류(branch misprediction)로 인한 성능 저하를 초래했다.

정수 성능

  • Bulldozer의 정수 코어는 K10 코어보다 약간 좁은 4-way 구조를 가지고 있으며, K10은 6-way 구조를 갖고 있었다. Bobcat과 Jaguar는 4-way 정수 코어를 사용했으나, 실행 유닛은 상대적으로 간단했다(1 ALU, 1 간단한 ALU, 1 로드 AGU, 1 스토어 AGU). Bulldozer는 Jaguar/Bobcat보다 더 슈퍼스칼라(superscalar)한 설계였지만, 첫 번째 세대 설계에서 최적화가 부족해 K10보다 낮은 IPC를 보였다. 하지만 Piledriver와 Steamroller에서 개선이 이루어지면서 Bulldozer 계열은 K10보다 더 높은 IPC를 기록하기 시작했다.

 

The AMD Bulldozer Family 15h is a microprocessor microarchitecture developed by AMD for the desktop and server markets, including the FX and Opteron product lines. Bulldozer is the codename for this microarchitecture, which was released on October 12, 2011, as the successor to the K10 microarchitecture.

 

Bulldozer was a completely new design rather than an evolution of previous processors. The cores were designed for computing products with a Thermal Design Power (TDP) ranging from 10W to 125W. AMD claimed that Bulldozer cores offered significant improvements in performance-per-watt efficiency for high-performance computing (HPC) applications.

 

The Bulldozer core supports most of the instruction sets implemented in Intel processors (Sandy Bridge), such as SSSE3, SSE4.1, SSE4.2, AES, CLMUL, and AVX, as well as new instruction sets proposed by AMD (ABM, XOP, FMA4, F16C). The AVX2 instruction set was only supported in Bulldozer GEN4 (Excavator).

 

Overview
According to AMD, Bulldozer-based CPUs were built using GlobalFoundries' 32nm Silicon-on-Insulator (SOI) process technology, which reuses DEC's approach to multitasking performance. This means that certain "redundant" elements naturally arising in multi-core designs were removed, allowing better hardware performance utilization and lower power consumption. Bulldozer provided a unique design to scale performance efficiently.

 

The Bulldozer implementation was manufactured using 32nm SOI and HKMG processes and was released in October 2011 for the server and desktop markets. In the server sector, the design included the dual-chip (16-core) Opteron processor "Interlagos" for socket G34 and the single-chip (4, 6, 8-core) "Valencia" for socket C32. In the desktop market, the Zambezi processor (4, 6, 8-core) was released for the AM3+ socket.

 

Bulldozer represented the first major redesign since the K8 processor in 2003. It also featured two 128-bit FMA (Fused Multiply-Add) capable Floating Point Units (FPU), which could be combined into a 256-bit FPU. The design included two integer clusters, each with four pipelines (the fetch/decode stages were shared). Bulldozer introduced shared L2 cache in this new architecture, and AMD referred to this design as a "module." A 16-core processor design consisted of 8 such "modules," but the operating system recognized each module as two logical cores.

 

The module architecture featured a shared L2 cache and FlexFPU, which enabled simultaneous multithreading. Each physical integer core operated as a single thread within a module. This differed from Intel's Hyper-Threading, where two virtual threads share a physical core’s resources.

 

In retrospective reviews, APC Magazine's Jeremy Laird pointed out Bulldozer's issues, noting it was slower than the previous Phenom II K10 design. He also observed that the PC software ecosystem had not fully embraced multithreading, which contributed to AMD's financial losses of over $1 billion in 2012. Some analysts predicted that AMD would go bankrupt by mid-2015. However, AMD later recovered, with key factors being the sale of its manufacturing business to GlobalFoundries, the transition to TSMC for contract manufacturing, and the introduction of the Ryzen CPU lineup.

 

Bulldozer used Clustered Multithreading (CMT), a microarchitecture approach where some parts of the processor are shared by two threads, while others are unique to each thread. This unconventional approach to multithreading is similar to the UltraSPARC T1 CPU from Sun Microsystems, released in 2005. In terms of hardware complexity and function, Bulldozer's CMT module behaved like a dual-core processor for integer operations, but when handling floating-point operations, it was comparable to a single-core processor or a limited dual-core processor. This was due to the shared floating-point pipeline between the two integer cores.

CMT, like SMT (Simultaneous Multithreading), aimed to efficiently utilize execution units, but it also shared some of the performance degradation issues when both threads share the same execution pipeline. While CMT was more efficient when both threads performed integer operations, SMT performed better with floating-point-heavy workloads. However, CMT had the drawback of more idle integer execution units compared to SMT, which offered better performance in single-threaded workloads.

 

CMT processors and typical SMT processors were similar in how they efficiently shared L2 cache between threads.

Module Design

A Bulldozer module consists of two "traditional" x86 out-of-order processing cores. These cores share the initial pipeline stages (L1i, fetch, decode), the FPU (floating-point unit), and the L2 cache.

The independent hardware resources of each module are as follows:

  • L1 Cache: Each core has a 16KB 4-way L1 data cache (L1d) and a 2-way 64KB L1 instruction cache (L1i), with the two cores sharing the L1i cache.
  • L2 Cache: The module has 2MB of shared L2 cache, which is shared between the two integer cores.
  • Write Coalescing Cache (WCC): Data stored in the L1d cache passes through the WCC, where it is buffered and coalesced, reducing write operations to the L2 cache.

Integer Cores

Each integer core has two ALUs (Arithmetic Logic Units) and two AGUs (Address Generation Units), allowing it to handle up to four independent arithmetic and memory operations per cycle. Each module contains two independent integer cores, each with its own execution pipeline, which doubles performance in a multithreaded environment.

Floating-Point Unit (FPU)

Each module includes two symmetrical 128-bit FMAC units (Fused Multiply-Add), which can be combined into a single 256-bit unit when AVX instructions are used. Additionally, each module has floating-point pipelines compatible with x87, MMX, and SSE, capable of processing older SSE2 instructions. Each FMAC unit can also perform division and square root operations.

Additional Resources

All modules share an L3 cache and a high-performance dual-channel memory subsystem (IMC). Each module contains 213 million transistors and has an area of 30.9 mm².

Pipeline Depth

The Bulldozer architecture (and its derivatives, Piledriver and Steamroller) has a 20-stage pipeline, which is deeper than the 12-stage pipeline used in K10. While this longer pipeline allowed Bulldozer to achieve higher clock speeds compared to K10, it also introduced latency and performance degradation due to branch mispredictions.

Integer Performance

The Bulldozer integer cores use a narrower 4-way structure compared to K10's 6-way structure. While Bobcat and Jaguar also used 4-way integer cores, they were simpler in design with fewer execution units (1 ALU, 1 simple ALU, 1 load AGU, 1 store AGU). Bulldozer's design was more superscalar, but the first-generation implementation lacked optimization, resulting in lower IPC (instructions per cycle) compared to K10. However, with improvements in Piledriver and Steamroller, Bulldozer cores eventually achieved higher IPC than K10.


AMD Bulldozerファミリー15hは、デスクトップおよびサーバ市場向けにAMDが開発したFXおよびOpteronラインのマイクロプロセッサのマイクロアーキテクチャです。Bulldozerはこのマイクロアーキテクチャのコードネームであり、2011年10月12日にK10マイクロアーキテクチャの後継としてリリースされました。

 

Bulldozerは、前のプロセッサを進化させたものではなく、完全に新しい設計でした。このコアは、10Wから125WのTDP(熱設計電力)範囲のコンピュータ製品をターゲットに設計されています。AMDは、Bulldozerコアを使用することで、高性能コンピューティング(HPC)アプリケーションにおいて、性能あたりの電力効率の大幅な改善を達成したと主張しています。

 

Bulldozerコアは、Intelのプロセッサ(Sandy Bridge)で実装されているほとんどの命令セット(SSSE3、SSE4.1、SSE4.2、AES、CLMUL、AVXなど)に加えて、AMDが提案した新しい命令セット(ABM、XOP、FMA4、F16C)もサポートしています。AVX2命令セットはBulldozer GEN4(Excavator)でのみサポートされています。

概要

AMDによれば、BulldozerベースのCPUは、GlobalFoundriesの32nmシリコンオンインシュレータ(SOI)プロセス技術を使用して製造され、DECのマルチタスク性能アプローチを再利用しているといいます。これにより、マルチコア設計で自然に発生する「冗長な」要素を削除し、より効率的にハードウェア性能を活用し、消費電力を抑える独自の設計が可能になります。

 

Bulldozer実装は、32nm SOIおよびHKMGプロセスを使用して2011年10月にサーバおよびデスクトップ市場に投入されました。サーバ部門には、デュアルチップ(16コア)Opteronプロセッサ「Interlagos」(ソケットG34用)と、シングルチップ(4、6、8コア)「Valencia」(ソケットC32用)が含まれていました。デスクトップ市場では、Zambezi(4、6、8コア)がAM3+ソケットを通じてリリースされました。

 

Bulldozerは、2003年にK8プロセッサがリリースされて以来、AMDのマイクロアーキテクチャで初めて大規模に再設計されたものです。また、256ビットFPUとして使用できる2つの128ビットFMAサポートの浮動小数点ユニット(FPU)を搭載しています。この設計には、2つの整数クラスターと、各クラスターに4つのパイプライン(フェッチ/デコード段は共有)が含まれています。Bulldozerは、新しいアーキテクチャで共有L2キャッシュを導入しました。この設計は「モジュール」と呼ばれ、16コアプロセッサの設計では、この「モジュール」が8つ特徴として採用されています。ただし、オペレーティングシステムは各「モジュール」を2つの論理コアとして認識します。

 

モジュールアーキテクチャには、共有L2キャッシュおよびFlexFPUが特徴で、これにより同時マルチスレッド処理が可能となります。各物理整数コアは、モジュール内で1つのスレッドとして動作します。これは、インテルのハイパースレッディングとは異なり、1つの物理コアのリソースを2つの仮想スレッドが共有する方式です。

 

APCマガジンのJeremy Lairdは、Bulldozerの問題点について言及し、以前のPhenom II K10デザインよりも遅いと評価しました。また、PCソフトウェアのエコシステムがマルチスレッドモデルを完全には受け入れていないことを指摘しました。これらの問題により、AMDは2012年に10億ドル以上の損失を出し、一部の業界アナリストは2015年中旬までにAMDが破産すると予測しました。しかし、その後、AMDは収益を回復し、回復の主な要因としては、GlobalFoundriesへの製造部門の売却、TSMCへの委託生産への移行、そして新しいRyzen CPUデザインの登場が挙げられます。

 

Bulldozerは「クラスター型マルチスレッディング(CMT)」を使用したマイクロアーキテクチャであり、この技術ではプロセッサの一部の部分が2つのスレッドで共有され、他の部分は各スレッドに固有の設計がされます。この非伝統的なマルチスレッドアプローチは、2005年のSun MicrosystemsのUltraSPARC T1 CPUで初めて導入された例を見ることができます。ハードウェアの複雑さと機能の観点から、BulldozerのCMTモジュールは整数演算においてはデュアルコアプロセッサと同じ動作をし、浮動小数点演算では、両方のスレッドで浮動小数点演算が行われる場合、シングルコアプロセッサまたは制限されたデュアルコアプロセッサと似た動作をします。これは、2つの整数コアごとに128ビットFMAC実行ユニットがあり、共有される浮動小数点パイプラインが原因です。

 

CMTは、SMT(同時マルチスレッディング)に似た設計哲学を持っていますが、構造的によりシンプルです。両者は、実行ユニットを効率的に活用しようと試み、スレッドが同じ実行パイプラインを共有する場合に、1つ以上のスレッドで性能低下が発生するという問題に直面します。CMTは、2つのスレッドが整数演算を行う場合に最も効率的であり、SMTは、2つのスレッドが浮動小数点演算を行う場合により効率的です。ただし、CMTには、シングルスレッドの場合にSMTよりも多くのアイドル整数実行ユニットが存在するという欠点があります。対照的に、SMTはシングルスレッドの状況でCMTよりも高い性能を発揮します。

 

CMTプロセッサと通常のSMTプロセッサは、2つのスレッド間でL2キャッシュを効率的に共有する方法において類似しています。

モジュール設計

Bulldozerモジュールは、2つの「伝統的な」x86のアウトオブオーダ処理コアで構成されています。これらのコアは、初期のパイプラインステージ(L1i、フェッチ、デコード)、FPU(浮動小数点ユニット)、およびL2キャッシュを共有します。

各モジュールの独立したハードウェアリソースは以下の通りです:

  • L1キャッシュ:各コアには16KBの4-way L1データキャッシュ(L1d)および2-way 64KBのL1命令キャッシュ(L1i)があり、2つのコアはL1iキャッシュを共有します。
  • L2キャッシュ:モジュールには2MBのL2キャッシュがあり、2つの整数コアで共有されます。
  • Write Coalescing Cache(WCC):L1Dキャッシュから出た保存データはWCCを通じてバッファリングされ、L2キャッシュへの書き込み操作を削減します。

整数コア

各整数コアには2つのALU(算術論理ユニット)と2つのAGU(アドレス生成ユニット)があり、1クロックサイクルあたり最大4つの独立した算術演算およびメモリアクセス操作を処理できます。各モジュールは2つの独立した整数コアを備えており、各コアには独自の実行パイプラインが存在するため、マルチスレッド環境での性能が2倍に向上します。

浮動小数点ユニット(FPU)

各モジュールには、2つの対称的な128ビットFMACユニット(Fused Multiply-Add)があり、AVX命令を使用する際には1つの256ビットユニットとして結合できます。さらに、各モジュールにはx87、MMX、SSEに対応した浮動小数点パイプラインがあり、古いSSE2命令の処理にも対応しています。FMACユニットは、除算および平方根演算もサポートしています。

追加リソース

すべてのモジュールは、L3キャッシュおよび高性能なデュアルチャネルメモリサブシステム(IMC)を共有します。各モジュールには213百万個のトランジスタがあり、その面積は30.9mm²です。

パイプラインの深さ

Bulldozerアーキテクチャ(およびその後継のPiledriverおよびSteamroller)は20段階のパイプラインを採用しており、これはK10の12段階のパイプラインに比べて深くなっています。この長いパイプラインにより、BulldozerはK10よりも高いクロック速度を達成できましたが、分岐予測のミスによる遅延や性能低下を引き起こすこともありました。

整数性能

Bulldozerの整数コアは、K10の6-way構造に対して狭い4-way構造を採用しています。BobcatやJaguarも4-way整数コアを使用していましたが、設計はシンプルで、実行ユニットも少なく(1つのALU、1つの簡易ALU、1つのロードAGU、1つのストアAGU)でした。Bulldozerはよりスーパー・スカラーな設計でしたが、最初の実装では最適化が不十分だったため、K10に比べてIPC(サイクルあたり命令数)が低くなっていました。しかし、PiledriverやSteamrollerでは、BulldozerコアはK10よりも高いIPCを達成しました。

반응형

'Computer > CPU' 카테고리의 다른 글

AMD Zen 1st generation [AMD / 2017]  (0) 2024.11.08
AMD Bobcat [AMD / 2011]  (0) 2024.11.07
AMD Athlon 64 [AMD / September 23, 2003]  (0) 2024.11.05
AMD Athlon [AMD / June 23, 1999]  (0) 2024.11.04
AMD K6 [AMD / April 2, 1997]  (0) 2024.11.03