1. Trang chủ
  2. » Luận Văn - Báo Cáo

Phân tích kiến trúc, nguyên lí làm việc của bộ vi xử lí AMD k8

41 723 6

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 41
Dung lượng 1,96 MB

Nội dung

Phân tích kiến trúc, nguyên lí làm việc của bộ vi xử lí AMD k8

Trang 1

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN

Hà Nội 20/6/2012

Trang 2

Mục Lục

1.1.Giới thiệu tổng quát 2

1.2.Các dòng CPU dùng socket AM2 5

1.2.1.AMD Sempron 5

1.2.2.AMD Athlon 64 7

1.2.3.AMD Athlon 64 X2 10

1.2.4.AMD Athlon 64 FX 12

1.3.Thông tin chi tiết 18

1.3.1.Các tính năng và công nghệ mới 18

1.3.2 Các tính năng và công nghệ có sẵn 19

2.1Tìm nạp dòng lệnh – Instructions Fetch 21

2.2 Rẽ nhánh 22

2.3Giải mã - Decoding 23

2.4Bộ phận xử lý số nguyên – Interger Execution Unit 24

2.5 Bộ phận dấu phẩy động – Floating Point Unit 25

2.6 Hệ thống bộ nhớ bên trong 26

2.7Bộ phận điều khiển bộ nhớ - Memory Controller 29

2.8 Lấy trước dữ liệu – Prefetch 30

2.9 Ảo hoá 30

Trang 3

LỜI NÓI ĐẦU

Vào ngày 1 tháng 6 năm 2006, AMD chính thức tung ra thị trường thế hệ CPUK8 sử dụng socket AM2 (socket AM2 có 940 chân) Thế hệ CPU K8 này hỗ trợ RAMDDR2 và có thêm 1 số tính năng, công nghệ mới như công nghệ máy tính ảo AMDVirtualization Đặc biệt thế hệ CPU K8 dùng socket AM2 còn có dòng EE (EnergyEfficient) với công suất tiêu thụ thấp hơn đáng kể Cốt lõi K8 là rất tương tự như cácK7 Sự thay đổi cơ bản nhất là sự tích hợp các hướng dẫn AMD64 và một bộ điềukhiển bộ nhớ on-chip Bộ điều khiển bộ nhớ đáng kể làm giảm độ trễ bộ nhớ và chịutrách nhiệm đối với hầu hết tăng hiệu suất từ K7 lên K8

Dưới đây là một số tìm hiểu cơ bản về kiến trúc, nguyên lí làm việc của bộ vi xử líAMD K8 Do thời gian chuẩn bị không nhiều và với kiến thức còn hạn chế của bảnthân nên sẽ không tránh khỏi những thiếu sót Mong thầy cùng tham gia góp ý xây dựngthêm để thông tin hệ thống của bộ vi xử lí được hoàn thiện hơn !

Nhóm sinh viên thực hiện

1

Trang 4

CHƯƠNG I: KIẾN TRÚC BỘ VI XỬ LÍ AMD K8

1.

1.Giới thiệu tổng quát.

K8 AMD là một bộ xử lý máy tính vi kiến trúc được thiết kế bởi AMD là sự kế thừa

cho vi kiến trúc AMD K7 K8 là thực hiện đầu tiên của các AMD64 64-bit mở rộngcác kiến trúc xử lý x86

Bộ vi xử lý dựa trên lõi K8 bao gồm:

kể làm giảm độ trễ bộ nhớ và chịu trách nhiệm đối với hầu hết tăng hiệu suất từ K7 K8

Vào ngày 1 tháng 6 năm 2006, AMD chính thức tung ra thị trường thế hệ CPU K8

sử dụng socket AM2 (socket AM2 có 940 chân) Thế hệ CPU K8 này hỗ trợ RAMDDR2 và có thêm 1 số tính năng, công nghệ mới như công nghệ máy tính ảo AMDVirtualization Đặc biệt thế hệ CPU K8 dùng socket AM2 còn có dòng EE (EnergyEfficient) với công suất tiêu thụ thấp hơn đáng kể

