1. Giới thiệu:
AMD đã tiết lộ cấu trúc bộ vi xử lí mới sẽ bắt đầu được dùng trong những chiếc CPU mới của hãng này bắt đầu từ năm 2011. Cấu trúc này được gọi là Bulldozer hoàn toàn khác so với kiến trúc AMD64 hiện tại đang được AMD sử dụng kể từ lần ra mắt trong Athlon 64 hồi năm 2003. Trong bài này, chúng tôi sẽ giải thích chi tiết cho bạn về kiến trúc mới này và hoạt động của nó.
Cấu trúc Bulldozer sẽ thừa hưởng một số tính năng có trong cấu trúc AMD64, chẳng hạn như tích hợp Mạch điều khiển bộ nhớ và sử dụng bus HyperTransport để kết nối giữa CPU và chipset.
Bulldozer là tên mã được đặt cho kiến trúc này chứ không phải là cho một bộ vi xử lý cụ thể. Như thông lệ, đầu tiên AMD sẽ phát hành bộ vi xử lý nhằm vào thị trường máy chủ dựa trên kiến trúc mới này, sau đó là thị trường máy để bàn cao cấp, rồi đến các sản phẩm chủ đạo cho hệ thống để bàn , và cuối cùng là dành cho một thị trường giá rẻ.
Mặc dù không hề nói chi tiết về những CPU sẽ được phát hành nhưng AMD lại đề cập rằng những CPU đầu tiên cho máy để bàn dựa trên cấu trúc Bulldozer sẽ cần khe cắm mới được gọi là AM3+ mà cũng tương thích với bộ vi xử lý Socket AM3 hiện tại. Tuy nhiên, CPU dùng Socket AM3+ sẽ không tương thích với Motherboard Socket AM3.
Cấu trúc Bulldozer sẽ trang bị công nghệ tương tự với công nghệ Intel Turbo Boost, cho phép CPU tự Overclock nếu bạn đang chạy các chương trình chuyên sâu về CPU và nếu sự tản nhiệt vẫn đảm bảo trong thông số kỹ thuật.
Trước khi nói về những phần bên trong của kiến trúc Bulldozer, đầu tiên chúng ta hãy nói về tập lệnh mà cấu trúc này hỗ trợ.
2. Tập lệnh
Ngoài việc tương thích với các tập lệnh x86 chuẩn, Bulldozer còn hỗ trợ những tập lệnh bổ sung dưới đây:
Ø SSE4.1 và SSE4.2
Ø AVX (Advanced Vector Extensions) cùng với 2 lệnh là XOP và FMA4
Ø AES (Advanced Encryption Standard)
Ø LWP (Light Weight Profiling)
Nhưng điều đó có nghĩa là gì? Chúng ta hãy cùng tìm hiểu.
SSE4.1 và SSE4.2
Các lệnh AVX sẽ có mặt trong các CPU sắp ra mắt của Intel dựa trên cấu trúc Sandy Bridge, và sử dụng cùng khái niệm SIMD (Single Instruction Multiple Data) được giới thiệu với tập lệnh MMX và được dùng trong các lệnh SSE (Streaming SIMD Extensions) .
Khái niệm này bao gồm việc sử dụng một Thanh ghi lớn duy nhất để lưu trữ nhiều dữ liệu kích thước nhỏ và sau đó xử lý tất cả những dữ liệu này bằng một lệnh duy nhất, nhờ vậy mà tăng tốc được quá trình xử lý.
Tập lệnh AVX bổ sung 12 lệnh mới và tăng kích thước các Thanh ghi XMM từ 128-bit lên 256-bit.
Trong Bulldozer, AMD quyết định bổ sung một số lệnh mới mà đã có trong đề xuất ban đầu của tập lệnh SSE5 . Vì vậy, việc AVX trong cấu trúc Bulldozer hoàn chỉnh hơn trong cấu trúc của Intel. Những lệnh bổ sung này XOP và FMA4.
Trong bài thuyết trình về Bulldozer, AMD đã công bố tập lệnh AVX cũng có lệnh con FMAC (Fused Multiply Accumulate), nhưng lệnh này chỉ là một phần của các lệnh XOP.
AMD đã quyết định thực hiện một phương pháp mới hoàn toàn đối với Bulldozer mới này. Họ quyết định tạo ra một module "Dual-Core" chia sẻ cho nhiều nguồn (front-end engine, floating-point unit, và cache L2, xem hình 1) và vì thế mà không hoàn toàn độc lập với nhau.
Hình 1: Khối hình thành Bulldozer.
Vì vậy mặc dù AMD gọi một chiếc CPU có một trong những module này là CPU "Dual-Core" nhưng trong thực tế, CPU không phải là một sản phẩm có lõi kép thực sự , bởi vì không có 2 CPU hoàn chỉnh trong một sản phẩm. Cái tên "Dual-Core" trong trường hợp này chỉ được sử dụng cho mục đích tiếp thị để đảm bảo rằng khách hàng có thể hiểu được mặc dù CPU dựa trên Bulldozer không phải là mẫu lõi kép nhưng nó vẫn hoạt động với hiệu suất tương tự.
Hơn thế nữa, đối với việc tạo ra CPU "Quad-Core", AMD sẽ đặt 2 khối này lại với nhau, vì vậy về vật lí thì bộ vi xử lý này thực sự có 2 CPU bên trong (2 trong số các khối trong hình 1), đồng thời cho dù không phải là 4 nhưng AMD vẫn gọi nó là một sản phẩm "4 lõi". Trong hình 2, bạn có thể thấy 1 chiếc CPU "8 lõi" dựa trên cấu trúc Bulldozer trông như thế nào.
Hình 2: CPU 8 lõi dựa trên cấu trúc Bulldozer.
Hình 3: Các khối Fetch và Decode.
Vào thời điểm này này, AMD đã không công bố kích cỡ BTB (Branch Target Buffers) của Bulldozer, đây là một bộ nhớ nhỏ liệt kê ra tất cả các nhánh được xác định trong chương trình, nó được sử dụng bởi cơ chế dự đoán rẽ nhánh của CPU.
Tuy nhiên, kích thước của TLB (Translation Look-aside Buffers) lại được công bố như trong hình 3. Những bộ đệm này đều là một bộ nhớ nhỏ để giúp chuyển đổi giữa các địa chỉ ảo và địa chỉ vật lí, chúng chủ yếu được sử dụng bởi các mạch bộ nhớ ảo (bộ nhớ ảo hay trao đổi File , chính là một kỹ thuật mà CPU mô phỏng nó có nhiều bộ nhớ RAM hơn lượng thực tế mà bạn đã cài đặt bằng cách dùng File nháp trong ổ cứng).
Bulldozer có 4 bộ giải mã ( Decoder ) nhưng tới thời điểm này, AMD vẫn không đưa ra thông tin về bộ giải mã nào có thể xử lý được loại lệnh nào. Thông thường, ít nhất một bộ giải mã có thể giải quyết được những lệnh riêng biệt đầy phức tạp dựa trên những vi lệnh ROM ( “Ucode” hoặc được đọc hoặc ghi là “µcode”, hoặc “microcode” ) . Việc giải mã những lệnh phức tạp này có thể tốn đến vài chu kì đồng hồ vì chúng phải chuyển đổi thành nhiều vi lệnh. Tuy nhiên, những chỉ lệnh đơn giản thường chỉ mất 1 chu kì đồng hồ chuyển đổi vì chúng sẽ được chuyển thành một vi lệnh duy nhất. Thông thường thì các nhà sản xuất bộ vi xử lý sẽ tối ưu hoá để CPU của họ có thể giải mã được hầu hết các lệnh chỉ bằng 1 chu kì xung nhịp đồng hồ.
Cấu trúc Bulldozer chỉ có một khối Floating-Point được chia sẻ giữa 2 "lõi". Mặt khác, nó lại có 2 khối Interger hoàn toàn độc lập và do đó được gọi là "lõi".
Hình 4: Các khối Execution
Ø EX, MUL: có thể thực hiện bất kì một loại lệnh số nguyên nào, bao gồm cả phép tính nhân, nhưng không làm phép chia.
Ø EX, DIV: có thể thực hiện được bất cứ loại lệnh số nguyên nào, bao gồm cả phép chia, nhưng không làm phép nhân.
Ø AGen: hay được gọi là AGU hoặc Address Generation Unit được sử dụng để tạo ra các địa chỉ mà CPU nhận hoặc lưu trữ dữ liệu.
Khi một lệnh tiếp theo được thực hiện là một phép chia số nguyên, nhưng khối có thể giải quyết được lệnh này lại đang bận giải quyết một chỉ lệnh khác, thì thay vì chờ đợi đến lúc khối đó rỗi, Scheduler sẽ tìm kiếm một lệnh có thể thực hiện ngay, tất nhiên nếu có các khối rỗi. Vì vậy, vai trò của Scheduler chính là giữ cho tất cả các khối Execution càng bận càng tốt.
Ø MMX: có thể thực hiện được tất cả các chỉ lệnh dấu phẩy động cơ bản (các lệnh x87), gồm cả MMX.
Ø 128-bit FMAC: có thể thực hiện được tất cả các lệnh dấu phẩy động.
Hình 5: Khối dấu phẩy động
Bộ nhớ Cache L2 với liên kết 16-way và TLB (Translation Look-aside Buffer) 1024-entry.
Hình 6: Cache nhớ L2
AMD cũng bổ sung một tính năng để đo đạc các hoạt động của CPU nhằm đánh giá năng lượng hao phí. AMD đang bổ sung thêm một công nghệ tương tự với Turbo Boost của Intel, giúp tự động tăng tốc CPU nếu sự tản nhiệt vẫn đảm bảo trong thông số kỹ thuật.
Hình 7: Quản lý năng lượng