K8 là phiên bản cải tiến của kiến trúcK7, với những tính năng đáng kể nhất là hỗ trợ tập lệnh x86-64bit với têngọi chính thức là AMD64, tích hợp khối điều khiển bộ nhớ vào trong chip,kiế
Trang 1ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO BÀI TẬP LỚN
MÔN : KIẾN TRÚC MÁY TÍNH
ĐỀ TÀI : PHÂN TÍCH KIẾN TRÚC VÀ NGUYÊN
LÝ LÀM VIỆC CỦA BỘ VXL AMD K8
ĐINH CÔNG HIẾU
GIÁO VIÊN HƯỚNG DẪN :
Th.s NGUYỄN TUẤN TÚ
Hà Nội , Ngày 14 Tháng 5 Năm 2012
Trang 2MỤC LỤC
A-Mở đầu 3
B-Nội dung 5
I.Giới thiệu 5
II.Những nghiên cứu về AMD K8 5
1.Sự kế thừa từ AMD XP (K7) 5
2.Kiến trúc tổng quan của bộ VXL AMD K8 6
3.Những cải tiến của K8 6
4.Sự phát triển của K8 12
5.Cache K8 13
6.Cache hòa nhập và cache độc quyền 17
7 Ưu điểm và nhược điểm của từng phương pháp 23
8.Băng thông bộ nhớ cache 23
9.Độ trễ 27
Trang 3A-MỞ ĐẦU
Vi xử lý (CPU) là gì?
Trước hết để tránh những băn khoăn đáng tiếc trong khi nghiên cứu tàiliệu, tôi xin được giới thiệu đôi chút về 02 khái niệm “vi xử lý”(microprocessor) và “vi điều khiển (microcontroller) Về cơ bản hai kháiniệm này không khác nhau nhiều, “vi xử lý” là thuật ngữ chung dùng để đềcập đến kỹ thuật ứng dụng các công nghệ vi điện tử, công nghệ tích hợp vàkhả năng xử lý theo chương trình vào các lĩnh vực khác nhau Vào nhữnggiai đoạn đầu trong quá trình phát triển của công nghệ vi xử lý, các chip (haycác vi xử lý) được chế tạo chỉ tích hợp những phần cứng thiết yếu như CPUcùng các mạch giao tiếp giữa CPU và các phần cứng khác Trong giai đoạnnày, các phần cứng khác (kể cả bộ nhớ) thường không được tích hợp trênchip mà phải ghép nối thêm bên ngoài Các phần cứng này được gọi là cácngoại vi (Peripherals) Về sau, nhờ sự phát triển vượt bậc của công nghệ tíchhợp, các ngoại vi cũng được tích hợp vào bên trong IC và người ta gọi các vi
xử lý đã được tích hợp thêm các ngoại vi là các “vi điều khiển” Việc tíchhợp thêm các ngoại vi vào trong cùng một IC với CPU tạo ra nhiều lợi íchnhư làm giảm thiểu các ghép nối bên ngoài, giảm thiểu số lượng linh kiệnđiện tử phụ, giảm chi phí cho thiết kế hệ thống, đơn giản hóa việc thiết kế,nâng cao hiệu suất và tính linh hoạt Trong tài liệu này, ranh giới giữa haikhái niệm “vi xử lý” và “vi điều khiển” thực sự không cần phải phân biệt rõràng Chúng tôi sẽ dùng thuật ngữ “vi xử lý” khi đề cập đến các khái niệm
cơ bản của kỹ thuật vi xử lý nói chung và sẽ dùng thuật ngữ “vi điều khiển”khi đi sâu nghiên cứu một họ chip cụ thể Về cơ bản kiến trúc của một vi xử
lý gồm những phần cứng sau:
Đơn vị xử lý trung tâm CPU (Central Processing Unit)
Trang 4Các bộ nhớ (Memories).- Các cổng vào/ra song song (Parallel I/OPorts).
Các cổng vào/ra nối tiếp (Serial I/O Ports)
Các bộ đếm/bộ định thời (Timers)
Ngoài ra với mỗi loại vi điều khiển cụ thể còn có thể có thêm một sốphần cứng khác như bộ biến đổi tương tự-số ADC, bộ biến đổi số-tương tựDAC, các mạch điều chế dạng sóng WG, điều chế độ rộng xung PWM…
Bộ não của mỗi vi xử lý chính là CPU, các phần cứng khác chỉ là các cơquan chấp hành dưới quyền của CPU Mỗi cơ quan này đều có một cơ chếhoạt động nhất định mà CPU phải tuân theo khi giao tiếp với chúng Để cóthể giao tiếp và điều khiển các cơ quan chấp hành (các ngoại vi), CPU sửdụng 03 loại tín hiệu cơ bản là tín hiệu địa chỉ (Address), tín hiệu dữ liệu(Data) và tín hiệu điều khiển (Control) Về mặt vật lý thì các tín hiệu này làcác đường nhỏ dẫn điện nối từ CPU đến các ngoại vi hoặc thậm chí là giữacác ngoại vi với nhau Tập hợp các đường tín hiệu có cùng chức năng gọi làcác bus Như vậy ta có các bus địa chỉ, bus dữ liệu và bus điều khiển
Trang 5B-NỘI DUNG
KIẾN TRÚC AMD K8
I Giới thiệu
AMD XP (K7) đã trở lên lỗi thời, mặc dù vẫn còn tốt nhưng hiệu năng
rõ ràng là không bằng được Pentium 4 K8 là phiên bản cải tiến của kiến trúcK7, với những tính năng đáng kể nhất là hỗ trợ tập lệnh x86-64bit (với têngọi chính thức là AMD64), tích hợp khối điều khiển bộ nhớ vào trong chip,kiến trúc kết nối trực tiếp với tốc độ cực nhanh theo kiểu điểm đến điểmHyperTransport Những công nghệ này ban đầu được ứng dụng trong bộ xử
lý dùng cho máy chủ Opteron Một thời gian ngắn sau, chúng cũng đượcxuất hiện trong bộ xử lý Athlon 64 dùng cho desktop
II Những nghiên cứu về AMD K8
1.Sự kế thừa từ Athlon XP
Bắt đầu với tốc độ 500mhz dùng khe cắm A cho đến barton kiến trúccủa K7 không thay đổi nhiều, chỉ là điều chỉnh cache L2 và tới AMD XP thìthêm SSE
CPU K7 có tất cả 9 đơn vị thực thi :
3 x86 decoding units (đơn vị giải mã)
3 integer units (ALU) (bộ tính toán số Nguyên)
3 floating point units (FPU) ( bộ tính toán chấm động)
Trang 62.Kiến trúc tổng quan của bộ VXL AMD K8
3 Những cải tiến của K8
K8 kế tục kiến trúc của K7 nhưng có nhưng thay đổi : Bộ tiên đoán lệnhtiếp tục được cải tiến , SSE2 và pipeline dài hơn
K8 khá giống k7 , số đơn vị thực thi của nó đã nói lên điều đó; sự khácnhau đáng kể nhất chính là độ dài pipie line :
Trang 7ALU : K7 có 10 pipelline
K8 có 12 pipeline
FPU : K7 có 15 pipeline
K8 là 17 pipelineTrong một pipeline thì một đoạn tương đương với một công đoạn xử lýlệnh Do vậy kiến trúc pipeline dài tuy có nhược điểm là thời gian truy xuấtchậm, nhưng lại có ưu điểm là số lệnh được xử lý đồng thời sẽ nhiều hơn Ví
dụ pipeline có 30 stage thì số lệnh được xử lý đồng thời là 30
Ngòai ra K8 còn có các thanh ghi 64 bit
Điều này dẫn đến sự thay đổi về phương thức tính tóan của CPU giốngnhư hình dưới đây :
a.Tích hợp bộ điều khiển bộ nhớ (Memory controller):
Kể từ dòng K7 trở về trước, bộ điều khiển bộ nhớ do chipset cầu bắcđảm nhận, nhiệm vụ chính của chipset cầu bắc là làm cầu nối trung giangiữa CPU và bộ nhớ chính thông qua FontSideBus (FSB)
Trang 8Do đó về mặt lý thuyết bus bộ nhớ sẽ bị giới hạn theo bus của CPU hay buscủa chipset, trong khi đó, bus bộ nhớ hiện nay đã được đẩy lên rất cao, tathường nghe nói đến bộ nhớ DDR500, DDR550, DDR600 và cao hơn nữa.
Đến dòng K8 - A64, AMD đã tích hợp luôn bộ điều khiển bộ nhớ vào trongnhân của CPU (core) nên có thể nói rằng trong chừng mực nào đó bus bộnhớ cao đến bao nhiêu CPU đều có thể đáp ứng được
Bên cạnh đó việc tích hợp bộ điều khiển bộ nhớ còn góp phần rất lớn trongviệc giảm đáng kể “độ trễ” của dữ liệu do không phải truyền từ CPU qua
Trang 9chipset cầu bắc và ngược lại, đồng thời “vứt bỏ” nút thắt dữ liệu giúp giatăng băng thông giữa CPU và bộ nhớ chính
Như trên biểu đồ, tốc độ bộ điều khiển bộ nhớ là như nhau Yêu cầu
bộ nhớ được kết quả gửi ở tốc độ CPU, trên một64/128 độ rộng bus, theo sốcác kênh bộ nhớ Bộ nhớ clock được lấy từ CPU clock, sự phân chia phụthuộc vào các thông số kỹ thuật bộ nhớ
Bảng dưới đây cho thấy ngăn được sử dụng theo tần số CPU và bộ nhớclock được yêu cầu
Tất nhiên, việc tích hợp bộ điều khiển nhớ không cải thiện được băngthông bộ nhớ, nhưng nó cho phép giảm đáng kể thời gian yêu cầu Hơn nữa,không giống như điều khiển một bộ nhớ ngoài, việc tích hợp bộ điều khiểnnhớ của K8 là tăng tốc độ CPU; do đó, cũng tăng tốc độ yêu cầu Bộ điềukhiển tích hợp có một tầm quan trọng trong hệ thống hệ thống đa CPU:trong trường hợp này, dung lượng bộ nhớ địa chỉ và tổng băng thông tăngvới số CPU.Vấn đề là việc tích hợp bộ điều khiển nhớ là thiếu tính linhhoạt.Vì mỗi thay đổi trong bộ nhớ tiêu chuẩn sẽ cần một sự thay đổi trongthiết kế CPU, điều này có thể làm tăng chi phí CPU, cũng như phải thay đổitoàn bộ quá trình sản xuất CPU
b.Công nghệ “Siêu truyền” (HyperTransport Technology HTT):
Trang 10-Cung cấp kết nối tốc độ cực nhanh theo kiểu điểm đến điểm để kết nốicác thành phần trên mainboard và có giải thông lên tới 6.4GBps một đườngkết nối HyperTransport có thể cung cấp dải thông lên gấp 20 lần , tức là tới
266 MBps và được ứng dụng trong những lĩnh vực đòi hỏi dữ liệu đượctruyền đi với cường độ cao, tốc độ lớn và độ trễ nhỏ Khi đó CPU sẽ giaotiếp với memory và chipset thông qua HyperTransport bus (HTT) với băngthông cực lớn và được mở cả 2 chiều không cản trở lẫn nhau (full-duplex).Giúp hạn chế hiện tượng “thắt cổ chai” (bottle-neck) tạo điều kiện cho bộ xử
lý tận dụng không gian trống bộ nhớ hiệu quả hơn
Trang 11Sơ đồ khối của HyperTransport trong mạch điện liên kết Nó cho phép sử dụng nhiều Chip Northbridge , mỗi một Chip lại nối với nhiều
bọ vi xử lí Athlon nối kèm theo Bus V6.
Ứng dụng công nghệ HyperTransport trong kiến trúc hệ thống nhằmvào những lợi ích sau:
- Tăng cường đáng kể độ rộng dải băng tần so với các ứng dụng khác
- Thời gian chờ thực thi chỉ lênh ngắn, giảm thiểu mọi hạn chế đối vớixung nhịp bộ xử lý
- Xử lý giao thức dạng biểu kiến đối với hệ điều hành, không tạo xungđột trên các trình điều khiển thiết bị ngoại vi
- Chế độ song công hoàn toàn (full-duplex) cho phép thực thi qua kênh
dữ liệu việc truyền-nhận cùng lúc
Trang 12c.Công nghệ Cool'n'Quiet
Cool'n'Quiet là một cải tiến khác dành cho dòng VXL 64 bit Tốc độ vàđiện năng tiêu thụ của bộ VXL sẽ được điều chỉnh tự động Nếu có ít ứngdụng được chạy (bộ VXL xử lý ít) thì Cool'n'Quiet sẽ giảm tốc độ quạt tảnnhiệt (tiếng ồn) và điện thế bộ VXL; ngược lại, khi cần xử lý nhiều thì bộVXL sẽ được tăng tốc độ quạt tản nhiệt và điện thế Giúp hệ thống chạy thật
êm mượt khi thực thi các chuỗi lệnh, nâng cao tuổi thọ CPU và tạo nên mộtmôi trường làm việc thật yên tĩnh, thông thoáng
4.Sự phát triển của K8
K7 tuy được thiết kế khá tốt nhưng tốc độ băng thông chậm và tốc độcủa cache L2 khá chậm nếu so với intel Cụ thể là CPU K7 mạnh nhất băngthông cũng chỉ đạt xấp xỉ 3,2 MB/s và băng thông L2 cũng chỉ đạt có 15GB/s thấp hơn mức khoảng 5 GB/s và 32-35 GB/s của Pentum 4 khá nhiều
Để khắc phục điểm yếu này AMD 64 đã nâng cấp cache L2 lên 128 bitđưa được băng thông L2 lên xấp xỉ 24 GB /s dù vậy rõ ràng tốc độ này vẫnchưa bằng được Pentum 4 Đó cũng là nguyên nhân chính khiến AMD 64vẫn chưa có được lợi thế về các tác vị đơn giản cần nhiều L2 , hoặc các tác
vụ đòi hỏi dữ liệu luân chuyển liên tục qua L2 : như encode, zip file , renderđiểm yếu Đây cũng là 1 điểm hạn chế của AMD K8 , AMD vẫn chưa bắtkịp Intel về tốc độ L2
Thực tế thì một số dòng CPU cấp thấp của K8, L2 sẽ không tận dụngđược gì nhiều từ sự nâng cấp lên 128 bit này Có một điểm thành công củaAMD là khi họ gia tăng L2 lên 1MB kéo pipeline dài ra đã giữ nguyên được
độ trễ Latency là 8 giống như K7 trong khi Intel khi tăng L2 lên 1MB( northwood > prescott) đã phải tăng độ trễ L2 của CPU từ 7 lên tới 11
Trang 13Chi tiết kỹ thuật của Cache nhớ đối với các CPU K8
Trang 14Khi các địa chỉ cần tìm đã được tính toán xong trong AGU của bộ xử lý K8,tất cả các phép tính đã được tải và lưu trữ sẽ được chuyển đến LSU (Đơn vịtải/lưu trữ - Load/Store Unit ) LSU chứa hai hàng chờ: LS1 và LS2 Đầutiên, các phép tính này sẽ được chuyển vào hàng LS1 với 12 đơn vị Với tốc
độ hai phép tính mỗi xung nhịp, hàng chờ LS1 cần có bộ nhớ cache L1 đượcsắp xếp bởi mã lập trình Trong trường hợp không có trong cache ( Cache –Miss ) , các phép tính sẽ được xếp vào hàng chờ LS2 32 đơn vị Đây là lúccần đến bộ nhớ cache L2 và RAM
Trang 15Cache L1 trong K8 được tách riêng: 64Kb lệnh (L1I) và dữ liệu (L1D).Mỗi cache được liên kết hai chiều và có độ dài 64 byte Việc này có thể dẫnđến xung đột thường xuyên giữa các đường có cùng đích đến, làm tăng sốcache thiếu và ảnh hưởng xấu đến tốc độ xử lý Nhưng tình trạng này có thểđược khắc phục bằng cache L1 có kích thước lớn hơn Ngoài ra, một ưuđiểm khác của L1D đó là có có hai cổng, do vậy có thể xử lý hai lệnh đọchoặc/và viết hai lệnh trong mỗi xung nhịp
Bộ xử lý bắt đầu quá trình mã hoá bằng việc tìm nạp dòng lệnh từ cachelệnh L1 và giải mã chúng.Độ dài của lệnh x86 thường không ổn định nênrất khó xác định giới hạ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ệnh trong khi chúng đang được nhậpvào cache L1 Thông tin về quá trình giải mã được chứ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 bytelệnh) Bằng cách giải mã trước (predecoding) trong khi đang tải lệnh vàocache, phạm vi những lệnh có thể được xác định trong quá trình giải mã, chophé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
Trang 16Cá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ần gửi cho giải mã Bộ xử lý K8 sẽ nạp lệnh trong các khối 16-byte Khi
đó, tốc độ nạp lệnh đủ nhanh để bộ xử lý K8 có thể gửi được ba dòng lệnhvới tốc độ giải mã trung bình là 5 byte mỗi xung nhịp
b.Cache L2
Cache L1 và L2 trao đổi dữ liệu qua hai Bus theo hai hướng: một đểnhận và một để chuyển dữ liệu Trong bộ xử lý K8, mỗi Bus rộng 64 bit (8byte) Cấu trúc này giúp tốc độ chuyển dữ liệu đến cache L2 ít nhất là 8byte/xung nhịp Nói cách khác, cần 8 xung nhịp để chuyển 64 bit, do vậythời gian chuyển dữ liệu đến nhân sẽ bị chậm lại rõ rệt, đặc biệt là khi haidòng trong cache L2 được chuyển đến cùng một lúc
Một lần nữa, cache L2 của K8 chia sẻ nhiều đặc điểm chung với K7 Cảhai đều sử dụng 16 - cách xác lập sự liên kết từng phần đền bù cho sự liênkết thấp của L1
Trang 17Chiều rộng bus giữa lõi và tăng bộ nhớ cache L2, từ 64 bits trên K7 đến
128 bits trên K8 Với K7, bus đã được sắp xếp theo quy cách của Athlon với
bộ nhớ cache riêng biệt, nhưng bây giờ lựa chọn này bắt đầu cho thấy một sốhạn chế về cache – tốc đọ của chip Việc tăng L2 lên 128 bits cho phép đểcải thiện băng thông L2 K8 cũng bao gồm logic nạp trước phần cứng, chophép lấy dữ liệu từ bộ nhớ đến cache L2 K7 và K8 sử dụng quan hệ độcquyền giữa L1 và L2, đối lập với Intel sử dụng quan hệ hòa nhập
6 Cache hòa nhập và cache độc quyền
Để hiểu cách thức làm việc của cache, chúng ta hãy xem xét thùng CPU
có một nơi dự trữ trình độ Khi yêu cầu đọc xảy ra, CPU sẽ yêu cầu nơi dựtrữ của nó cho dữ liệu đã yêu cầu Nếu nó không chứa dữ liệu, CPU sẽ lấy
nó từ bộ nhớ và đồng thời cũng sẽ sao chép nó vào bộ nhớ cache.Vì CPUcho rằng nếu nó cần dữ liệu này một lần, nó có thể cần thêm nhiều lần nữa.CPU x86 chứa một vài sổ đăng ký, và giá trị nó vừa mới về tới nơi từ bộ nhớđến sổ đăng ký sẽ không ở lại hơn một vài chu kỳ, vì sổ đăng ký nhanhchóng sẽ được yêu cầu thực hiện lệnh khác Lưu trữ dữ liệu trong cache làcách để giữ nó
Trang 18Hình 1 : cache fill
Tình huống trở nên làm phức tạp hơn nếu bộ nhớ cache đầy Bộ nhớcache đầy sẽ cần line để thay thế Để biết những line nào cần được thay thế,CPU sử dụng thuật toán thay thế Lựa chọn phổ biến nhất là thay line gầnđây ít sử dụng nhất: thuật toán LRU
Hình 2 : Eviction of a cache line
Line dữ liệu bị ghi đè Mục đích đầu tiên của L2 là sao chép lại line nàythay vì xóa nó đi
Trang 19Việc bổ sung L2 sẽ tạo ra các trường hợp khi yêu cầu đọc được thựchiện :
Dữ liệu ở L1 : L1 success
Dữ liệu không đưa vào L1 nhưng ở L2 : L1 miss, L2 success
Dữ liệu không đưa vào L1 và không đưa vào L2 : L1 và L2miss
Figure 3 : L1 fill
Ngay khi sau L1 đầy, L2 có vai trò tích cực : khi line được đuổi từ L1,
nó được sao chép vào L2, line mới từ bộ nhớ được sao chép vào line tự do :
Trang 20Hình 4 : L2 fill
Từ thời điểm này, L2 chứa dữ liệu và có thể trả lời một yêu cầu đọc.Nếu dữ liệu được yêu cầu không có trong L1 nhưng trong L2, một line củaL1 được sao chép Vì một line trong L1 phải được giải phóng để có thể saochép được dữ liệu từ L2 Thuật toán LRU cho phép chọn 1 line, sao chép nóvào L2 và line từ L2 được sao chép lại vào line tự do trong L1
Hình 5 : L1 miss, L2 success