Trang 5

Hình 1.1: Sơ đồ kiến trúc của bộ vi xử lí AMD K8

3

Trang 6

Hình ảnh về sản phẩm

Hình 1.2: Socket AMD2

Hình 1.3: AMD 64 Athlon

Trang 7

1.2.Các dòng CPU dùng socket AM2.

Trang 8

• 1,20 / 1,25 V (dòng Energy Efficient).

• 1,25 / 1,30 / 1,35 V

Trang 9

Các loại CPU AMD Sempron dùng socket AM2 :

Bảng 1.1 Các loại CPU AMD Sempron dùng socket AM21.2.2.AMD Athlon 64

Hình 1.5: AMD Athlon 64Đặc điểm :

Bus hệ thống 2000MHz

Hỗ trợ RAM DDR2 dual channel 400/533/667MHz

Hỗ trợ công nghệ AMD Virtualization

Hỗ trợ Cool’n’Quiet

Hỗ trợ AMD64

Công suất TDP : 62W ( 35W đối với dòng Energy Efficient)

7

Trang 10

Có thể hạ thấp hệ số nhân.

Trang 11

• 1,20 / 1,25 V (dòng Energy Efficient)

• 1,25 / 1,30 / 1,35 V

Các loại CPU AMD Athlon 64 dùng socket AM2 :

Bảng 1.2 Các loại CPU AMD Athlon 64 dùng socket AM2

9

Trang 12

Hỗ trợ RAM DDR2 dual channel 400/533/667/800 MHz.

Hỗ trợ công nghệ AMD Virtualization

Hỗ trợ Cool’n’Quiet

Hỗ trợ AMD64

Công suất TDP : 89W ( 65W đối với dòng Energy Efficient)

Trang 13

Có thể hạ thấp hệ số nhân.

Vcore

• 1,20 / 1,25 V (dòng Energy Efficient)

• 1,30 / 1,35 V

Các loại CPU AMD Athlon 64 X2 dùng socket AM2

Bảng 1.3 Các loại CPU AMD Athlon 64 X2 dùng socket AM2

11

Trang 14

1.2.4.AMD Athlon 64 FX.

Hình 1.7: AMD Athlon 64 FXĐặc điểm :

Bộ xử lí 2 nhân

Bus hệ thống 2000MHz

Hỗ trợ RAM DDR2 dual channel 400/533/667/800 MHz

Hỗ trợ công nghệ AMD Virtualization

Hỗ trợ Cool’n’Quiet

Hỗ trợ AMD64

Công suất TDP : 125W

Trang 15

Có thể thay đổi hệ số nhân.

Vcore 1,35 / 1,40 V

CPU AMD Athlon 64 FX dùng socket AM2 :

Vài hình ảnh của Athlon 64 3000+ socket AM2:

13

Trang 16

b)Hình 1.8: hình ảnh của Athlon 64 3000+ socket AM2

Trang 17

15

Trang 18

b)Hình 1.9: hình ảnh của Athlon 64 3000+ socket AM2

Trang 20

b)Hình 1.10: CPU dung socket AM2 (940 chân) và CPU dung socket 939 (939 chân)

1.3.Thông tin chi tiết.

1.3.1.Các tính năng và công nghệ mới

Bộ nhớ DDR2 Thế hệ CPU sử dụng socket AM2 hỗ trợ RAM DDR2 ở chế độ

dual channel RAM DDR2 có tốc độ cao hơn DDR1 , tiêu thụ điện năng ít hơn và hiệnnay, DDR2 là chuẩn RAM phổ biến nhất

Bộ xử lí AMD hỗ trợ các loại RAM DDR2 sau :

AMD Sempron : DDR2-400/533/667

AMD Athlon 64 : DDR2-400/533/667

AMD Athlon 64 X2 : DDR2-400/533/667/800

Trang 21

AMD Athlon 64 FX : DDR2-400/533/667/800.

Chú ý nhỏ về DDR2 SDRAM:

DDR2-400 : bus 400MHz, băng thông kênh đơn lí thuyết 3200MB/s

DDR2-533 : bus 533MHz, băng thông kênh đơn lí thuyết 4200MB/s

DDR2-667 : bus 667MHz, băng thông kênh đơn lí thuyết 5300MB/s

DDR2-800 : bus 800MHz, băng thông kênh đơn lí thuyết 6400MB/s

Công nghệ AMD-v (AMD Virtualization Technology).

Công nghệ máy tính ảo giúp người sử dụng tại 1 thời điểm có thể dùng đồngthời song song nhiều hệ điều hành (HĐH) trong cùng 1 máy tính.Trước khi có côngnghệ này, máy tính muốn dùng nhiều hệ điều hành thì sử dụng 1 trong 2 cách sau:-Sử dụng nhiều HĐH cùng 1 lúc nhưng chỉ có 1 HĐH khai thác trực tiếp tài nguyên hệthống , các HĐH còn lại được xem như 1 ứng dụng của HĐH đầu tiên, chúng vẫn khaithác được tài nguyên của máy nhưng gián tiếp, tức là các HĐH này không nhận diệnđược hệ thống phần cứng, chúng chỉ nhận diện được 1 hệ thống giả lập (không có thật,

do phần mềm quản lí các HĐH ảo tạo ra)

-Cài nhiều HĐH trong 1 máy nhưng tại 1 thời điểm chỉ có thể sử dụng được 1 HĐH,HĐH được sử dụng có thể khai thác trực tiếp tài nguyên hệ thống AMD Virtualization giúp người dùng có thể cùng 1 lúc dùng nhiều HĐH, các HĐH đóđều khai thác trực tiếp tài nguyên hệ thống Công nghệ này còn có tên mã làPACIFICA

Energy Efficient.

Thế hệ CPU AMD dùng socket 939 đã nổi tiếng về lượng điện năng tiêu thụ ít.Thế hệ CPU AMD sử dụng socket AM2 đã có bước tiến lớn lớn hơn nữa về công suấttiêu thụ Công suất tiêu thụ của các CPU dùng socket AM2 thấp hơn thế hệ 939 từ10% đến hơn 30% Đây thực sự là 1 cải tiến hữu ích cho ocer và các phòng net.(công suất tiêu thụ điện thấp -> mát mẻ -> dễ oc cao )

1.3.2 Các tính năng và công nghệ có sẵn.

AMD64 (Công nghệ tính toán 64-bit)

HyperTransport Technology (Công nghệ siêu truyền)

Integrated Memory Controller (Bộ điều khiển bộ nhớ tích hợp)

Cool’n’Quiet (Công nghệ làm mát và tiết kiệm điện năng)

19

Trang 22

Enhanced Virus Protection (Tính năng phòng chống virus).

Trang 23

CHƯƠNG II: NGUYÊN LÝ LÀM VIỆC CỦA BỘ XỬ LÝ AMD K8

2.1Tìm nạp dòng lệnh – Instructions Fetch

Bộ xử lý bắt đầu quá trình mã hoá bằng việc tìm nạp dòng lệnh từ cache lệnh L1

và giải mã chúng.Độ dài của lệnh x86 thường không ổn định nên rất khó xác định giớihạn của chúng trước khi quá trình giải mã bắt đầu Để đảm bảo rằng việc xác định độdài lệnh không ảnh hưởng đến tốc độ giải mã, các bộ xử lý K8 sẽ giải mã dòng lệnhtrong khi chúng đang được nhập vào cache L1 Thông tin về quá trình giải mã đượcchứa trong những vùng đặc biệt bên trong cache L1 (3bit thông tin trước khi giải mãcho một byte lệnh) Bằng cách giải mã trước (predecoding) trong khi đang tải lệnhvào cache, phạm vi những lệnh có thể được xác định trong quá trình giải mã, cho phépđảm bảo tốc độ giải mã ổn định không phụ thuộc vào dạng thức và độ dài của lệnh Các bộ xử lý tải các khối dòng lệnh từ cache và lấy ra các dòng lệnh mà nó cầngửi cho giải mã Một chiếc CPU sử dụng công nghệ vi cấu trúc K8 và Core 2 thì nạplệnh trong các khối 16-byte Khi đó, tốc độ nạp lệnh đủ nhanh để bộ xử lý K8 và Core

2 có thể gửi được ba dòng lệnh với tốc độ giải mã trung bình là 5 byte mỗi xung nhịp.Tuy nhiên, một số dòng lệnh x86 có thể dài 16 byte và theo một số thuật toán, độ dàicủa một số dòng lệnh cạnh đó có thể lớn hơn 5 byte Do đó, không thể giải mã ba dònglệnh trong một xung nhịp

21

Trang 24

Hình 2.1: Một số dòng lệnh dài liền nhau làm hạn chế tốc độ giải mã trong quá trình

tìm nạp dòng lệnh trong khối 16 byte

Cụ thể, SSE2 – một dòng lệnh đơn giản với những phép toán dạng thanh

ghi-thanh ghi (ví dụ, movapd xmm0, xmm1 ) – dài 4 byte Tuy nhiên, nếu dòng lệnh tạo lập

bộ nhớ xác định bằng cách sử dụng thanh ghi cơ sở và Offset trống như movapd

xmm0, [eax+16] , thì độ dài của nó tăng lên 6 đến 9 byte tùy thuộc vào khoảng

Offset Nếu có các thanh ghi bổ sung trong chế độ 64 bit, vẫn có một REX-prefix mộtbyte thêm vào mã dòng lệnh Khi đó, độ dài của dòng lệnh SSE2 trong chế độ 64 bit

có thể tăng lên thành 7-10 byte Các lệnh SSE1 thì ngắn hơn 1 byte nếu như đó là lệnhvector (nói cách khác là làm việc với 4 trị số 32 bit) Nhưng nếu nó là một dòng lệnhSSE1 vô hướng (chỉ có một toán hạng), chiều dài của nó cũng có thể tăng đến 7-10byte trong cùng điều kiện

2.2 Rẽ nhánh

Nếu như chuỗi lệnh móc xích tới nhiều nhánh, CPU sẽ cố dự đoán xa hơn hướngcủa chương trình để tránh việc đứt đoạn trong quá trình giải mã và chọn lựa giải mãnhánh chắc chắn nhất Trong trường hợp này, các thuật toán dự đoán nhánh sẽ được sửdụng để tìm nạp khối lệnh tiếp theo Các bộ xử lý K8 sử dụng thuật toán thích ứng bậchai để dự đoán nhánh Thuật toán này xem xét quá trình dự đoán không chỉ trong dònglệnh hiện thời, mà cả 8 dòng lệnh trước đó Nhược điểm chính của các thuật toán dựđoán nhánh K8 là chúng không có khả năng dự đoán nhánh gián tiếp có địa chỉ không

cố định

Nhánh gián tiếp là các nhánh sử dụng một con trỏ (Pointer) được tính toán động trongsuốt quá trình xử lý mã chương trình Các nhánh động này thường được thêm vào cáclệnh Case trong chương trình dịch và được sử dụng trong suốt quá trình để gọi hàm địachỉ vàhàm ảo trong việc lập trình hướng tới đối tượng Các bộ xử lý K8 thường cố sửdụng địa chỉ nhánh cuối cùng để tìm nạp một nhóm mã Nếu như địa chỉ đó đã thay

Trang 25

đổi thì hệ điều hành sẽ liên tục mắc lỗi Việc dự đoán địa chỉ không cố định đối vớinhánh gián tiếp được sử dụng lần đầu tiên trong bộ xử lý Pentium M Do trong CPUK8 không có những thuật toán như vậy nên những CPU này cũng hoạt động kém hiệuquả hơn trong các mã định hướng đối tượng

2.3Giải mã - Decoding

Các khối lệnh nhận được từ cache lệnh được sao chép vào bộ nhớ đệm tạm thờiPredecode/Pick , nơi các dòng lệnh được chọn ra từ các khối, định dạng, và chuyểnvào các bộ phận ( Pipe ) giải mã tương ứng Các lệnh đơn giản có thể được giải mã chỉbằng một hoặc hai vi lệnh ( Micro-Operation hay được ghi Micro-Ops ) sẽ được gửi

đến một bộ phận giải mã đơn giản có tên DirectPath Còn các dòng lệnh phức tạp

hơn, yêu cầu từ 3 phép toán trở lên, sẽ được gửi vào bộ phận giải mã vi chương trình

được gọi là VectorPath

Hình 2.2: Bộ phận giải mã

Cứ mỗi xung nhịp, có tối đa 3 Macro-Operation (MOP) được ra khỏi bộ phận giải mã.Trong mỗi xung nhịp, bộ phận giải mã DirectPath có thể xử lý 3 lệnh 1-MOP đơngiản hoặc một lệnh 2-MOP và một lệnh 1-MOP, hoặc 1.5 lệnh 2-MOP (ba lệnh 2MOP trong hai xung nhịp) Nhưng việc giải mã các lệnh phức tạp phải cần đến hơn 3MOP, đó chính là lý do tại sao phải cần đến vài xung nhịp mới giải mã đầy đủ đượcchúng Để tránh xung đột khi rời Pipe giải mã , K8 và K8 những lệnh đơn giản vàphức tạp có thể được gửi liên tục để giải mã

Các MOP gồm hai vi lệnh ( Micro-Ops ) : một phép tính số nguyên hay một phép tính

số học dấu phẩy động và một yêu cầu địa chỉ bộ nhớ Các vi lệnh được lấy ra từ cácMOP bằng một bộ phận phân phát ( Scheduler ) , sau đó chúng được gửi để thực hiệnmột cách độc lập

23

Trang 26

Các MOP rời khỏi bộ giải mã trong một xung nhịp lại được kết hợp vào các nhóm ba,đôi khi là hai, hoặc thậm chí chỉ có 1 MOP bởi các lệnh DirectPath và VectorPath haycác khoảng thời gian trễ khác nhau trong việc chọn lệnh để giải mã Một nhóm khônghoàn thiện như vậy cần phải bổ sung thêm các MOP rỗng để đủ 3 MOP, sau đó sẽđược chuyển đi xử lý

Các lệnh vector SSE, SSE2 và SSE3 trong bộ xử lý K8 được chia làm các cặp MOPchuyên xử lý riêng rẽ nửa trên và nửa dưới 64 bit trong thanh ghi SSE 128 bit bằngthiết bị 64 bit Điều này làm thời gian hoàn thành quá trình giải mã tăng lên gấp đôi,

và giảm số dòng lệnh chờ xuống 1 nửa

2.4Bộ phận xử lý số nguyên – Interger Execution Unit

Bộ phận xử lý số nguyên của các bộ xử lý K8 gồm ba Pipe số nguyên đối xứng.Mỗi Pipe này có bộ phận Scheduler riêng với một hàng đợi 8-MOP, một bộ đơn vị sốhọc và logic (ALU – Arithmetic and Logical Unit ), một đơn vị tạo địa chỉ (AGU –Address Generation Unit ) và một đơn vị dự đoán rẽ nhánh Ngoài ra, còn có một đơn

vị nhân nối với Pipe 0, còn Pipe 2 thì được nối với đơn vị xử lý các phép tính mới:LZCNT và POPCNT mà chúng ta sẽ tìm hiểu kỹ hơn trong phần sau của bài báo này

Hình 2.3: Bộ phậnxử lý số nguyên

Lựa chọn hàng đợi cho mỗi MOP tuỳ thuộc vào vị trí cố định của lệnh trong bộ ba.Mỗi Macro-Operation trong bộ ba lại được gửi đến Bộ đệm sắp xếp lại (ROB) để xử lýtrong đó Một mặt, nó giúp đơn giản hoá việc quản lý lệnh, nhưng mặt khác, nó có thểdẫn đến việc hàng đợi bị mất cân bằng nếu như một chuỗi phép tính độc lập được xếpđặt không thích hợp trong mã chương trình (trong thực tế điều này hiếm khi xảy ra vàcũng ít ảnh hưởng đến hiệu quả làm việc) Bộ phận giải mã sẽ sắp đặt phép nhân và

mở rộng các phép tính Bit mở rộng trong nhóm bộ ba tương ứng để chúng được

Trang 27

Như đã đề cập từ trước, các MOP sẽ được tách làm các phép tính số nguyên và phéptính địa chỉ bộ nhớ trong hàng đợi Scheduler của Pipe số nguyên Dựa vào từng dữliệu, Scheduler có thể chuyển một phép tính số nguyên sang ALU và một phép tính địachỉ sang AGU từ mỗi hàng đưọi Có tối đa hai yêu cầu bộ nhớ đồng thời Vì vậy,nhiều nhất là ba phép tính số nguyên và 2 phép tính bộ nhớ (64 bit được đọc/viết)được xử lý trong mỗi xung nhịp Còn các Micro-Operation từ nhiều MOP khác nhau

có thể được xử lý không theo thứ tự mà tuỳ thuộc vào dữ liệu sẵn sàng Ngay khi phéptính vi lệnh ( Micro-Ops ) số học và MOP đã được xử lý, MOP sẽ rời khỏi hàng đợilập Scheduler nhường chỗ cho các phép tính khác

Các bộ xử lý K8 sẽ chọn phép tính Micro-Ops đòi hỏi địa chỉ bộ nhớ theo mức độchương trình Các yêu cầu bộ nhớ xuất hiện sau trong mã chương trình không thể được

xử lý trước những phép tính trước đó Vì thế, nếu như các phép tính trước chưa đượcthực hiện, tất cả những phép tính địa chỉ sau đó cũng không thể tiến hành ngay cả khicác toán hạng đã sẵn sàng

Ví dụ:

Add ebx, ecx mov eax, [ebx+10h]

_ Phép tính nhanh địa chỉ mov ecx, [eax+ebx]

– địa chỉ phụ thuộc vào kết quả của lệnh trước đó mov edx, [ebx+24h] – lệnh này sẽ không được gửi đi thực hiện cho đến khi tất cả địa chỉ của các lệnh trước đó đã được tính toán xong.

Việc này có thể ảnh hưởng đến tốc độ xử lý của K8 do bị “thắt nút cổ chai” Do đó,mặc dù bộ xử lý K8 có thể tiến hành hai lệnh mỗi xung nhịp, trong một số mã nhấtđịnh, nó có thể thực hiện đòi hỏi bộ nhớ kém hiệu quả hơn bộ xử lý Core 2, chỉ đọcđược một lệnh mỗi xung nhịp, nhưng lại áp dụng quy tắc xử lý lệnh không theo thứ tự

và có thể đọc hoặc ghi trước các lệnh trước đó

2.5 Bộ phận dấu phẩy động – Floating Point Unit

Bộ phận Scheduler đơn vị dấu phẩy động (FPU) của các bộ xử lý K8 được táchriêng khỏi bộ phận Scheduler đơn vị số nguyên và có thiết kế khác đi một chút Bộnhớ đệm của Scheduler có thể cung cấp tối đa 12 nhóm, mỗi nhóm gồm 3 MOP (theo

lý thuyết là 36 phép tính dấu phẩy động) Khác với Bộ phận số nguyên có các Pipe đốixứng, FPU gồm có ba phần khác nhau: FADD cho phép cộng dấu phảy động , FMUL

25

Ngày đăng: 11/11/2015, 14:55

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w