BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI HỒ VĂN PHI TỐI ƯU HÓA VÀ ĐÁNH GIÁ HIỆU NĂNG CỦA TỔ CHỨC CACHE TRONG HỆ THỐNG VI XỬ LÝ THẾ HỆ SAU
LUẬN ÁN TIẾN SĨ KỸ THUẬT VIỄN THÔNG
Hà Nội - 2014
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI HỒ VĂN PHI TỐI ƯU HÓA VÀ ĐÁNH GIÁ HIỆU NĂNG CỦA TỔ CHỨC CACHE TRONG HỆ THỐNG VI XỬ LÝ THẾ HỆ SAU
Chuyên ngành: Kỹ thuật Viễn thông Mã số: 62520208
LUẬN ÁN TIẾN SĨ KỸ THUẬT VIỄN THÔNG
NGƯỜI HƯỚNG DẪN KHOA HỌC:
1. TS. HỒ KHÁNH LÂM
2. TS. NGUYỄN VIẾT NGUYÊN
Hà Nội - 2014
LỜI CAM ĐOAN
Tôi xin cam đoan đây là công trình của riêng tôi. Tất cả các ấn phẩm được
công bố chung với các cán bộ hướng dẫn khoa học và các đồng nghiệp đã được sự
đồng ý của các tác giả trước khi đưa vào Luận án. Các kết quả trong Luận án là
trung thực, chưa từng được công bố trong bất kỳ công trình nào.
Tác giả Luận án
Hồ Văn Phi
LỜI CẢM ƠN
Đầu tiên, tôi xin bày tỏ lời cảm ơn chân thành và sự kính trọng đến các Thầy
giáo TS. Hồ Khánh Lâm và TS. Nguyễn Viết Nguyên, các Thầy đã nhận tôi làm
nghiên cứu sinh và hướng dẫn tôi rất nhiệt tình trong suốt thời gian học tập, nghiên
cứu và thực hiện bản Luận án này. Các Thầy đã tận tình chỉ bảo và giúp đỡ tôi cả về
lĩnh vực khoa học cũng như trong cuộc sống. Tôi vô cùng biết ơn sự kiên trì của các
Thầy, các Thầy đã dành nhiều thời gian để đọc cẩn thận và góp nhiều ý kiến quý
báu cho bản thảo của Luận án. Những kiến thức mà tôi nhận được từ các Thầy
không chỉ là bản Luận án mà trên hết là cách nhìn nhận, đánh giá cũng như phương
thức giải quyết vấn đề một cách toàn diện và khoa học.
Tôi xin trân trọng cảm ơn Lãnh đạo Trường Đại Học Bách khoa Hà Nội, Viện
Sau Đại học, Viện Điện tử - Viễn thông và Bộ môn Điện tử & Kỹ thuật máy tính đã
tạo điều kiện thuận lợi cho tôi được học tập và làm nghiên cứu sinh, luôn quan tâm
động viên tôi trong suốt quá trình học tập và nghiên cứu.
Tôi xin chân thành cảm ơn sự giúp đỡ tận tình của các GS, PGS, TS, các
Thầy, Cô giáo trong Bộ môn Điện Tử & Kỹ thuật máy tính, Viện Điện tử - Viễn
thông, các Nhà khoa học trong và ngoài Trường Đại học Bách khoa Hà Nội.
Tôi xin trân trọng cảm ơn Lãnh đạo Trường Đại học Quy Nhơn và Khoa Kỹ
thuật & Công nghệ - Trường Đại học Quy Nhơn, cũng như bạn bè đồng nghiệp đã
ủng hộ và tạo mọi điều kiện thuận lợi giúp đỡ tôi trong suốt thời gian học tập,
nghiên cứu và hoàn thành Luận án.
Cuối cùng, tôi muốn dành lời cảm ơn đến những người thân yêu nhất của tôi.
Bản Luận án này là món quà quý giá tôi xin được kính tặng cho cha mẹ, vợ và các
con thân yêu của tôi.
Hà Nội, tháng 06 năm 2014
Tác giả Luận án
Hồ Văn Phi
MỤC LỤC
DANH MỤC CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT
DANH MỤC CÁC BẢNG
DANH MỤC CÁC HÌNH, ẢNH VÀ ĐỒ THỊ
MỞ ĐẦU...... ................................................................................................. 1
1. Tính cấp thiết của luận án ..................................................................... 1
2. Mục đích nghiên cứu của luận án .......................................................... 4
3. Đối tượng và phạm vi nghiên cứu của luận án ..................................... 4
4. Phương pháp nghiên cứu của luận án ................................................... 4
5. Ý nghĩa khoa học và thực tiễn của luận án ........................................... 5
6. Cấu trúc của luận án .............................................................................. 5
Chương 1. TỔNG QUAN VỀ KIẾN TRÚC CHIP ĐA XỬ LÝ, ĐA
LUỒNG ....................................................................................... 6
1.1. Giới thiệu ............................................................................................. 6
1.2. Kiến trúc của chip đa xử lý, đa luồng ................................................ 6
1.2.1. Kiến trúc chung của chip đa xử lý, đa luồng ....................................6
1.2.2. Kiến trúc chip đa xử lý, đa luồng đồng thời ................................... 11
1.2.3. Mạng liên kết trên chip ...................................................................... 12
1.2.4. Phân cấp hệ thống nhớ ....................................................................... 16
1.3. Kết luận chương 1 ............................................................................. 18
Chương 2. NGHIÊN CỨU TỔ CHỨC CACHE, CHÍNH SÁCH THAY THẾ CACHE TRONG KIẾN TRÚC CHIP ĐA XỬ LÝ, ĐA LUỒNG ....................................................................... 19
2.1. Tổ chức cache trong kiến trúc chip đa xử lý, đa luồng ................... 19
2.1.1. Cache và các nguyên tắc làm việc của cache .................................. 19
2.1.1.1. Vị trí tạm thời ................................................................................... 20
2.1.1.2. Vị trí không gian ............................................................................... 20
2.1.1.3. Vị trí tuần tự ..................................................................................... 20
2.1.2. Các thành phần của cache ................................................................. 20
2.1.3. Các tổ chức cache ................................................................................ 21
2.1.3.1. Cache liên kết đầy đủ ........................................................................ 22
2.1.3.2. Cache sắp xếp trực tiếp..................................................................... 24
2.2. Các đặc tính hiệu năng của cache .................................................... 28
2.1.3.3. Cache liên kết tập hợp ...................................................................... 26
2.2.1. Các tỷ số trúng cache và trượt cache ............................................... 29
2.2.1.1. Trúng cache ...................................................................................... 29
2.2.1.2. Trượt cache ...................................................................................... 29
2.2.1.3. Tỷ số trúng cache, trượt cache và trượt penalty ................................ 29
2.2.1.4. Bus bộ nhớ, kích thước từ nhớ, kích thước khối và trượt penalty ....... 31
2.2.1.5. Trượt cache cục bộ và toàn cục ........................................................ 31
2.2.1.7. Ảnh hưởng của tổ chức cache đến trượt penalty ............................... 33
2.2.1.8. Kích thước khối cache và tỷ số trượt ................................................. 34
2.2.1.9. Các loại trượt cache ......................................................................... 35
2.2.1.10. Tổ chức cache ảnh hưởng đến tốc độ của CPU ............................... 36
2.2.2. Các giải pháp tăng hiệu năng của cache ......................................... 38
2.3. Các chính sách thay thế dòng cache ..................................................... 38
2.3.1. Chính sách thay thế cache LRU ....................................................... 39
2.3.2. Chính sách thay thế cache LFU ........................................................ 39
2.3.3. Chính sách thay thế cache FIFO ...................................................... 39
2.3.4. Chính sách thay thế cache Random ................................................. 39
2.3.5. Chính sách thay thế cache NRU ....................................................... 40
2.3.6. Chính sách thay thế cache SRRIP.................................................... 40
2.3.7. Chính sách thay thế cache DRRIP ................................................... 42
2.4. Ghi và đọc cache ................................................................................ 42
2.4.1. Ghi cache .............................................................................................. 42
2.4.1.1. Ghi thông qua ................................................................................... 43
2.4.1.2. Ghi trở lại ......................................................................................... 44
2.4.2. Đọc cache .............................................................................................. 46
2.4.2.1. Đọc bên cạnh .................................................................................... 46
2.5.2.2. Đọc thông suốt .................................................................................. 47
2.5. Cache chia sẻ thông minh ................................................................. 48
2.5.1. Tổ chức phân cấp cache trong các chip đa xử lý ........................... 48
2.5.2. Cache chia sẻ thông minh .................................................................. 49
2.6. Tính nhất quán cache trong các chip đa xử lý, đa luồng ................ 50
2.6.1. Thế nào là nhất quán cache ............................................................... 50
2.6.2. Các giao thức nhất quán cache ......................................................... 52
2.7. Kết luận chương 2 ............................................................................. 52
Chương 3. PHÂN TÍCH ĐÁNH GIÁ HIỆU NĂNG CỦA TỔ CHỨC CACHE TRONG KIẾN TRÚC CHIP ĐA XỬ LÝ, ĐA LUỒNG ..................................................................................... 53
3.1. Cơ sở lý thuyết để phân tích đánh giá hiệu năng của tổ chức
cache .................................................................................................. 53
3.1.1. Kiến trúc chip đa xử lý, đa luồng là mạng xếp hàng đóng đa
lớp có dạng tích các xác suất (MCPFQN) ....................................... 53
3.1.1.1. Khái quát mạng xếp hàng đóng ......................................................... 53
3.1.1.2. Khái quát mạng xếp hàng đóng có dạng tích các xác suất ................ 56
3.1.1.3. Kiến trúc chip đa xử lý, đa luồng là mạng xếp hàng đóng đa lớp
có dạng tích các xác suất (MCPFQN)............................................... 58
3.1.2. Thuật toán phân tích giá trị trung bình (MVA) đánh giá hiệu
năng cho các mạng xếp hàng đóng có dạng tích các xác suất ...... 59
3.1.2.1. Mạng xếp hàng đóng đơn lớp có dạng tích các xác suất ................... 59
3.1.2.2. Mạng xếp hàng đóng đa lớp có dạng tích các xác suất ..................... 61
3.2. Mô hình tổ chức cache trong kiến trúc chip đa xử lý, đa luồng...... 62
3.2.1. Khái quát .............................................................................................. 62
3.2.2. Mô hình tổ chức cache trong kiến trúc chip đa xử lý, đa
luồng...................................................................................................... 63
3.3. Phân tích đánh giá hiệu năng của tổ chức cache trong kiến trúc
chip đa xử lý, đa luồng ..................................................................... 64
3.3.1. Mô hình thực hiện phân tích hiệu năng của kiến trúc chip đa
xử lý, đa luồng ..................................................................................... 64
3.3.1.1. Mô hình tổng quát............................................................................. 64
3.3.1.2. Mô hình rút gọn ................................................................................ 66
3.3.2. Kết quả mô phỏng và đánh giá hiệu năng cho kiến trúc CMP
đa luồng ................................................................................................ 72
3.3.2.1. Kết quả mô phỏng cho các kiến trúc CMP đa luồng.......................... 72
3.3.2.2. Đánh giá hiệu năng các chip đa xử lý, đa luồng ............................... 83
3.4. Kết luận chương 3 ............................................................................. 84
Chương 4. GIẢI PHÁP TỐI ƯU HÓA HIỆU NĂNG CỦA TỔ CHỨC CACHE TRONG KIẾN TRÚC CHIP ĐA XỬ LÝ, ĐA LUỒNG ..................................................................................... 85
4.1. Kiến trúc cụm lõi cho chip đa xử lý, đa luồng ................................. 85
4.1.1. Khái quát .............................................................................................. 85
4.1.2. Mô hình MCPFQN cho kiến trúc cụm lõi ....................................... 86
4.1.2.1. Mô hình MCPFQN tổng quát của kiến trúc cụm lõi .......................... 86
4.1.2.2. Mô hình MCPFQN rút gọn của kiến trúc cụm lõi ............................. 88
4.1.3. Kết quả mô phỏng và đánh giá hiệu năng cho kiến trúc cụm
lõi ........................................................................................................... 90
4.1.3.1. Kết quả mô phỏng cho kiến trúc cụm lõi ........................................... 90
4.1.3.2. Đánh giá hiệu năng cho kiến trúc cụm lõi ......................................... 93
4.2. Lựa chọn cấu hình mạng liên kết trên chip ..................................... 94
4.2.1. Khái quát .............................................................................................. 94
4.2.2. Đề xuất công thức tính trễ truyền thông trung bình cho mạng
liên kết trên chip ................................................................................. 94
4.2.3. Lựa chọn cấu hình mạng liên kết trên chip ................................. 99
4.2.3.1. Kết quả mô phỏng ............................................................................. 99
4.2.3.2. Đánh giá kết quả ............................................................................ 104
4.3. Kết luận chương 4 ........................................................................... 104
KẾT LUẬN ............................................................................................... 106
TÀI LIỆU THAM KHẢO ........................................................................ 107
DANH MỤC CÁC CÔNG TRÌNH ĐÃ CÔNG BỐ CỦA LUẬN ÁN .... 115
PHỤ LỤC..... ............................................................................................. 116
Phụ lục 1. Kịch bản mô phỏng đánh giá hiệu năng của tổ chức cache trong kiến trúc CMP đa luồng có 2 cấp cache và 3 cấp cache ...................................................................................... 116
Phụ lục 2. Kịch bản mô phỏng đánh giá hiệu năng của tổ chức cache
trong kiến trúc cụm lõi 3 cấp cache ..................................... 130
DANH MỤC CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT
Ký hiệu Tên tiếng Anh Tên tiếng Việt
A
ACM Association for Computing Hiệp hội kỹ thuật tính toán Hoa
Machinery Kỳ
ALU Arithmetic Logic Unit Đơn vị số học và logic
AMAT Average Memory Access Time Thời gian trung bình truy nhập
bộ nhớ
AMC Asymmetric Multi-core Chip Chip đa lõi bất đối xứng
ANSI American National Standards Viện tiêu chuẩn quốc gia Hoa
Institute Kỳ
ASCII American Standards Code for Chuẩn mã trao đổi thông tin
Information Interchange Hoa Kỳ
ASIC Application-Specific Integrate Mạch tích hợp ứng dụng
Circuit chuyên biệt
B
BCE Base Core Equivalents Tương đương lõi cơ sở
BIP Bimodal Insertion Policy Chính sách chèn hai phương
thức
BRRIP Bimodal Re-Reference Interval Hai phương thức dự báo
Prediction (Bimodal RRIP) khoảng tham chiếu lại
C
CAD Computer Aided Design Thiết kế bằng máy tính
ccNUMA cache-coherent Non-Uniform Truy cập bộ nhớ không đồng
Memory Access nhất tương quan cache
CD Compact Disk Đĩa compact
CISC Complex Instruction Set Computer Máy tính có tập lệnh phức
CMP Chip Multi-Processors Chip đa xử lý
Cycles per Instruction Chu kỳ cho một lệnh CPI
Central Processing Unit Đơn vị xử lý trung tâm CPU
CSM Centralised Shared Memory Bộ nhớ chia sẻ tập trung
CTMC Continuous-Time Markov Chain Chuỗi Markov có thời gian liên
tục
D
DIMM Dual In-line Memory Modules Module bộ nhớ hai hàng chân
DMA Direct Memory Access Truy cập bộ nhớ trực tiếp
DMC Dynamic Multi-core Chip Chip đa lõi linh hoạt
DRAM Dynamic Random-Access Memory RAM động
DRRIP Dynamic Re-Reference Interval Dự đoán khoảng tham chiếu lại
Prediction (Dynamic RRIP) động
DSM Distributed Shared Memory Bộ nhớ chia sẻ phân tán
DSR Dynamic Spill Receive Nhận dữ liệu tràn tự động
DTMC Discrete-Time Markov Chain Chuỗi Markov có thời gian rời
rạc
DVD Digital Versatile Disk Đĩa kỹ thuật số đa năng
F
FCFS First Come, First Served Đến trước được phục vụ trước
FIFO First In First Out Vào trước ra trước
FPGA Field Programmable Gate Array Mảng cổng lập trình được dạng
trường
G
GALS Globally Asynchronous, Locally Dị bộ toàn cục, đồng bộ cục bộ
Synchronous
H
High-Level Language Ngôn ngữ cấp cao HLL
High Performance Computing Tính toán hiệu năng cao HPC
I
Instruction Address Register Thanh ghi địa chỉ lệnh IAR
Integrated Circuit Mạch tích hợp IC
IEEE Institute of Electrical and Electronics Viện kỹ sư điện và điện tử
Engineers
Instruction Level Parallelism Song song mức lệnh ILP
Integrated Memory Controller Bộ điều khiển bộ nhớ tích hợp IMC
Input/Output Vào/ra I/O
Internet Protocol Giao thức Internet IP
Instruction Register Thanh ghi lệnh IR
J
JMT Java Modelling Tools Công cụ mô phỏng Java
L
Local Area Network Mạng cục bộ LAN
Least Frequently Used Tần suất sử dụng ít nhất LFU
Last Level Cache Cache cấp cuối LLC
Least Recently Used Sử dụng gần đây ít nhất LRU
Large-Scale Integration Tích hợp cỡ lớn LSI
M
MAPI Memory Accesses clock cycles Per Số chu kỳ đồng hồ truy cập bộ
Instruction nhớ/lệnh
MAR Memory Address Register Thanh ghi địa chỉ bộ nhớ
MAT Memory Access Time Thời gian truy nhập bộ nhớ
MCPFQN Multiclass Closed Product-Form Mạng xếp hàng đóng đa lớp có
Queuing Network dạng tích các xác suất
MESI Modified, Exclusive, Shared or Sửa đổi, loại trừ, chia sẻ hoặc
Invalid (Cache-Protocol) vô hiệu (giao thức cache)
MESIF Modified, Exclusive, Shared, Sửa đổi, loại trừ, chia sẻ hoặc
Invalid, Forward vô hiệu; chuyển tiếp
MIMD Multiple Instruction Multiple Data Nhiều lệnh nhiều dữ liệu
MISD Multiple Instruction Single Data Nhiều lệnh một dữ liệu
MMU Memory Management Unit Đơn vị quản lý bộ nhớ
MRU Most Recently Used Sử dụng gần đây nhiều nhất
MSI Medium-Scale Integration Tích hợp cỡ trung bình
MSPI Memory Stalls clock cycles Per Số chu kỳ đồng hồ trì hoãn bộ
Instruction nhớ/lệnh
MSPMA Memory Stalls clock cycles Per Số chu kỳ đồng hồ trì hoãn bộ
Memory Access nhớ/truy cập bộ nhớ
MVA Mean Value Analysis Phân tích giá trị trung bình
N
NoC Network on Chip Mạng trên chip
NRU Not Recently Used Không sử dụng gần đây
NUCA Non-Uniform Cache Architecture Kiến trúc cache không đồng
nhất
NUMA Non-Uniform Memory Access Truy nhập bộ nhớ không đều
O
OCIN On-Chip Interconnection Network Mạng liên kết trên chip
Operating System Hệ điều hành OS
P
Program Counter Bộ đếm chương trình PC
Process Control Block Khối điều khiển quá trình PCB
Programmable Logic Device Thiết bị logic lập trình được PLD
PMF Probability mass function Hàm khối lượng xác suất
PS Processor Sharing Chia sẻ xử lý
PSELC Policy Selection Counter Bộ đếm lựa chọn chính sách
PSW Processor Status Word Từ trạng thái của bộ xử lý
Q
Quick Path Interconnect Liên kết đường dẫn nhanh QPI
R
RAID Redundant Array of Independent Hệ thống đĩa dự phòng
Disks
RAM Random Access Memory Bộ nhớ truy cập ngẫu nhiên
RISC Reduced Instruction Set Computer Máy tính với tập lệnh đơn giản
hóa
ROM Read-Only Memory Bộ nhớ chỉ đọc
RRIP Re-Reference Interval Prediction Dự đoán khoảng tham chiếu lại
RRPV Re-reference Prediction Values Giá trị dự đoán tham chiếu lại
S
SD Set Dueling Tranh chấp tay đôi tập hợp
SDM Set Dueling Monitor Bộ giám sát tranh chấp tay đôi
tập hợp
SDRAM Synchronous Dynamic RAM DRAM đồng bộ
SIMD Single Instruction Multiple Data Một lệnh nhiều dữ liệu
SMC Symmetric Multi-core Chip Chip đa lõi đối xứng
SMP Symmetric Multiprocessors Đa xử lý đối xứng
SMT Simultaneous Multi-Threading Đa luồng đồng thời
SoC System on a Chip Hệ thống trên một chip
SP Speed Up Mức tăng tốc
SRAM Static Random-Access Memory RAM tĩnh
SRRIP Static Re-reference Interval Dự đoán khoảng tham chiếu lại
Prediction (Static RRIP) tĩnh
SRRIP- SRRIP-Frequency Priority SRRIP ưu tiên tần xuất
FP
SRRIP- SRRIP-Hit Priority SRRIP ưu tiên trúng cache
HP
SSI Small-Scale Integration Tích hợp cỡ nhỏ
T
TLB Translation Look-aside Buffer Bộ đệm chuyển đổi
TLP Thread Level Parallelism Song song mức luồng
TP Thread Processors Luồng xử lý
TRAM Tag RAM Thẻ RAM
TSC Time Stamp Counter Bộ đếm dấu thời gian
U
ULSI Ultra Large-Scale Integration Tích hợp cỡ siêu lớn
V
VHDL Very-High speed integrated circuit Ngôn ngữ mô tả phần cứng
hardware Description Language VHSIC
VHSIC Very High Speed Integrated Circuit Mạch tích hợp tốc độ rất cao
VLIW Very Long Instruction Word Từ lệnh rất dài
VLSI Very Large-Scale Integration Tích hợp có quy mô rất lớn
DANH MỤC CÁC BẢNG
Bảng 2.1: Tần suất thực hiện các loại lệnh và CPI trong chip kiến trúc RISC. ....... 36
Bảng 3.1: Giá trị trung bình của các thông số hiệu năng khi chip có 2-lõi với 8-
luồng/lõi. ............................................................................................... 73
Bảng 3.2: Giá trị trung bình của các thông số hiệu năng khi chip có 4-lõi với 8-
luồng/lõi. ............................................................................................... 77
Bảng 3.3: Giá trị trung bình của các thông số hiệu năng khi chip có 8-lõi với 8-
luồng/lõi. ............................................................................................... 80
Bảng 4.1: Giá trị trung bình của các thông số hiệu năng khi hệ thống có 2 cụm, mỗi cụm 4-lõi với L3 cache riêng cho mỗi cụm, và L3 cache chung, mỗi lõi xử lý 8-luồng. ............................................................................. 91
Bảng 4.2: Các thông số của các cấu hình mạng liên kết trên CMP đa luồng .......... 97
DANH MỤC CÁC HÌNH, ẢNH VÀ ĐỒ THỊ
Hình 1: Biểu diễn sự gia tăng transistor trên chip theo định luật Moore ..................1
Hình 1.1: Kiến trúc chung của CMP đa luồng. ........................................................6
Hình 1.2: Kiến trúc phân mảnh của CMP. ...............................................................7
Hình 1.3: a) SMC gồm n =16 lõi BCE; b) SMC gồm n/r = 4/4 lõi (4 lõi, mỗi lõi
có 4 BCE). ...............................................................................................8
Hình 1.4: AMC gồm một lõi 4-BCE và n-4 lõi 1-BCE. .............................................9
Hình 1.5: Chip đa lõi linh hoạt (DMC) gồm 16 lõi 1-BCE. .................................... 10
Hình 1.6: CMP với kiến trúc SISD. ........................................................................ 11
Hình 1.7: CMP với kiến trúc SIMD. ....................................................................... 11
Hình 1.8: CMP với kiến trúc MIMD. ...................................................................... 11
Hình 1.9: Một số cấu trúc mạng liên kết đa xử lý. .................................................. 14
Hình 1.10: Phân lớp của hệ thống nhớ. .................................................................. 16
Hình 2.1: Trao đổi dữ liệu giữa CPU, cache và bộ nhớ chính ................................ 19
Hình 2.2: Cache và bộ nhớ chính. .......................................................................... 21
Hình 2.3: Trang cache và dòng cache trên bộ nhớ chính. ...................................... 22
Hình 2.4: Tìm kiếm trong cache liên kết đầy đủ ..................................................... 23
Hình 2.5: Tìm kiếm trong cache sắp xếp trực tiếp. ................................................. 25
Hình 2.6: Tìm kiếm trong cache liên kết tập hợp. ................................................... 27
Hình 2.7: So sánh tỷ số trượt cục bộ và toàn cục với 2 cấp cache. ......................... 33
Hình 2.8: Sự phụ thuộc của tỷ số trượt vào kích thước cache ................................. 34
Hình 2.9: Sự phụ thuộc của tỷ số trượt cache theo kích thước và tổ chức của
cache. .................................................................................................... 35
Hình 2.10: Ghi thông qua. ..................................................................................... 43
Hình 2.11: Ghi trở lại. ........................................................................................... 44
Hình 2.12: Kỹ thuật bộ đệm ghi. ............................................................................ 45
Hình 2.13: Đọc bên cạnh. ...................................................................................... 46
Hình 2.14: Đọc thông suốt. .................................................................................... 47
Hình 2.15: CMP đa luồng hai cấp cache; a) với L2 cache riêng và b) với L2
cache chung cho tất cả các lõi. .............................................................. 48
Hình 2.16: Tổ chức cache trong các bộ xử lý 8-lõi của Intel Xeon họ 5500 ............ 48
Hình 2.17: Tiled CMP 16-lõi với kiến trúc L2 cache chia sẻ. ................................. 49
Hình 2.18: P2 thực hiện lệnh ld r2, x về thanh ghi r2 của P2. ................................ 51
Hình 2.19: P1 thực hiện lệnh ld r2, x. .................................................................... 51
Hình 2.20: P1 thực hiện các lệnh: add r1, r2, r4; st x, r1 ....................................... 51
Hình 3.1: Mô hình mạng xếp hàng đóng. ............................................................... 53
Hình 3.2: Các kiến trúc CMP đa luồng. ................................................................. 64
Hình 3.3: Mô hình MCPFQN tổng quát cho CMP đa luồng của hình 3.2. .............. 65
Hình 3.4: Mô hình MCPFQN rút gọn cho CMP đa luồng, 2 cấp cache với L2
cache chung. .......................................................................................... 67
Hình 3.5: Mô hình MCPFQN rút gọn cho CMP đa luồng, 3 cấp cache với L3
cache chung. .......................................................................................... 69
Hình 3.6: Mô hình MCPFQN 2-lõi, đa luồng; a) với L2 cache chung và b) với
L3 cache chung. ..................................................................................... 73
Hình 3.7: Biểu diễn giá trị trung bình của Thời gian chờ đợi ở các nút khi chip có 2-lõi, mỗi lõi xử lý 8-luồng với L2 cache chung và L3 cache chung. .................................................................................................... 74
Hình 3.8: Biểu diễn giá trị trung bình của Thời gian đáp ứng ở các nút khi chip có 2-lõi, mỗi lõi xử lý 8-luồng với L2 cache chung và L3 cache chung. .................................................................................................... 74
Hình 3.9: Biểu diễn giá trị trung bình của Mức độ sử dụng ở các nút khi chip có
2-lõi, mỗi lõi xử lý 8-luồng với L2 cache chung và L3 cache chung. ...... 75
Hình 3.10: Biểu diễn giá trị trung bình của Thông lượng ở các nút khi chip có
2-lõi, mỗi lõi xử lý 8-luồng với L2 cache chung và L3 cache chung. ...... 75
Hình 3.11: Mô hình MCPFQN 4-lõi, đa luồng; a) với L2 cache chung và b) với
L3 cache chung. ..................................................................................... 76
Hình 3.12: Biểu diễn giá trị trung bình của Thời gian chờ đợi ở các nút khi chip có 4-lõi, mỗi lõi xử lý 8-luồng với L2 cache chung và L3 cache chung. .................................................................................................... 77
Hình 3.13: Biểu diễn giá trị trung bình của Thời gian đáp ứng ở các nút khi chip có 4-lõi, mỗi lõi xử lý 8-luồng với L2 cache chung và L3 cache chung. .................................................................................................... 78
Hình 3.14: Biểu diễn giá trị trung bình của Mức độ sử dụng ở các nút khi chip có 4-lõi, mỗi lõi xử lý 8-luồng với L2 cache chung và L3 cache chung. .................................................................................................... 78
Hình 3.15: Biểu diễn giá trị trung bình của Thông lượng ở các nút khi chip có
4-lõi, mỗi lõi xử lý 8-luồng với L2 cache chung và L3 cache chung. ...... 79
Hình 3.16: Mô hình MCPFQN 8-lõi, đa luồng; a) với L2 cache chung và b) với
L3 cache chung. ..................................................................................... 80
Hình 3.17: Biểu diễn giá trị trung bình của Thời gian chờ đợi ở các nút khi chip có 8-lõi, mỗi lõi xử lý 8-luồng với L2 cache chung và L3 cache chung. .................................................................................................... 81
Hình 3.18: Biểu diễn giá trị trung bình của Thời gian đáp ứng ở các nút khi chip có 8-lõi, mỗi lõi xử lý 8-luồng với L2 cache chung và L3 cache chung. .................................................................................................... 81
Hình 3.19: Biểu diễn giá trị trung bình của Mức độ sử dụng ở các nút khi chip có 8-lõi, mỗi lõi xử lý 8-luồng với L2 cache chung và L3 cache chung. .................................................................................................... 82
Hình 3.20: Biểu diễn giá trị trung bình của Thông lượng ở các nút khi chip có
8-lõi, mỗi lõi xử lý 8-luồng với L2 cache chung và L3 cache chung. ...... 82
Hình 4.1: Kiến trúc CMP đa luồng gồm n cụm lõi và L3 cache riêng cho mỗi
cụm. ....................................................................................................... 86
Hình 4.2: Mô hình MCPFQN tổng quát của kiến trúc cụm lõi cho ở hình 4.1. ....... 87
Hình 4.3: Mô hình MCPFQN rút gọn của kiến trúc cụm lõi. .................................. 88
Hình 4.4: Mô hình MCFPQN 2-cụm lõi, mỗi cụm 4-lõi, đa luồng. ......................... 90
Hình 4.5: Biểu diễn giá trị trung bình của Thời gian chờ đợi ở các nút khi hệ thống có 2-cụm, L3 cache riêng cho mỗi cụm và L3 cache chung cho 8-lõi, mỗi lõi xử lý 8-luồng. .................................................................... 91
Hình 4.6: Biểu diễn giá trị trung bình của Thời gian đáp ứng ở các nút khi hệ thống có 2-cụm, L3 cache riêng cho mỗi cụm và L3 cache chung cho 8-lõi, mỗi lõi xử lý 8-luồng. .................................................................... 92
Hình 4.7: Biểu diễn giá trị trung bình của Mức độ sử dụng ở các nút khi hệ thống có 2-cụm, L3 cache riêng cho mỗi cụm và L3 cache chung cho 8-lõi, mỗi lõi xử lý 8-luồng. .................................................................... 92
Hình 4.8: Biểu diễn giá trị trung bình của Thông lượng ở các nút khi hệ thống có 2-cụm, L3 cache riêng cho mỗi cụm và L3 cache chung cho 8-lõi, mỗi lõi xử lý 8-luồng. ............................................................................. 93
Hình 4.9: Chip đa lõi với tổ chức cache 3 cấp: L1I, L1D, L2 riêng lẻ cho mỗi
lõi và L3 cache chia sẻ cho tất cả các lõi. .............................................. 96
Hình 4.10: Trễ truyền thông trung bình của các mạng liên kết Ring, 2DMesh, 2DTorus, 3DMesh, 3DTorus, cho các trường hợp số lõi trên chip n = 8, 16, 32, 64, 128. ................................................................................ 101
Hình 4.11: Mức tăng tốc xử lý của các mạng liên kết Ring, 2DMesh, 2DTorus, 3DMesh, 3DTorus, cho các trường hợp số lõi trên chip n = 8, 16, 32, 64, 128. .......................................................................................... 104
1
MỞ ĐẦU
1. Tính cấp thiết của luận án
Những tiến bộ trong công nghệ bán dẫn đã thúc đẩy sự phát triển việc thiết kế
hệ thống trên chip. Những gì trước đây được sản xuất trên toàn bộ một bảng mạch,
giờ đây có thể được chế tạo trong một chip duy nhất. Việc tích hợp bộ xử lý và thiết
bị ngoại vi vào trong một chip duy nhất ngày càng trở nên phổ biến trong các hệ
thống nhúng, máy tính xách tay, máy tính để bàn, máy tính quy mô lớn và điện
thoại di động… đã đáp ứng nhu cầu ứng dụng của người tiêu dùng, kinh doanh và
nghiên cứu. Sự tiến bộ này phần lớn được thúc đẩy bởi định luật Moore, định luật
Moore nói rằng: “Số lượng transistor được tích hợp trên một inch vuông của chip
Hình 1: Biểu diễn sự gia tăng số lượng transistor trên chip theo định luật Moore
từ năm 1970 - 2015. [16].
tăng gấp đôi cứ sau 18 tháng” [1, 16, 21, 37].
Sự gia tăng số lượng transistor trên chip như hình 1 cho phép đổi mới nhanh
chóng công nghệ và kiến trúc các chip đa xử lý: từ đơn lõi và không có cache nhớ
bên trong đến đa lõi xử lý với đa cấp cache bên trong chip; từ chỉ chạy với đồng hồ
vài chục MHz đến hơn 2 GHz [37].
2
Cho đến nay, các nhà sản xuất đã sản xuất thương mại các chip đa xử lý cho
các dòng máy tính cá nhân thông dụng với số lõi là 2, 4, 6, 8-lõi. Các kiến trúc đa
lõi này thường sử dụng 2 cấp cache với L1 cache riêng cho mỗi lõi và L2 cache chia
sẻ cho 2-lõi, hay tất cả các lõi như: các bộ xử lý UltraSPARCT2 8-lõi,
UltraSPARCT3 16-lõi, Rock 16-lõi của Sun; Opteron 2-lõi của AMD [16, 29, 36,
58]; Core 2 duo 2-lõi, Core 2 quad 4-lõi của Intel [2, 8, 27, 59, 60]; Power5 2-lõi
của IBM [16, 17]... Cũng có một số chip đa xử lý có 3 cấp cache với L1 cache riêng
cho mỗi lõi, L2 cache riêng cho mỗi lõi hoặc chia sẻ cho 2 hay 4-lõi và L3 cache
chia sẻ cho tất cả các lõi như: bộ xử lý Dunnington 6-lõi, Nehalem Core i5 4-lõi,
Core i7 4 và 6-lõi của Intel, Opteron 4-lõi, Opteron 6-lõi, Opteron 8-lõi của AMD,
Power7 8-lõi của IBM [1, 18, 29, 36, 64, 72]… Tuy nhiên, cũng có một số chip chỉ
sử dụng 2 cấp cache với L2 cache riêng cho từng lõi như: bộ xử lý Power6 2-lõi của
IBM, Tile64 64-lõi của Tilera, Tera-Scale 80-lõi của Intel [1, 11, 29, 66]. Hầu hết,
các kiến trúc chip đa xử lý trên sử dụng mạng liên kết trên chip theo các cấu hình:
Bus chia sẻ, Ring, Crossbar-switched và 2DMesh [1, 11, 28, 29]. Các cấu hình liên
kết này chỉ phù hợp cho các chip đa lõi có quy mô nhỏ, có độ trễ truyền thông cao,
và khả năng mở rộng thấp. Do đó, khi số lượng lõi trên chip tăng sẽ gây ra trễ
truyền thông quá lớn, mức tăng tốc giảm gây ra nghẽn nút cổ chai làm suy giảm
hiệu năng và khả năng mở rộng của chip đa xử lý. Đây là thách thức lớn cho các
nhà nghiên cứu và sản xuất chip đa lõi hiện nay [28].
Một vấn đề đặt ra cho các nhà nghiên cứu và sản xuất chip đa xử lý, đa luồng
là: với chip đa xử lý thì cần giới hạn bao nhiêu lõi trên chip; chọn bao nhiêu cấp
cache; cấu trúc tổ chức cache như thế nào; dung lượng cache và kích thước dòng
cache là bao nhiêu; đồng thời mạng liên kết trên chip có cấu hình như thế nào để đạt
được hiệu năng tối ưu của bộ xử lý?
Tại Việt Nam vấn đề nghiên cứu và sản xuất chip đa xử lý cũng được bắt đầu
quan tâm và được ưu tiên hàng đầu trong lĩnh vực khoa học và công nghệ nhưng chỉ
là bước đầu sơ khai. Theo [74], ngày 16 tháng 01 năm 2008 tại khu công nghiệp
phần mềm, Đại học Quốc gia Thành phố Hồ Chí Minh đã tổ chức lễ ra mắt “Trung
tâm nghiên cứu và đào tạo thiết kế vi mạch (ICDREC)”, và công bố sản phẩm
SigmaK3 8 bit - chip đa xử lý đầu tiên mang thương hiệu Made in Việt Nam. Thành
3 công của sản phẩm chip đa xử lý 8-bit RISC SigmaK3 góp phần khẳng định Việt
Nam có đủ khả năng tạo được những chip đa xử lý tham gia vào thị trường thế giới.
Sau hơn hai năm tập trung nghiên cứu, ngày 27/10/2010, Trung tâm ICDREC đã
công bố sản xuất thành công chip đa xử lý 32-bit VN1632 với công nghệ IBM
0,13µm đầu tiên tại Việt Nam. Đây được coi là bước tiến mới của ngành công nghệ
vi mạch ở Việt Nam. Đặc biệt, vào ngày 09/11/2013, trung tâm ICDREC thành phố
Hồ Chí Minh và Công ty RADRIX của Nhật Bản đã ký kết Bản ghi nhớ hợp tác
(MOU) về việc phối hợp thiết kế và sản xuất chip. Theo MOU, hai bên sẽ hợp tác
để thực hiện các dự án thiết kế LSI mẫu và hướng đến là chip MPW ở công nghệ
65nm. Sự kiện này đã mở ra một hướng đi mới cho ngành công nghệ chế tạo chip ở
Việt Nam. Tuy nhiên, điều này cũng tạo nên một thách thức mới cho các nhà nghiên
cứu trong nước cũng như trung tâm ICDREC. Hơn thế nữa, trong những năm gần
đây công nghệ vi mạch tích hợp chuyên dụng (ASIC) [65]: PLD và FPGA đã và
đang được các nước đang phát triển và cả ở nước ta quan tâm nghiên cứu ứng dụng
và đưa vào đào tạo. Những công nghệ này cho phép thiết kế các chip đa xử lý, vi
điều khiển, hệ thống trên chip (SoC), hệ thống nhúng, mạng liên kết trên chip
(OCIN) một cách dễ dàng và ít tốn kém, phù hợp với ứng dụng của người dùng.
Cùng với các ngôn ngữ mô phỏng các vi mạch tích hợp tốc độ cao (VHDL) và
Verilog, công nghệ ASIC trở thành một xu hướng mới trong phát triển thiết kế chip
đa xử lý ở Việt Nam.
Có thể thấy rằng, việc nghiên cứu và chế tạo chip đa xử lý, đa luồng đã và
đang là một vấn đề thu hút sự quan tâm đặc biệt lớn trên thế giới và Việt Nam. Đây
là một vấn đề thời sự và cấp thiết nhằm giải quyết bài toán hiệu năng của chip đa xử
lý, đa luồng. Định hướng nghiên cứu tối ưu hóa tổ chức cache nhằm nâng cao hiệu
năng của chip đa xử lý, đa luồng là một định hướng đúng đắn có ý nghĩa khoa học
và thực tiễn. Đây cũng là cơ sở để tác giả lựa chọn nội dung nghiên cứu của bản
Luận án này.
Đề tài luận án: “Tối ưu hoá và đánh giá hiệu năng của tổ chức cache trong
hệ thống vi xử lý thế hệ sau”.
4
2. Mục đích nghiên cứu của luận án
- Nghiên cứu phân tích ảnh hưởng của tổ chức cache đa cấp và các chính sách
thay thế cache đến hiệu năng của chip đa xử lý, đa luồng.
- Xây dựng các mô hình kiến trúc chip đa xử lý, đa luồng, đa cấp cache. Tiến
hành phân tích và đánh giá hiệu năng của các kiến trúc để lựa chọn tổ chức cache
tối ưu nhằm nâng cao hiệu năng của chip đa xử lý, đa luồng.
- Nghiên cứu ảnh hưởng của các mạng liên kết giữa các lõi trên chip đến hiệu
năng của chip đa xử lý, đa luồng để từ đó lựa chọn mạng liên kết trên chip phù hợp
với kiến trúc chip đa xử lý, đa luồng.
3. Đối tượng và phạm vi nghiên cứu của luận án
Đối tượng nghiên cứu:
Luận án tập trung nghiên cứu tổ chức cache đa cấp trong kiến trúc chip đa xử
lý, đa luồng.
Phạm vi nghiên cứu:
- Luận án tập trung nghiên cứu các tổ chức cache 2 cấp (với L1 cache riêng
cho mỗi lõi và L2 cache chia sẻ cho tất cả các lõi), và tổ chức cache 3 cấp (với L1,
L2 cache riêng cho mỗi lõi và L3 cache chia sẻ cho tất cả các lõi) cho các kiến trúc
chip đa xử lý, đa luồng có 2-lõi, 4-lõi, và 8-lõi trên chip.
- Dựa vào mô hình mạng xếp hàng đóng đa lớp có dạng tích các xác suất
(MCPFQN) để phân tích, đánh giá hiệu năng của chip đa xử lý, đa luồng với đa cấp
cache theo các thông số hiệu năng (thời gian chờ đợi, thời gian đáp ứng, mức độ sử
dụng, thông lượng tại các nút, thông lượng hệ thống…). Các thông số hiệu năng này
được xác định bằng phân tích giá trị trung bình (MVA). Đồng thời, tiến hành đánh
giá ảnh hưởng của các cấu hình mạng liên kết trên chip đến hiệu năng của kiến trúc
chip đa lõi đã đề xuất. Trên cơ sở đó, lựa chọn tổ chức cache và cấu hình mạng liên
kết trên chip phù hợp nhất để nâng cao hiệu năng của chip đa xử lý, đa luồng.
4. Phương pháp nghiên cứu của luận án
- Sử dụng lý thuyết mạng xếp hàng đóng đa lớp có dạng tích các xác suất để
xây dựng mô hình cho kiến trúc chip đa xử lý, đa luồng với đa cấp cache.
5
- Sử dụng thuật toán giá trị trung bình (MVA) và tiến hành mô phỏng trên máy
tính bằng phần mềm JMT v.0.8.0 để đánh giá hiệu năng của kiến trúc chip đa xử lý,
đa luồng.
5. Ý nghĩa khoa học và thực tiễn của luận án
Nghiên cứu và đề xuất các kiến trúc chip đa xử lý, đa luồng nhằm nâng cao
hiệu năng xử lý của hệ thống luôn được các nhà nghiên cứu và chế tạo chip trong và
ngoài nước quan tâm và hướng tới. Đây là vấn đề có tính khoa học và thực tiễn cao.
Luận án là nghiên cứu mở đầu về kiến trúc chip đa xử lý, đa luồng ở Việt
Nam. Các mô hình đề xuất và các kết quả nghiên cứu của luận án có thể góp phần
mở ra triển vọng nghiên cứu và chế tạo chip đa xử lý, đa luồng đáp ứng nhu cầu đổi
mới công nghệ ở Việt Nam.
6. Cấu trúc của luận án
Ngoài phần Mở đầu, Kết luận, Danh mục các ký hiệu và chữ viết tắt, Danh
mục các bảng, Danh mục các hình vẽ, Danh mục các công trình đã được công bố
của Luận án, Tài liệu tham khảo, và Phụ lục. Nội dung của luận án được trình bày
gồm 4 chương như sau:
Chương 1: Tổng quan về kiến trúc chip đa xử lý, đa luồng.
Chương 2: Nghiên cứu tổ chức cache, chính sách thay thế cache trong kiến
trúc chip đa xử lý, đa luồng.
Chương 3: Phân tích đánh giá hiệu năng của tổ chức cache trong kiến trúc chip
đa xử lý, đa luồng.
Chương 4: Giải pháp tối ưu hóa hiệu năng của tổ chức cache trong kiến trúc
chip đa xử lý, đa luồng.
6
Chương 1
TỔNG QUAN VỀ KIẾN TRÚC CHIP ĐA XỬ LÝ, ĐA LUỒNG
1.1. Giới thiệu
Các chip đa xử lý (CMP) hay đa lõi xử lý hoặc các kiến trúc đa lõi là một lớp
mới của các kiến trúc xử lý hiệu năng cao. Ở đây, nhiều lõi xử lý được đặt trong
một chip vật lý. Kể từ năm 2001, sau khi IBM giới thiệu chip 2-lõi đầu tiên là
Power4 cho các dòng máy chủ eServer, pSeries và iSeries [75], CMP bắt đầu được
nhiều hãng chú ý đến. Hiện nay, CMP đã trở nên thông dụng và là cách duy nhất
tăng hiệu năng cho các bộ xử lý trong hệ thống máy tính và thiết bị thông tin hiện
đại. Chương này sẽ trình bày các đặc điểm của các kiến trúc CMP đa luồng, mạng
liên kết các lõi trên chip, và tổ chức bộ nhớ phân cấp.
1.2. Kiến trúc của chip đa xử lý, đa luồng
1.2.1. Kiến trúc chung của chip đa xử lý, đa luồng
Trong một CMP đa luồng, lõi được xác định như là một CPU. Nghĩa là mỗi lõi
gồm có khối xử lý trung tâm (CPU) như một chip đơn lõi, nhưng có thêm L1 cache
(L1 Icache, L1 Dcache) và có thể L2 cache chia sẻ (hoặc L3 cache chia sẻ) cho các
lõi, các lõi có cấu trúc giống nhau. Hình 1.1 thể hiện một kiến trúc chung của CMP
đa luồng.
Hình 1.1: Kiến trúc chung của CMP đa luồng [46].
7
Lý do lớn nhất cho chế tạo và ứng dụng CMP, đa luồng là việc đặt nhiều lõi
lên cùng một vi mạch sẽ làm giảm không gian trên bản mạch chính khi có nhu cầu
muốn sử dụng một số lượng lớn lõi đơn tương đương. Thêm nữa, lợi thế của việc sử
dụng đa lõi trên cùng một vi mạch là các lõi sẽ làm việc kết hợp cùng nhau chặt chẽ
hơn và nâng cao được hiệu năng xử lý. Đồng thời, khi nhiều lõi cùng nằm trên một
chip, xung tín hiệu truyền giữa các lõi sẽ ngắn hơn, trễ truyền thông không đáng kể
[46]. Ngoài ra, đặc trưng của CMP là chạy với điện năng thấp hơn, vì công suất tiêu
thụ để tín hiệu truyền trên dây bằng bình phương điện áp chia cho điện trở trong
dây, do đó điện năng thấp hơn sẽ dẫn đến kết quả là nguồn điện tiêu thụ ít đi [41,
69]. Một lý do khác đối với việc tiết kiệm nguồn điện là tốc độ đồng hồ, vì tốc độ
xử lý nhanh thì khả năng tiêu tốn điện năng ít.
Một xu hướng phát triển CMP đa luồng là kiến trúc phân mảnh. Trong kiến
trúc này, các lõi được thiết kế với tối thiểu tài nguyên chỉ chiếm không gian nhỏ
trên chip và kết nối mạng theo kiểu ma trận ngói lợp. Hình 1.2 là ví dụ hai thiết kế
CMP dạng này: Tile64 64-lõi của Tilera, Tera-Scale 80-lõi của Intel [11, 18, 29,
Hình 1.2: Kiến trúc phân mảnh của CMP [11, 18].
66].
Có thể nhóm các CMP thành ba loại: chip đa lõi đối xứng (SMC), chip đa lõi
bất đối xứng (AMC), và chip đa lõi linh hoạt (DMC) [7, 19, 40].
Chip đa lõi đối xứng (SMC)
8
SMC phổ biến gồm 2 loại:
a) SMC gồm n tương đương lõi cơ sở (BCE); mỗi BCE là một lõi xử lý với
tài nguyên tối thiểu như hình 1.3a.
b) SMC bao gồm n/r lõi (nghĩa là SMC có tất cả n BCE, nhưng mỗi lõi là
a) b)
Hình 1.3: a) SMC gồm n =16 lõi BCE.
b) SMC gồm n/r = 4/4 lõi (4 lõi, mỗi lõi có 4 BCE) [40].
một kết hợp r BCE) như hình 1.3b.
SMC cấu trúc n/r cho phép tập trung nhiều tài nguyên vào một số lõi gồm r
BCE để tăng hiệu năng thực hiện perf(r).
Hiệu năng thực hiện tuần tự được bình thường hóa của lõi BCE thứ r được xác
định bằng:
Hiệu năng tuyệt đối của một lõi có r-BCE (1.1) perf(r) = Hiệu năng tuyệt đối của một BCE
Trong đó, hiệu năng tuyệt đối có thể là tốc độ xử lý (ví dụ, MIPS), hoặc số đo
hiệu năng khác.
Muốn perf(r) > r, các nhà thiết kế chip phải tăng các tài nguyên cho lõi r-BCE,
để đạt được sự tăng tốc của cả thực hiện tuần tự và song song. Khi perf(r) < r, sự
tăng hiệu năng của lõi bị ảnh hưởng bởi sự thực hiện tuần tự và như vậy làm ảnh
hưởng đến quá trình thực hiện song song.
Theo Luật Amdahl, mức tăng tốc của SMC phụ thuộc vào tỷ trọng phần có thể
thực hiện song song f, toàn bộ số BCE(n), và số lõi r. Với loại SMC chỉ sử dụng
một lõi để thực hiện tuần tự với hiệu năng tuần tự perf(r) và sử dụng tất cả n/r lõi để
thực hiện song song với hiệu năng perf(r)× n/r.
9
1
Như vậy, tổng mức tăng tốc SP của SMC là:
SP
(f, n, r) =
SMC
+
1 - f perf(r)
f × r perf(r) × n
(1.2)
Chip đa lõi bất đối xứng (AMC)
AMC gồm một lõi r-BCE (1/r-BCE) và n-r BCE như hình 1.4. Trong AMC,
một hay một số lõi sẽ mạnh hơn các lõi khác. Ví dụ, trong AMC với n = 64 BCE, có
thể được tổ chức 1 lõi 4-BCE và 60 lõi 1-BCE hay 1 lõi 9-BCE và 55 lõi 1-BCE,
v.v... Nói chung, nếu một AMC có n BCE, thì có thể tổ chức 1 lõi r-BCE và n-r lõi
Hình 1.4: AMC gồm một lõi 4-BCE và n-4 lõi 1-BCE [40].
1-BCE.
So với SMC, luật Amdahl cho AMC có dạng khác. Vì AMC sử dụng một lõi
lớn với nhiều tài nguyên hơn để thực hiện phần tuần tự với hiệu năng tuần tự
perf(r). Trong phần thực hiện song song, nó nhận hiệu năng perf(r) từ một lõi lớn r-
BCE và hiệu năng của một trong các n-r lõi 1-BCE. Như vậy, tổng mức tăng tốc của
1
AMC là:
SP
(f, n, r) =
AMC
+
1- f perf(r)
f perf(r) + n - r
(1.3)
Chip đa lõi linh hoạt (DMC)
Trong DMC có thể kết hợp r lõi với nhau để đẩy hiệu năng của phần tuần tự,
như ở hình 1.5. Khả năng này có thể đạt được ở mức luồng. Trong chế độ tuần tự,
DMC có thể thực hiện với hiệu năng tuần tự perf(r) khi các kỹ thuật linh hoạt sử
dụng r lõi BCE.
10
Hình 1.5: Chip đa lõi linh hoạt (DMC) gồm 16 lõi 1-BCE [40].
Trong chế độ song song, DMC nhận hiệu năng nhờ sử dụng tất cả các lõi cơ
1
sở. Theo luật Amdahl, tổng mức tăng tốc trong DMC là:
SP
(f, n, r) =
DMC
+
1- f perf(r)
f n
(1.4)
Nếu cho rằng hiệu năng thực hiện phần tuần tự đạt được perf(r) = 1 thì công
1
thức (1.4) trở về dạng tổng quát của mức tăng tốc tối đa theo luật Amdahl:
SP
=
DMC
(1- f) +
f n
(1.5)
Khi n tiến tới vô cùng, thì mức tăng tốc chỉ phụ thuộc vào kích thước phần
tuần tự của chương trình là (1- f). Do đó, một chương trình ứng dụng đạt được mức
tăng tốc lớn khi thực hiện song song trong các hệ thống với các CMP đa luồng cần
phải được thiết kế sao cho phần tuần tự chiếm kích thước rất nhỏ và các module
song song phải đạt được mức tối đa f = n.
Dựa theo phân loại kiến trúc song song của Flynn [62], trong CMP có các loại
kiến trúc thực hiện song song theo chuỗi lệnh và chuỗi dữ liệu [24, 72]:
- CMP có kiến trúc một chuỗi lệnh, một chuỗi dữ liệu SISD như hình 1.6.
11
Hình 1.6: CMP với kiến trúc SISD [72].
Hình 1.7: CMP với kiến trúc SIMD [72].
- CMP có kiến trúc nhiều chuỗi lệnh một chuỗi dữ liệu MISD như hình 1.7.
Hình 1.8: CMP với kiến trúc MIMD [72].
- CMP có kiến trúc nhiều chuỗi lệnh nhiều chuỗi dữ liệu MIMD như hình 1.8.
1.2.2. Kiến trúc chip đa xử lý, đa luồng đồng thời
Luồng là một trình tự một số lệnh thực hiện bởi tài nguyên của lõi xử lý. Kỹ
thuật đa luồng đồng thời (SMT) là tên do Intel đặt cho công nghệ siêu luồng [30].
Kỹ thuật này cho phép một CMP có thể thực sự xử lý song song các luồng do các
ứng dụng (phần mềm) tạo ra, bằng cách trang bị thêm một số thành phần của CMP,
khiến hệ điều hành nghĩ rằng nó đang làm việc với nhiều CMP. Hệ điều hành sẽ sắp
xếp để nhiều luồng được gửi đến các bộ xử lý “ảo” đó [57].
12
Trong kỹ thuật SMT, mỗi CPU logic sở hữu một tập các thanh ghi riêng kể cả
thanh ghi bộ đếm chương trình PC. CPU vật lý sẽ luân phiên các giai đoạn tìm/giải
mã giữa các CPU logic và cố gắng thực thi những thao tác từ các chuỗi lệnh đồng
thời theo cách hướng tới những đơn vị thực thi ít được sử dụng [1, 2, 4, 16].
Đặc điểm kiến trúc đa luồng đồng thời (SMT) đưa vào CMP có thể làm tăng
tốc độ xử lý của CMP. Chẳng hạn, mỗi lõi xử lý 2-luồng thì tốc độ xử lý của CMP
tăng lên gấp đôi. Nếu các luồng độc lập với nhau và sử dụng tài nguyên khác nhau
của lõi xử lý thì một lõi có thể thực hiện đồng thời nhiều luồng. Ví dụ, lõi xử lý 2-
luồng thì một luồng đang chờ đợi thực hiện các lệnh dấu phẩy động (sử dụng đường
ống dấu phẩy động của FPU). Khi đó, một luồng khác thực hiện các lệnh số nguyên
có thể sử dụng đường ống lệnh nguyên (IU) của lõi xử lý. Như vậy, nếu một CMP-
SMT có 4-lõi và mỗi lõi xử lý 2-luồng thì có thể coi CMP có tới 8-lõi xử lý ảo [16,
37]. Đối với người dùng, hiệu suất lớn nhất của đặc tính kiến trúc CMP-SMT đạt
được khi lựa chọn một máy tính sử dụng CMP-SMT đó là tính đa nhiệm của bộ xử
lý phải được cải thiện. Ví dụ, khi xem DVD trong lúc máy vẫn đang được quét virus
mà tốc độ không bị ảnh hưởng, bởi vì từng ứng dụng sẽ được gán trên các lõi khác
nhau. Hay trên màn hình máy tính có thể đồng thời chạy các ứng dụng khác nhau
được thể hiện các cửa sổ ứng dụng tương ứng trên màn hình máy tính, hay trên điện
thoại di động thông minh cũng thực hiện tương tự. Nếu CMP không có SMT, thì chỉ
một luồng có thể chạy trên một lõi ở một thời điểm thì hiệu suất sử dụng không cao.
Việc phát triển một ứng dụng đa luồng đã đáp ứng được yêu cầu thực hiện rất nhiều
công việc phức tạp.
1.2.3. Mạng liên kết trên chip
Mạng liên kết trên chip (OCIN) được nghiên cứu nhiều trong tiến trình phát
triển công nghệ CMP đa luồng. Hiện nay, có một số cấu hình OCIN được sử dụng
phổ biến trong kiến trúc CMP đa luồng như: mạng giao nhau (Crossbar) được sử
dụng trong chip Corei7 của Intel, Power5 của IBM, UltraSPARCT1/2 của Sun [1,
26]; mạng vòng (Ring) được sử dụng trong các chip Power4, Cell của IBM [1, 26,
54]; mạng lưới 2D (2DMesh) được sử dụng trong chip Tile64 64-lõi của Tilera,
Tera-Scale 80-lõi của Intel [1, 11, 54, 71]... Ngoài ra, các mạng liên kết như: mạng
13 cây béo (Fat tree), mạng hình bướm (Butterfly), mạng siêu lập thể (Hypercube)
mạng lưới vòng 2D (2DTorus), mạng lưới 3D (3DMesh), mạng lưới vòng 3D
(3DTorus),... cũng được các nhà nghiên cứu và nhà sản xuất chip quan tâm nghiên
cứu đến [11, 15, 28, 44, 47, 51, 61, 63, 70, 71].
Cấu trúc OCIN cung cấp một không gian thiết kế rộng bao gồm cả cấu trúc
liên kết mạng, thuật toán định tuyến, và kiến trúc bộ định tuyến, tất cả đều ảnh
hưởng đến hiệu năng của CMP đa luồng. Khi số lượng lõi xử lý tích hợp trên chip
càng lớn thì vấn đề mạng liên kết các lõi trên chip càng phức tạp và trễ truyền thông
giữa các lõi qua mạng liên kết là đáng kể, khả năng mở rộng bị hạn chế [28]. Đây là
vấn đề thách thức lớn cho các nhà nghiên cứu.
Để đánh giá ảnh hưởng của các cấu trúc OCIN đến hiệu năng của CMP đa
luồng, các nghiên cứu hiện nay đều dựa vào một số thông số mạng như sau [48, 68]:
- Số liên kết (L): toàn bộ số liên kết trong mạng.
- Cấp độ của nút (d): số kênh liên kết với một nút trong mạng.
- Đường kính của mạng (D): khoảng cách định tuyến dài nhất giữa hai nút
trong mạng.
- Khoảng cách trung bình (H): là khoảng cách định tuyến trung bình giữa
tất cả các cặp nút. Thông số này ảnh hưởng đến trễ.
- Độ rộng chia đôi (B): số lượng các liên kết của lát cắt nhỏ nhất mà nó
tách mạng thành hai nửa bằng nhau.
- Độ phức tạp sinh trưởng (G): số nút có thể được bổ sung thêm.
- Trễ: thời gian trễ giữa gửi và nhận. Người thiết kế cấu trúc mạng xác
định trễ phần cứng: mạng càng rộng thì trễ càng lớn, đó là trễ trên đường dây.
Người lập trình quan tâm đến trễ phần mềm: từ chương trình đến chương trình.
- Băng thông của một liên kết: băng thông của một liên kết mạng bằng
W× 1/t. Trong đó: W là số lượng các đường dây, t là thời gian trên bit. Băng
thông thường được đo bằng Gigabytes (GB).
14
- Băng thông hiệu dụng: thông thường nhỏ hơn băng thông của một liên
kết do trễ của gói tin. Băng thông là thông số quan trọng đối với các ứng dụng
với các bản tin kích thước lớn.
- Băng thông của độ rộng chia đôi: là tổng băng thông của tất cả các liên
kết qua lát cắt nhỏ nhất mà nó tách mạng thành hai nửa bằng nhau. Hay là băng
thông đi qua phần hẹp nhất của mạng.
Băng thông của độ rộng chia đôi quan trọng đối với các thuật toán mà
trong đó tất cả các CMP đa luồng cần phải truyền thông với nhau. Băng thông
của độ rộng chia đôi có ảnh hưởng đến trễ.
Hình 1.9 trình bày một số cấu hình OCIN phổ biến cho các hệ thống đa xử lý
(a): Cây nhị phân (b): Cây béo (c): Vòng (d):2DMesh (e): 2DTorus
(f): Crossbar (g): Supercubes (h):3DMesh (i): 3DTorus
Hình 1.9: Một số cấu trúc mạng liên kết đa xử lý [15, 24, 48, 54, 62, 71].
và CMP đa luồng.
Các thông số của các mạng nDMesh và nDTorus:
n -1
n
N = k đối với mạng nDTorus.
N =
i
k đối với mạng nDMesh;
i =0
1) Tổng số nút:
15
1/n
đối với mạng nDMesh;
D n(N
1)
đối với mạng nDTorus.
1/ n D (n / 2)(N )
2) Đường kính:
Trong đó: ki là số liên kết (hay số nút) ở từng hướng i, và n là số hướng.
1/n
3) Khoảng cách trung bình:
H (n / 3)N
1/n
đối với mạng nDMesh;
H (n / 4)N
đối với mạng nDTorus.
4) Cấp độ của nút:
d = 2n đối với mạng nDTorus.
d = n đến 2n đối với mạng nDMesh;
= 2Bn , trong đó: Bn là lấy ở các góc cho cả mạng nDMesh và nDTorus.
maxd
5) Cấp độ lớn nhất của nút:
(n 1)/n
6) Độ rộng chia đôi:
B N
(n 1)/n
đối với mạng nDMesh;
B 2N
đối với mạng nDTorus.
n
Trong đó: ki: cơ số lớn nhất. Khi tất cả các hướng đều có cùng cơ số (cùng số
= 2Bn , Bn:
ik = k; i = 0, 1,..., n -1, khi đó
N = k nút, maxd
liên kết hay số nút)
n-1
lấy ở các góc chung cho cả mạng nDMesh và nDTorus, băng thông của độ rộng chia
n-1Bk , và ở mạng nDTorus là
2Bk .
đôi ở mạng nDMesh là
1/n
1/n
đối với mạng nDMesh;
L nN (N
1)
1/n
7) Số liên kết:
1/n L nN (N )
đối với mạng nDTorus.
Sự gia tăng tính phức tạp của các CMP đa luồng làm cho trễ truyền thông toàn
cục trên CMP trở thành vấn đề chính cần phải khắc phục để cải thiện hiệu năng cho
CMP đa luồng. Tuy nhiên, do hạn chế băng thông và tiêu thụ công suất cao của các
16 mạng liên kết kim loại, nên các OCIN điện tử thông thường không thể thỏa mãn yêu
cầu hiệu năng và công suất của CMP đa luồng trong tương lai.
1.2.4. Phân cấp hệ thống nhớ
Phân cấp hệ thống nhớ là nhóm các thiết bị nhớ thành từng lớp theo tốc độ,
dung lượng, và kiểu kết nối sao cho chúng đảm bảo sự truy nhập của chương trình
đến các khoản (lệnh, dữ liệu) được thực hiện nhanh nhất. Trong hệ thống đa xử lý,
L0
Dung lượng nhỏ hơn, tốc độ nhanh hơn, chí phí cao hơn
CPU Registers
CPU registers chứa các từ lấy từ L1 cache
L1
Cache trên chip (SRAM)
L1 cache chứa các dòng cache lấy từ L2 cache
L2
Cache trên chip (SRAM)
L2 cache chứa các dòng lấy từ L3 cache
L3
Cache trên hay ngoài chip (SRAM)
L3 cache chứa các dòng lấy từ bộ nhớ chính
L4
Dung lượng lớn hơn tốc độ chậm hơn, chí phí thấp hơn
Bộ nhớ chính (DRAM)
Bộ nhớ chính chứa các khối dữ liệu lấy từ đĩa cứng
L5
Thiết bị nhớ trên đĩa cứng
L6
Thiết bị nhớ trên mạng
Đĩa cục bộ chứa các files lấy từ các máy chủ dịch vụ mạng
Hình 1. 10: Phân lớp của hệ thống nhớ [25, 72] .
hệ thống nhớ được phân thành một số lớp [20, 25, 72] như hình 1.10.
Trong đó:
1. L0: là các thanh ghi bên trong chip, có tốc độ bằng tốc độ của lõi CPU và
tham gia trực tiếp vào thực hiện các lệnh với ALU. Các CMP đa luồng hiện nay có
nhiều loại thanh ghi được sử dụng ở nhiều mục đích khác nhau và có số lượng lớn
nên thường được gọi là các tệp thanh ghi. Với tổ chức cache phân cấp, bên trong
CPU các thanh ghi trao đổi các khoản thông tin (dữ liệu, mã lệnh) trực tiếp với L1
cache. Thời gian truy nhập các thanh ghi khoảng (0,3 0,5)ns.
2. L1 cache (cache sơ cấp): là một bộ nhớ có dung lượng nhỏ khoảng (8
128)KB, L1 cache sử dụng công nghệ SRAM được tích hợp bên trong CMP đa
luồng và được phân chia thành L1I cache và L1D cache. L1 cache có thể đạt tới tốc
độ của lõi, L1 cache có thời gian truy nhập nhỏ khoảng (1 3) ns, hoặc thấp hơn.
17
3. L2 cache (cache thứ cấp): là bộ nhớ sử dụng công nghệ SRAM, L2 cache
thường có dung lượng 256KB, 512KB, (1 3)MB và có độ trễ lớn hơn L1 cache.
L2 cache là cache thống nhất nằm trên CMP, có thời gian truy nhập khoảng (3
10)ns. Hầu hết, các CMP đa luồng hiện nay đều có 2 cấp cache (L1 và L2 cache)
nằm bên trong CMP, trong đó: L1 cache riêng cho mỗi lõi và L2 cache chia sẻ cho
tất cả các lõi. Nhưng nếu CMP đa luồng có 3 cấp cache (L1, L2, và L3 cache) thì
L2 cache riêng cho từng lõi hay chia sẻ cho 2 hoặc 4-lõi.
4. L3 cache: là bộ nhớ sử dụng công nghệ SRAM, có thể nằm bên trong hay
bên ngoài CMP, hay trên bo mạch chủ giữa CPU và bộ nhớ chính. L3 cache là
cache thống nhất có dung lượng lớn hơn L2 cache. Từ kiến trúc Pentium 4 đã có 3
cấp cache: L1 và L2 cache nằm trên chip, L3 cache nằm bên ngoài chip. Các CMP
Nehalem của Intel, L3 cache có dung lượng 2MB, 4MB, 6MB, 8MB, hay 12MB
(như Core i7) nằm bên trong CMP [25, 76]. L3 cache có thời gian truy nhập lớn hơn
L2 cache, khoảng (10 20)ns.
5. Bộ nhớ chính: có thể là L3 hay L4. Bộ nhớ chính sử dụng công nghệ
DRAM. Bộ nhớ chính có dung lượng lớn hơn nhiều so với các cache, khoảng
(4 16)GB tùy theo khả năng đánh địa chỉ của CMP (hay độ rộng theo số bit của
bus địa chỉ). Thời gian truy nhập bộ nhớ chính lớn, khoảng (50 100)ns.
6. Các thiết bị nhớ trên đĩa cứng: có dung lượng lớn hơn nhiều so với bộ nhớ
chính, dung lượng khoảng (1 16)TB, nhưng thời gian truy nhập lớn, khoảng (5
10)ms. Các ổ đĩa cứng là bộ nhớ thứ cấp chính của hệ thống máy tính, vì vậy nó
được kết nối cứng trong hệ thống và có độ bền cao. Trong quản lý bộ nhớ trên ổ đĩa
cứng có tạo ra các vùng nhớ ảo lưu trữ các module của chương trình thực hiện.
Vùng nhớ ảo được xem như vùng nhớ mở rộng cho bộ nhớ chính.
7. Thiết bị nhớ trên mạng: như các hệ thống đĩa cứng (RAID) trên các máy
chủ dịch vụ mạng trên LAN. Các khối dữ liệu có thể được vận chuyển từ thiết bị
nhớ ở xa về hệ thống nhớ cục bộ hoặc theo hướng ngược lại qua môi trường LAN
Ethernet, tốc độ 10Mb/s, 100Mb/s, 1Gb/s, hoặc 10Gb/s.
18
1.3. Kết luận chương 1
- Chương này đã trình bày tổng quan về kiến trúc CMP đa luồng, các cấu hình
mạng liên kết trên chip, và tổ chức bộ nhớ phân cấp.
- Hiệu năng của CMP đa luồng phụ thuộc rất nhiều vào công nghệ bộ nhớ
cache: tổ chức cache, dung lượng của cache, số cấp cache (L1, L2, hay L3), chính
sách thay thế cache, và cấu hình mạng liên kết các lõi trên chip. Cấu hình mạng liên
kết có ảnh hưởng rất lớn đến hiệu năng tổng thể của CMP đa luồng. Khi số lượng
lõi trên chip tăng thì một số cấu hình đang được sử dụng không đáp ứng được nhu
cầu băng thông, đồng thời độ trễ truyền thông rất lớn, và khả năng mở rộng hệ
thống cũng bị hạn chế.
Vì vậy, vấn đề nghiên cứu các tổ chức cache, các chính sách thay thế cache, và
tìm ra một cấu hình mạng liên kết phù hợp với kiến trúc đa lõi nhằm nâng cao hiệu
năng là rất cần thiết. Đây cũng là một thách thức lớn cho các nhà nghiên cứu và sản
xuất chip hiện nay.
19
Chương 2
NGHIÊN CỨU TỔ CHỨC CACHE, CHÍNH SÁCH THAY
THẾ CACHE TRONG KIẾN TRÚC CHIP ĐA XỬ LÝ,
ĐA LUỒNG
2.1. Tổ chức cache trong kiến trúc chip đa xử lý, đa luồng
2.1.1. Cache và các nguyên tắc làm việc của cache
Cache như là bộ nhớ trung gian nằm giữa CPU và bộ nhớ chính. Bộ nhớ cache
sử dụng công nghệ SRAM, dung lượng nhỏ, tốc độ truy nhập nhanh. Sự trao đổi dữ
liệu giữa CPU và cache theo các từ, trong khi sự trao đổi dữ liệu giữa cache và bộ
Các từ
Các khối
Cache
CPU
Bộ nhớ chính
Bus cục bộ
Bus bộ nhớ
Hình 2.1: Trao đổi dữ liệu giữa CPU, cache và bộ nhớ chính [62, 72].
nhớ chính theo các khối như hình 2.1.
Cache ở cấp nhớ càng thấp (gần CPU hơn) càng có dung lượng nhỏ và tốc độ
truy nhập càng nhanh hơn. Khi thực hiện các chương trình, mà phần lớn thời gian
CPU tham chiếu đến các cache thì tốc độ xử lý sẽ nhanh hơn so với truy nhập tới bộ
nhớ chính. Để thực hiện được điều này, những khoản nội dung (lệnh, dữ liệu)
thường xuyên được sử dụng của chương trình thực hiện lưu trong bộ nhớ chính sẽ
được sao chép vào trong cache.
Bộ nhớ cache làm việc nhờ sự dự đoán của CPU, CPU sẽ tham chiếu đến vùng
nhớ và tải nội dung của vùng nhớ đó vào cache trước khi CPU thực hiện tham chiếu
đến bộ nhớ chính. CPU luôn tham chiếu đến cache trước, như vậy nếu sự dự đoán
chính xác, thì CPU sẽ chỉ thực hiện trao đổi nội dung nhớ đã được tải vào trước từ
bộ nhớ chính. Nếu cache không có dữ liệu mà CPU cần (do dự đoán sai) thì CPU
phải tham chiếu đến bộ nhớ chính để đọc khoản dữ liệu và khoản dữ liệu đó cũng
đồng thời được nạp từ bộ nhớ chính vào cache. Sự làm việc của cache nhờ dự đoán
dựa trên cơ sở của vị trí của vùng nhớ mà chương trình tham chiếu đến các khoản
20 nội dung (lệnh, dữ liệu). Có 3 nguyên tắc tham chiếu: vị trí tạm thời, vị trí không
gian, và vị trí tuần tự [72].
2.1.1.1. Vị trí tạm thời
Khi CPU thực hiện chương trình, nó tham chiếu đến một nội dung (lệnh, dữ
liệu) ở vị trí nào đó chứa trong bộ nhớ chính, thì nội dung đó có thể nhanh chóng
được tham chiếu tiếp lần nữa. Nội dung đó được đưa vào cache để đón tham chiếu
của chương trình.
2.1.1.2. Vị trí không gian
Khi CPU thực hiện chương trình, nó tham chiếu đến một nội dung (lệnh, dữ
liệu) ở vị trí nào đó chứa trong bộ nhớ, thì các nội dung ở các vị trí nhớ bên cạnh nó
có thể nhanh chóng được tham chiếu sau đó. Nói cách khác, nếu chương trình tham
chiếu đến một địa chỉ trong bộ nhớ chính thì nó có thể nhanh chóng tham chiếu đến
các địa chỉ lân cận. Như vậy, những nội dung kề cận có thể được đưa vào cache để
2.1.1.3. Vị trí tuần tự
đón tham chiếu của chương trình.
Khi CPU thực hiện chương trình, nó tham chiếu đến các nội dung chứa trong
bộ nhớ một cách tuần tự. Do đó, khi tham chiếu của chương trình đến một nội dung
hiện thời thì nó có tham chiếu đến nội dung tiếp theo trong bộ nhớ chính. Như vậy,
nội dung tiếp theo có thể được đưa vào cache để đón tham chiếu của chương trình.
2.1.2. Các thành phần của cache
Cache có thể được chia thành ba khối chức năng đó là: bộ nhớ truy cập ngẫu
nhiên tĩnh (SRAM), thẻ RAM và bộ điều khiển cache [72]. Trong các thiết kế thực
tế, các khối này được kết hợp chung trong một chip.
SRAM: là khối lưu trữ dữ liệu. Kích thước của SRAM chỉ ra kích thước của
cache, và được chia thành các dòng cache. Để trao đổi thông tin giữa cache và CPU,
giữa cache và bộ nhớ chính, mỗi dòng cache có kích thước bằng kích thước một
khối của bộ nhớ chính. Các khối của bộ nhớ chính ở đây phụ thuộc vào dung lượng
của cache và tổ chức cache, và không liên quan đến khái niệm khối trong chế độ
21 phân chia trang hay chia phần. Dung lượng của cache được xác định bởi dung lượng
của phần dữ liệu.
Thẻ RAM (TRAM): là một phần nhỏ của SRAM gồm các thẻ, mỗi thẻ ứng
với một dòng cache và lưu trữ địa chỉ của dữ liệu được lưu trong dòng cache tương
ứng. Kích thước của thẻ được tính theo số bit và nội dung phụ thuộc vào tổ chức
của cache.
Bộ điều khiển cache: Bộ điều khiển cache được xem như bộ não của cache.
Các nhiệm vụ mà nó đảm nhận là thực thi các snoop và snarf, cập nhật SRAM và
TRAM, thực thi quy định ghi. Bộ điều khiển cache còn có nhiệm vụ xác định yêu
cầu bộ nhớ có thể “cache”, nghĩa là vùng nhớ nào được lưu trong cache và các yêu
cầu “trúng cache” và “trượt cache”. Các vùng nhớ chính có thể lưu trong cache
được gọi là được cache, các vùng nhớ chính không thể lưu trong cache được gọi là
vùng không thể được cache, tùy vào thiết kế. Ví dụ như trong PC, vùng video
không được lưu trong cache.
2.1.3. Các tổ chức cache
Mỗi dòng cache gồm có hai phần: phần khối có dung lượng bằng kích thước
của một khối của bộ nhớ chính để lưu dữ liệu của khối nạp từ bộ nhớ chính và phần
Cache
Bộ nhớ chính
Thẻ
Khối
B0
L0
Bj
Lj
BM-1
LC-1
Hình 2.2: Cache và bộ nhớ chính [72].
thẻ chứa địa chỉ của khối mà nội dung của nó đang được lưu tại phần khối.
22
Số bit của phần thẻ xác định số lượng tối đa các khối có thể sắp xếp vào cache.
Nếu dung lượng của cache có C dòng (L0, L1,…, LC-1) và tương ứng có C thẻ, thì
phần dung lượng của cache chứa dữ liệu là C× K, trong đó K là kích thước của dòng
(hay kích thước của khối). Vì dung lượng bộ nhớ chính lớn hơn nhiều lần so với
dung lượng của cache (C << M), nên chỉ có một số ít khối có thể sắp xếp vào
cache. Khi một khoản nhớ (từ, khối) của bộ nhớ chính được chọn (theo các nguyên
tắc tham chiếu) thì sự sắp xếp các khối được chọn từ bộ nhớ chính vào các dòng của
cache phụ thuộc vào cách tổ chức cache như hình 2.2.
Trong cơ chế phân trang, mỗi trang ở bộ nhớ chính gồm các dòng cache. Khi
đó có khái niệm trang cache và dòng cache như hình 2.3. Dòng cache thường được
gọi là khối trong bộ nhớ. Kích thước của dòng cache bằng kích thước của dòng ở
cache. Chú ý rằng, trang cache không liên quan đến trang bộ nhớ trong chế độ trang
Bộ nhớ chính
Trang cache
Dòng cache
của quản lý bộ nhớ của máy tính.
…
.
Dòng cache Dòng cache Dòng cache
…
.
Trang cache
Trang cache
Dòng cache Dòng cache Dòng cache Dòng cache
Hình 2.3: Trang cache và dòng cache trên bộ nhớ chính [72].
Các CMP đa luồng có thể sử dụng một trong ba tổ chức cache: Cache liên kết
đầy đủ, cache sắp xếp trực tiếp, và cache liên kết tập hợp [62, 72].
2.1.3.1. Cache liên kết đầy đủ
Nguyên tắc sắp xếp:
23 - Một khối của bộ nhớ chính có thể nạp vào bất kỳ dòng nào của cache.
- Địa chỉ của bộ nhớ gồm N bit được diễn giải gồm hai trường: trường thẻ với
S bit và trường từ với W bit, N = S + W.
- Trường thẻ xác định địa chỉ của khối ở bộ nhớ, trường từ xác định vị trí của
từ trong khối.
- Trường địa chỉ khối (S bit) của địa chỉ từ nhớ mà lệnh của chương trình thực
hiện (trong CPU) tham chiếu được so sánh với giá trị của từng thẻ của từng dòng.
- Kết quả so sánh: nếu trùng (hay trúng cache), có nghĩa là nội dung của khoản
dữ liệu mà CPU truy nhập đã được nạp theo cả khối từ bộ nhớ chính vào dòng
cache có nội dung thẻ là địa chỉ trùng với địa chỉ khối cần tìm, thì địa chỉ của từ trỏ
đến vị trí của từ có trong phần khối của dòng, khi đó CPU đọc từ yêu cầu từ cache.
Nếu không trùng (hay trượt cache) thì toàn bộ địa chỉ bộ nhớ được trỏ đến bộ nhớ
Thẻ (S = 27 bit)
Từ (W = 5 bit)
A035F002H
101.0000.0001.1010.1111.1000.0000
0.0010
Địa chỉ bộ nhớ
Bộ nhớ chính
Cache
Từ
Thẻ
Khối
Thẻ S
W
S
B0
L0
S
501AF80H
W
W
So sánh
Bj
Lj
Trúng cache
BM-1
LC-1
Trượt cache
Hình 2.4: Tìm kiếm trong cache liên kết đầy đủ [62, 72].
chính để giải mã chọn và đọc đồng thời về CPU và dòng cache.
24
Để minh họa, cho rằng địa chỉ bộ nhớ có N = 32 bit. Trường thẻ có S = 27 bit
và trường từ có W = 5 bit. Như vậy, bộ nhớ chính được chia ra M 272 khối (B0, B1, ..., BM-1), mỗi khối có 32 = 25 từ. Giả định cache có dung lượng phần chứa dữ liệu là 216 = C × 25, thì số dòng là C = 211 (L0, L1, ..., LC-1) và trường thẻ của cache
có 11 bit. Khi CPU thực hiện một chương trình nào đó, giả định nó tham chiếu đến
từ (lệnh hoặc dữ liệu) của bộ nhớ với địa chỉ là A035F002H, thì địa chỉ của khối
501AF80H (có S = 27 bit) trong địa chỉ A035F002H được so sánh với các giá trị
của thẻ của từng dòng cache. Nếu trúng cache, thì có nghĩa là từ này đã được đưa
vào dòng cache và giá trị 02H trong A035F002H là địa chỉ của từ trong khối trỏ đến
vị trí từ trong dòng cache tìm được, nội dung từ được đọc từ dòng cache về CPU.
Nếu không trùng với mọi giá trị của tất cả các thẻ của cache (trượt cache) thì
chương trình phải tham chiếu đến bộ nhớ chính ở địa chỉ A035F002H. Hình 2.4 mô
tả sự tìm kiếm trong cache liên kết đầy đủ.
Ưu điểm:
Cache liên kết đầy đủ cho phép sắp xếp linh hoạt các khối nhớ từ bộ nhớ chính
vào bất kỳ dòng cache nào có thể, do đó nó cho tỷ số trúng cache cao.
Nhược điểm:
Sơ đồ thực hiện tìm kiếm cache phức tạp, thời gian tìm kiếm có thể lâu hơn
khi dung lượng cache tăng lên, vì một địa chỉ của từ mà chương trình tham chiếu
phải so sánh với giá trị của tất cả các thẻ. Để hạn chế nhược điểm này, cache liên
kết đầy đủ chỉ ứng dụng cho các cache có dung lượng nhỏ, thường nhỏ hơn 4KB. Vì
lý do này mà cache liên kết đầy đủ ít được sử dụng.
2.1.3.2. Cache sắp xếp trực tiếp
Cache sắp xếp trực tiếp còn được gọi là cache liên kết tập hợp 1-dòng.
Nguyên tắc sắp xếp:
- Mỗi dòng của cache có thể nhận một số khối, nhưng mỗi khối của bộ nhớ
chính chỉ được sắp xếp vào một dòng cố định của cache có địa chỉ phù hợp với công
thức i = j mod C (trong đó, C là tổng số dòng của cache, j là địa chỉ của khối trong
bộ nhớ chính và i là số hiệu của dòng và là số dư của j chia cho C). Ví dụ, nếu tổng
25 số dòng của cache là C = 10, thì chỉ các khối có các địa chỉ là j = 7, 17, 27, 37,... có
thể nạp vào dòng cache có địa chỉ i = 7, vì j/C cho số dư i = 7. Tương tự, một trong
các khối có địa chỉ là j = 2, 12, 22, 32,.. chỉ có thể được sắp xếp vào dòng i = 2 của
cache như hình 2.5.
- Địa chỉ của từ nhớ gồm N bit được diễn giải thành ba trường: trường thẻ,
trường dòng cache và trường từ.
- Trường từ có W bit ghi địa chỉ từ trong khối, trường dòng có R bit ghi địa chỉ
Thẻ(S-R=16)
Dòng (R=11)
Từ (W=5)
A035F002H
1010.0000.0011.0101
111.1000.0000
0.0010
Địa chỉ bộ nhớ
Cache
Bộ nhớ chính
Khối
Dòng
Thẻ
Từ
dòng của cache, trường thẻ có (S - R) bit ghi địa chỉ của khối.
S-R
R
W
L0
B0
780H
A035H
S
W
Lj
Bj
Thẻ
W
Trúng cache
LC-1
BM-1
Trượt cache
Hình 2.5: Tìm kiếm trong cache sắp xếp trực tiếp [62, 72].
So sánh
Để minh họa, cho rằng bộ nhớ chính dung lượng 232 từ , chia ra M = 227 khối (S = 27), mỗi khối có 25 = 32 từ (W = 5). Dung lượng của cache sắp xếp trực tiếp là 216 = C × 25 , có số dòng là C = 211 (R = 11 bit). Địa chỉ của từ nhớ được diễn giải
gồm ba trường: trường W = 5 bit, trường dòng R = 11 bit và trường thẻ S - R = 27-
11 = 16 bit. Hình 2.5 diễn giải giá trị địa chỉ A035F002H của từ nhớ được chia
thành ba phần: trường địa chỉ từ 01H, trường địa chỉ dòng giá trị 780H, trường thẻ
có địa chỉ khối giá trị A035H của địa chỉ A035F002H. Giá trị của trường thẻ trỏ tới
dòng có địa chỉ 780H của cache. Nội dung của thẻ của dòng này được đọc ra so
26 sánh với địa chỉ A035H. Nếu trùng (đó là trúng cache), thì giá trị 02H của địa chỉ
trỏ tới vị trí từ trong cache có nội dung cần tìm.
Ưu điểm:
Sơ đồ tìm kiếm trong cache sắp xếp trực tiếp đơn giản, có tốc độ tìm kiếm
nhanh và chi phí thấp, bởi vì nó chỉ cần so sánh địa chỉ yêu cầu với một địa chỉ của
dòng cache tương ứng.
Nhược điểm:
Có thể xảy ra tham chiếu lặp đi, lặp lại đến một số khối của bộ nhớ chính được
sắp xếp vào cùng một dòng của cache. Những khối này sẽ liên tục hoán đổi vị trí
vào trong và ra ngoài cache, gây ra sự suy giảm tỷ số trúng cache. Trong hệ thống
đơn nhiệm sự hoán đổi vị trí ít xảy ra, nhưng trong các hệ thống đa nhiệm sự hoán
đổi xảy ra thường xuyên và như vậy giảm hiệu năng của cache sắp xếp trực tiếp.
2.1.3.3. Cache liên kết tập hợp
Cache liên kết tập hợp là sự kết hợp của hai tổ chức cache: cache liên kết đầy
đủ và cache sắp xếp trực tiếp nhưng chỉ tận dụng các ưu điểm và hạn chế các nhược
điểm của hai tổ chức cache này.
Nguyên tắc sắp xếp:
- Cache được chia thành S tập hợp, mỗi tập hợp có K dòng.
- Một khối của bộ nhớ chính chỉ được sắp xếp trực tiếp vào một tập hợp phù
hợp theo “s = b mod S” (trong đó b là địa chỉ khối, S là số tập hợp, s là số hiệu của
tập hợp phù hợp với khối và là số dư của b chia cho S).
Hình 2.6 diễn giải sơ đồ tìm kiếm trong cache liên kết tập hợp 2-dòng, trong
đó mỗi tập hợp chỉ có 2-dòng, mỗi dòng có kích thước bằng một khối gồm 32 từ. Dung lượng của cache là 216 = C × 25 có số dòng C = 211 hay số tập hợp 211/2 = 210
và D = 10 là số bit của trường địa chỉ tập hợp. Địa chỉ mà CPU tham chiếu là
A035F002H được diễn giải như sau: trường địa chỉ tập hợp (D = 10 bit) có giá trị
380H của địa chỉ A035F002H trỏ đến tập hợp trong cache phải tham chiếu, trường
địa chỉ khối (S - D = 17 bit) giá trị 1406BH của địa chỉ A035F002H được so sánh
27 với từng giá trị của hai thẻ của hai dòng trong tập hợp 380H được chọn. Nếu trùng
(trúng cache) thì trường địa chỉ của từ (W = 5) giá trị 02H sẽ trỏ từ thứ 32 của dòng
Thẻ (S-D=17)
Tập hợp (D=10) Từ (W=5)
A035F002H
1.0100.0000.0110.1011
11.1000.0000
0.0010
Địa chỉ bộ nhớ
Thẻ
Cache Khối
Thẻ
L0
Bộ nhớ chính
W
Tập hợp Từ D
S-D
Tập hợp 0
L1
B0
S
W
Li
Bj
Li+1
1406BH
Tập hợp i (380H)
BM-1
W
LC-2
So sánh
Trúng cache
LC-1
Tập hợp (S-1)
Trượt cache
Hình 2.6: Tìm kiếm trong cache liên kết tập hợp [62, 72].
được chọn trong tập hợp 0F80H.
Ưu điểm:
Sơ đồ tìm kiếm đơn giản, có tốc độ tìm kiếm nhanh và chi phí thấp, bởi vì nó
chỉ cần so sánh địa chỉ yêu cầu với một địa chỉ của tập hợp tương ứng trong cache.
Trong tập hợp được chọn, một khối có thể sắp xếp vào bất kỳ dòng nào (theo cách
của cache liên kết đầy đủ). Do đó, tận dụng được ưu điểm của cache liên kết đầy đủ,
đó là tỷ số trúng cache cao.
Cache liên kết tập hợp diễn giải một địa chỉ bộ nhớ chính gồm ba phần: trường
thẻ có (S - D) bit chứa địa chỉ khối, trường tập hợp có D bit chứa địa chỉ tập hợp và
trường từ có W bit chứa địa chỉ của từ trong khối.
28
Để giảm mức độ phức tạp và chi phí của sơ đồ so sánh tìm kiếm, mỗi tập hợp
chỉ có ít dòng, thường là 2-, 4-, 8-dòng,… Cache liên kết tập hợp thường gắn với số
lượng dòng trong một tập hợp và gọi là cache liên kết tập hợp n-dòng. Nếu mỗi tập
hợp có 4-dòng thì đó là cache liên kết tập hợp 4-dòng và một khối có thể sắp xếp
vào bất kỳ dòng nào trong 4-dòng của tập hợp được chọn theo nguyên tắc sắp xếp
trực tiếp “s = b mod S”.
Tổ chức cache liên kết tập hợp hạn chế được trường hợp tham chiếu lặp đi, lặp
lại đến một số khối của bộ nhớ chính có sắp xếp vào cùng một dòng của cache sắp
xếp trực tiếp, tận dụng được ưu điểm của cache liên kết đầy đủ và hạn chế sự phức
tạp của sơ đồ tìm kiếm nếu mỗi tập hợp chỉ có số ít dòng. Cache liên kết tập hợp 2- ,
4-, …, n-dòng cho tỷ số trúng cache cao [39]. Do đó, chúng được dùng phổ biến
trong các chip đơn lõi và đa lõi. Hầu hết, các kiến trúc Pentium của Intel sử dụng tổ
chức cache liên kết tập hợp 2-dòng, trong đó dòng cache có kích thước 32B (hay
× 32B = 4096B), mỗi tập hợp có 2 dòng cache. Kiến trúc Pentium 4 của Intel với
256 bit), trang cache ở bộ nhớ chính có kích thước 4KB hay 128 dòng cache (vì 128
L2 và L3 cache có tổ chức cache liên kết tập hợp 8-dòng với kích thước mỗi dòng là
128B. Kiến trúc Nehalem Xeon 4, 6-lõi với 2-luồng/lõi của Intel với 3 cấp cache
(L1, L2, L3) trên chip, trong đó: mỗi lõi có L1I cache 32KB liên kết tập hợp 4-
dòng, L1D cache 32KB liên kết tập hợp 4-dòng, L2 cache 256KB liên kết tập hợp
8-dòng và tất cả các lõi chia sẻ L3 cache (2 3)MB liên kết tập hợp 16-dòng. Tương
tự, kiến trúc Core i7 4-lõi, 2-luồng/lõi của Intel, cũng có 3 cấp cache trên chip,
trong đó: mỗi lõi có L1I cache 32KB liên kết tập hợp 4-dòng, L1D cache 32KB liên
kết tập hợp 4-dòng, L2 cache 256KB liên kết tập hợp 8-dòng và tất cả các lõi chia
sẻ L3 cache 8MB liên kết tập hợp 16-dòng [25].
2.2. Các đặc tính hiệu năng của cache
Không có một số duy nhất để chỉ tốc độ của hệ thống cache, thay vào đó cần
phải sử dụng tốc độ “hàng” của cache.
Tốc độ “hàng” của cache là tốc độ của các chip SRAM được dùng làm cache
vì cache được chế tạo bởi công nghệ SRAM. Tốc độ của các chip SRAM cho giới
hạn trên về hiệu năng.
29
Phần SRAM dùng làm thẻ cần phải nhanh hơn phần SRAM dùng để lưu nội
dung của khối. Bởi vì, nội dung của thẻ cần phải được đọc ra trước để so sánh. Cần
phải so sánh nội dung thẻ và đủ thời gian để đọc nội dung của cache trong một chu
kỳ nhịp đồng hồ của bus bộ nhớ.
Ngoài tốc độ truy nhập cache, hiệu năng của các tổ chức cache trong các chip
đơn lõi và đa lõi còn được xác định qua tỷ số trúng cache và trượt cache.
2.2.1. Các tỷ số trúng cache và trượt cache [25]
2.2.1.1. Trúng cache
Trúng cache là khi CPU thực hiện một chương trình, nó phải truy nhập đến
một từ (là dữ liệu hay lệnh) của bộ nhớ mà từ này đã sẵn có ở trong cache. Hiệu
năng của cache phụ thuộc vào số lần trúng cache.
2.2.1.2. Trượt cache
Nếu từ tham chiếu không có trong cache, thì đó là trượt cache. Khi đó, chương
trình phải tham chiếu đến bộ nhớ chính để tải cả khối nhớ, trong đó có từ yêu cầu
vào trong một dòng của cache được chọn. Để nạp khối vào dòng cache, trong khi
toàn bộ phần chứa dữ liệu của cache đã đầy, thì phải có nội dung cũ của một dòng
trong cache phải bị loại bỏ và được thay thế bởi nội dung của khối mới từ cấp cache
cao hơn hay từ bộ nhớ chính. Dòng cache bị thay thế được gọi là dòng “nạn nhân”.
Thay thế dòng cache được thực hiện theo một số chính sách thay thế cache.
2.2.1.3. Tỷ số trúng cache, trượt cache và trượt penalty
Thời gian trúng cache (Hit time): là khoảng thời gian truy nhập cache khi
trúng cache.
Tỷ số trúng cache H (Hit rate): là số lần trúng cache trên tổng số lần truy
nhập bộ nhớ.
Tỷ số trượt cache M (Miss rate): M = 1 - H
Thời gian trượt penalty (Miss penalty): là khoảng thời gian được tính bằng
số chu kỳ đồng hồ cần thiết để tải nội dung một khối từ bộ nhớ chính vào một dòng
cache (hay từ một dòng của cache cấp cao hơn vào một dòng cache ở cấp thấp hơn)
30 khi CPU tham chiếu đến bộ nhớ. Thời gian trượt penalty được gọi là thời gian truy
nhập bộ nhớ chính (MAT).
Thời gian trung bình truy nhập bộ nhớ (AMAT) trong hệ thống
- Một cấp cache (L1):
AMAT = L1hit time + (L1miss rate) × (L1miss penalty) (2.2a)
L1
hay AMAT = L1hit time + (L1miss rate)×(MAT) (2.2b)
L1
L1 miss penalty = MAT (2.1)
- Hai cấp cache (L1, L2):
L1miss penalty = (L2 hit time) + (L2 miss rate)(L2 miss penalty) (2.3)
AMAT
= L1 hit time + (L1 miss rate)(L2 hit time
L1L2
L2 miss penalty = MAT (2.4)
+ (L2miss rate)(L2miss penalty))
hay AMAT
= L1 hit time + (L1 miss rate)(L2hit time
L1L2
(2.5a)
+ (L2miss rate)(MAT))
(2.5b)
L1miss penalty = (L2 hit time) + (L2 miss rate)(L2 miss penalty ) (2.6)
L2 miss penalty = (L3 hit time) + (L3 miss rate)(L3 miss penalty) (2.7)
L3 miss penalty = MAT (2.8)
AMAT
= L1hit time + (L1miss rate)(L2hit time + (L2miss rate)
L1L2L3
- Ba cấp cache (L1, L2, L3):
×(L3hit time + (L3miss rate)(L3miss penalty)))
hay AMAT
= L1hit time + (L1miss rate)(L2hit time + (L2miss rate)
L1L2L3
(2.9a)
× (L3hit time + (L3miss rate)(MAT)))
(2.9b)
Mức tăng tốc (SP) của hệ thống:
SP = MAT/AMAT (2.10)
31 2.2.1.4. Bus bộ nhớ, kích thước từ nhớ, kích thước khối và trượt penalty
Khi có trượt cache, CPU phải tham chiếu đến bộ nhớ chính qua bus bộ nhớ, và
phải xét cả trễ qua bus bộ nhớ và kích thước từ nhớ (bit). Khi đó:
Tốc độ truyền dữ liệu qua bus bộ nhớ = Kích thước từ nhớ (bit)/chu kỳ bus (2.11)
Tốc độ truyền dữ liệu qua bus bộ nhớ
Thời gian để truyền khối cache
Kích thước khối cache Thời gian để truyền khối cache = (2.12)
Tốc độ truyền dữ liệu qua bus bộ nhớ
Trượt penalty
- Một cấp cache (L1):
L1 miss penalty = Trễ truy nhập bộ nhớ + Thời gian để truyền khối L1cache
(2.13)
- Hai cấp cache (L1, L2):
L2 miss penalty = Trễ truy nhập bộ nhớ + Thời gian để truyền khối L2cache
(2.14)
- Ba cấp cache (L1, L2, L3):
L3 miss penalty = Trễ truy nhập bộ nhớ + Thời gian để truyền khối L3cache
(2.15)
2.2.1.5. Trượt cache cục bộ và toàn cục
Trong hệ thống có nhiều cấp cache cần phải xác định tỷ số trượt cache cục bộ
và tỷ số trượt cache toàn cục.
Số lần truy nhập bộ nhớ đến cache cục bộ
Số lần trượt trong cache cục bộ Tỷ số trượt cục bộ = (2.16)
Tổng số lần truy nhập bộ nhớ từ CPU
Số lần trượt trong cache cục bộ Tỷ số trượt toàn cục = (2.17)
2.2.1.6. Trì hoãn truy nhập bộ nhớ
Thời gian trung bình truy nhập bộ nhớ (AMAT), được tính bằng số chu kỳ
đồng hồ cần thiết để hoàn thành yêu cầu truy nhập bộ nhớ của CPU (tính từ khi
32 CPU bắt đầu đưa ra địa chỉ bộ nhớ cho đến khi CPU nhận được nội dung yêu cầu từ
bộ nhớ hoặc bộ nhớ đã được ghi). Lý tưởng, AMAT = 1 chu kỳ, điều này có nghĩa
là không có thời gian trì hoãn (hay chờ đợi) khi truy nhập bộ nhớ.
Số chu kỳ đồng hồ trì hoãn truy nhập bộ nhớ mà CPU phải thực hiện cho
một truy nhập bộ nhớ (MSPMA) được xác định bằng:
MSPMA = AMAT – 1 (2.18)
Số chu kỳ đồng hồ trì hoãn truy nhập bộ nhớ mà CPU thực hiện cho một
lệnh (MSPI) được xác định bằng:
MSPI = MSPMA × MAPI (2.19)
Số chu kỳ đồng hồ trì hoãn truy nhập bộ nhớ mà CPU thực hiện cho một
lệnh được xác định bằng:
MSPI = MAPI × L1 miss rate ×L1 miss penalty (2.20a)
L1
- Đối với một cấp cache (L1):
MSPI = (AMAT - L1 hit time) ×MAPI (2.20b)
L1
L1
hay
MSPI
= MAPI × L1 miss rate ×(L2 hit time
L1L2
- Đối với hai cấp cache (L1, L2):
+ L2 miss rate × L2 miss penalty)
(2.21a)
MSPI
= (AMAT
- L1 hit time) ×MAPI (2.21b)
L1L2
L1L2
hay
MSPI
= MAPI × L1 miss rate × (L2 hit time + L2 miss rate
L1L2L3
- Đối với ba cấp cache (L1, L2, L3):
× (L3hit time + L3 miss rate × L3 miss penalty)
MSPI
= (AMAT
(2.22a)
- L1 hit time) ×MAPI (2.22b)
L1L2L3
L1L2L3
hay
Cho rằng, trong trường hợp lý tưởng CPI = 1 chu kỳ, thì:
Performance = (MSPI
+ L1hit time) / (MSPI
+ L1hit time) (2.23)
L1L2
L1L2L3
Hiệu năng của hệ thống 2 cấp cache so với 3 cấp cache là :
33
2.2.1.7. Ảnh hưởng của tổ chức cache đến trượt penalty
Các tổ chức cache: cache liên kết đầy đủ, cache sắp xếp trực tiếp, và cache
liên kết tập hợp có mức độ phức tạp khác nhau và có tỷ số trượt cache khác nhau,
do đó ảnh hướng đến MAT cũng khác nhau.
Tỷ số trượt cục bộ và toàn cục với hai cấp cache: L1I cache 64 KB liên kết tập
hợp 2-dòng, L1D cache 64 KB liên kết tập hợp 2-dòng, L2 cache 4 KB 4MB thể
t ợ ư r t ố s ỷ T
Kích thước cache (KB)
Hình 2.7: So sánh tỷ số trượt cục bộ và toàn cục với 2 cấp cache [25].
hiện ở đồ thị như hình 2.7.
Để xét ảnh hưởng của L2 cache liên kết tập hợp 2-dòng và L2 cache sắp xếp
trực tiếp đến trượt penalty. Giả sử rằng cache liên kết tập hợp 2-dòng tăng thời gian
trúng cache lên 10% chu kỳ đồng hồ. Thời gian trúng cache đối với L2 cache sắp
xếp trực tiếp là 10 chu kỳ đồng hồ. Tỷ số trượt cục bộ đối với L2 cache sắp xếp trực
tiếp là 25%. Tỷ số trượt cục bộ đối với L2 cache liên kết tập hợp 2-dòng là 20%.
Trượt penalty đối với L2 cache là 50 chu kỳ đồng hồ.
AMAT
L2 hit time L2 miss rate × L2 miss penalty
L2
Khi đó, AMAT được xác định:
(2.24)
AMAT
10 + 25%×50
L2direct mapped
- Đối với L2 cache sắp xếp trực tiếp:
34
= 22,5 chu kỳ
- Đối với L2 cache liên kết tập hợp 2-dòng.
AMAT
(10 + 0,1) + 20%×50
=
L2 2-way set accociative
Vì thời gian trúng cache tăng lên 0,1 chu kỳ đồng hồ, nên
= 20,1 chu kỳ
Từ các kết quả trên cho thấy rằng: với tổ chức cache liên kết tập hợp cho thời
gian trung bình truy nhập bộ nhớ là nhỏ nhất. Vì vậy, trong kiến trúc CMP đa luồng nên sử dụng tổ chức cache liên kết tập hợp.
2.2.1.8. Kích thước khối cache và tỷ số trượt
Đồ thị ở hình 2.8 biểu diễn sự thay đổi của kích thước khối cache: 1KB, 4KB,
16 KB, 64 KB, 256 KB và dung lượng của dòng cache: 16B, 32B, 64B, 128B, 256B
sẽ ảnh hưởng đến tỷ số trượt cache. Kích thước cache và dung lượng dòng cache
t ợ ư r t ố s ỷ T
Kích thước cache (KB)
Hình 2.8: Sự phụ thuộc của tỷ số trượt vào kích thước cache [25].
lớn thì tỷ số trượt giảm [25, 31].
Hình 2.9 chỉ ra kích thước cache, dung lượng của dòng cache và các tổ chức
của cache: cache sắp xếp trực tiếp, cache liên kết đầy đủ và cache liên kết tập hợp
2-, 4-, 8-,...n-dòng sẽ ảnh hưởng đến tỷ số trượt cache.
35
4-dòng
Trực tiếp
2-dòng
8-dòng
t ợ ư r t ố s ỷ T
0,1 0,01 0,001 1e-04 1e-05 1e-06
Đầy đủ
1K 4K 16K 64K 256K 1M ∞ Kích thước cache
Hình 2.9: Sự phụ thuộc của tỷ số trượt cache theo kích thước và tổ chức của cache [75].
Cache liên kết tập hợp 8-dòng có tỷ số trượt tiệm cận với cache liên kết đầy
đủ. Cache sắp xếp trực tiếp cho tỷ số trượt cao nhất.
2.2.1.9. Các loại trượt cache
Có 4 loại trượt cache: trượt ép buộc, trượt dung lượng, trượt do đụng độ, và
trượt chính sách.
Trượt ép buộc:
Trượt ép buộc xảy ra khi một khối lần đầu tiên được truy nhập đến mà nó
không có trong cache. Do đó, khối được yêu cầu phải được tải từ bộ nhớ chính vào
một dòng của cache. Loại trượt này còn được gọi là trượt lần tham chiếu đầu tiên
hay trượt lạnh.
Trượt dung lượng:
Trượt dung lượng xảy ra khi dung lượng của cache không đủ lớn để sắp xếp
tất cả các khối được yêu cầu khi CPU thực hiện chương trình, một số khối bị bỏ đi
và phải nạp lại sau đó.
Trượt đụng độ:
Trượt đụng độ xảy ra trong các cache liên kết tập hợp hoặc sắp xếp trực tiếp
khi có ít nhất hai khối đồng thời sắp xếp đến cùng một tập hợp, và một khối phải bị
bỏ đi rồi nạp lại (tức là có hai địa chỉ bộ nhớ chính cùng tham chiếu đến một tập
hợp của cache). Loại trượt này còn gọi là trượt giao thoa.
36
Trượt chính sách:
Trượt chính sách xảy ra bởi chính sách thay thế cache, hay chính sách chọn
dòng cache nào cho thay thế khi cache bị đầy nội dung.
2.2.1.10. Tổ chức cache ảnh hưởng đến tốc độ của CPU
Cho một chương trình với n kiểu lệnh với các đặc tính như sau:
Ci = số lệnh thuộc kiểu i
CPIi = số chu kỳ đồng hồ trung bình của một lệnh thuộc kiểu i
n
Fi = Tần suất của kiểu lệnh i = Ci/Tổng số lệnh
CPI =
CPI × F i i
i =1
Thì: (2.25)
Tỷ số của tổng thời gian thực hiện các lệnh kiểu i là:
i =
CPI × F i i CPI
(2.26)
Để minh họa, cho rằng chip kiến trúc RISC thực hiện một chương trình với các
Bảng 2.1: Tần suất thực hiện các loại lệnh và CPI trong chip kiến trúc RISC [25].
tần suất thực hiện các loại lệnh và CPI như bảng 2.1:
CPI =
(CPI ×F ) = 0,5×1+0,2×5 +0,1×3+ 0,2×2
i
n i=1
Khí đó:
i = 2,2 chu kỳ/lệnh
Đối với một chương trình được biên dịch để chạy trên một máy tính “A” với
các thông số được cung cấp:
37
- Tổng số lệnh trong một chương trình là I, được xác định bằng lệnh/chương
CPI
trình (instructions per program).
execution
- Số chu kỳ đồng hồ để thực hiện một lệnh là , được xác định bằng
chu kỳ/lệnh (cycles/instruction).
- Số chu kỳ đồng hồ trì hoãn bộ nhớ cho một lệnh (MSPI) được xác định bằng
chu kỳ/lệnh (cycles/instruction):
- Thời gian của một chu kỳ đồng hồ là C = 1/clock rate, được xác định bằng
giây/chu kỳ (seconds/cycle).
Khi đó:
CPU
time = I×(CPI
+ MSPI)×C (2.27a)
execution
execution
CPU
time = I×(CPI
Thời gian thực hiện chương trình của CPU được xác định bằng:
+ MAPI×miss rate×misspenalty)×C (2.27b)
execution
execution
hay
CPU
time = I× (CPI
+ MSPI
) × C (2.28a)
L1
execution
execution
CPU
time = I×(CPI
- Với một cấp cache (L1):
+MAPI×L1 miss rate×L1 miss penalty)×C (2.28b)
execution
execution
hay
CPU
time = I×(CPI
+ MAPI×(AMAT - L1 hit time))×C (2.28c)
execution
L1
execution
hay
CPU
time = I× (CPI
+ MSPI
) × C (2.29a)
L1L2
execution
execution
hay CPU
time = I×(CPI
+ MAPI×L1 miss rate
execution
- Với hai cấp cache (L1, L2):
execution ×(L2hit time + L2 miss rate×L2 misspenalty))×C
CPU
time = I×(CPI
+ MAPI×(AMAT
(2.29b)
- L1 hit time))×C (2.29c)
execution
execution
L1L2
hay
CPU
time = I× (CPI
+ MSPI
) × C (2.30a)
L1L2L3
execution
execution
- Với ba cấp cache (L1, L2, L3)
38
hay CPU
time = I×(CPI
+ MAPI×L1 miss rate×(L2 hit time
execution
execution
+ L2 miss rate× (L3 hit time + L3 miss rate×L3 misspenalty)))×C
CPU
time = I×(CPI
+ MAPI×(AMAT
(2.30b)
-L1 hit time))×C (2.30c)
L1L2L3
execution
execution
hay
CPI
= CPI
+ MSPI (2.31)
actual
Ideal
Số chu kỳ thực hiện thực tế của một lệnh (CPIactual):
2.2.2. Các giải pháp tăng hiệu năng của cache
Giảm tỷ số trượt:
Để giảm tỷ số trượt cần phải tăng dung lượng của dòng cache, tăng kích thước
của cache, tăng mức độ liên kết tập hợp (n-dòng), dự đoán dòng, liên hợp giả, và tối
ưu chương trình dịch.
Giảm trượt penalty:
Để giảm trượt penalty cần tổ chức nhiều cấp cache, cache nạn nhân, đọc trượt
trước tiên, hợp nhất các bộ đệm ghi, và thực hiện tiến trình song song.
Giảm thời gian trúng cache:
Để giảm thời gian trúng cache cần thiết kế cache nhỏ và đơn giản, tránh
chuyển đổi địa chỉ, truy nhập cache theo đường ống.
2.3. Các chính sách thay thế dòng cache
Khi có trượt cache, chương trình thực hiện phải tham chiếu đến bộ nhớ chính
để đọc khối nhớ yêu cầu về CPU và đồng thời nạp vào một dòng cache. Sự thay thế
nội dung của một dòng cache chỉ xảy ra khi cache không còn một chỗ trống nào. Vì
vậy, phải lựa chọn một dòng cache nào đó làm dòng “nạn nhân” cho sự thay thế: nội
dung của nó phải được thay thế bằng nội dung của khối mới nạp từ bộ nhớ chính.
Cache sắp xếp trực tiếp không có sự chọn lựa thay thế, vì mỗi khối chỉ được sắp xếp
vào một dòng tương ứng và sơ đồ sắp xếp được thiết kế cứng dễ dàng. Nhưng các
cache liên kết đầy đủ và cache liên kết tập hợp có một số lựa chọn để thay thế dòng
cache, đó là chính sách thay thế dòng cache và chúng được thực hiện bằng phần
cứng. Chính sách thay thế dòng cache thông thường có 4 thuật toán thay thế: Sử
39 dụng gần đây ít nhất (LRU); Vào trước, ra trước (FIFO); Tần suất sử dụng ít nhất
(LFU); và Ngẫu nhiên (Random) [4, 5, 10, 62].
2.3.1. Chính sách thay thế cache LRU
Khi thực hiện thuật toán LRU, một dòng bị chọn làm dòng nạn nhân để thay
thế bằng nội dung mới của một khối từ bộ nhớ chính nếu nội dung cũ của dòng này
ít được sử dụng gần đây nhất. LRU là thuật toán thay thế được sử dụng phổ biến
trong các CMP [4, 12, 59].
2.3.2. Chính sách thay thế cache LFU
Để thực hiện thuật toán LFU, mỗi dòng cache có thêm quan hệ với bộ đếm
riêng, và bộ đếm được tăng lên mỗi khi dòng tương ứng được tham chiếu. Như vậy,
một dòng được thay thế khi giá trị bộ đếm của nó nhỏ nhất, vì nó có tần suất tham
chiếu ít nhất.
2.3.3. Chính sách thay thế cache FIFO
Để thực hiện thuật toán FIFO, các dòng cache được sắp xếp trong một danh
sách theo kiểu hàng đợi. Đầu hàng là dòng được sử dụng gần đây ít nhất (LRU),
cuối hàng là dòng được sử dụng gần đây nhiều nhất (MRU). Khi có trượt cache và
thực hiện thay thế, dòng LRU ở đầu hàng là nạn nhân trước tiên, nó bị đẩy ra ngoài
hàng, nghĩa là nội dung cũ của nó bị thay thế bởi nội dung của khối từ bộ nhớ chính.
Hàng có nội dung bị thay thế trở thành hàng MRU, nó được đưa vào vị trí trống ở
cuối hàng. FIFO cũng là thuật toán thay thế thông dụng.
2.3.4. Chính sách thay thế cache Random
Random là thuật toán thay thế tùy tiện, nghĩa là chọn bất cứ dòng nào của
cache để sắp xếp một khối từ bộ nhớ chính. Thuật toán này đơn giản cho thiết kế
phần cứng, chi phí thấp. Nếu dùng cache liên kết tập hợp 2-dòng thì tỷ số trượt
cache của thuật toán Random chỉ cao hơn thuật toán LRU và vì chỉ có hai dòng
trong một tập hợp nên chỉ có thể thay thế một trong hai dòng mà thôi. Do đó, thuật
toán Random có cơ hội thay thế 50-50 như LRU. Dung lượng cache càng lớn thì tỷ
số trượt cache của cả Random và LRU đều giảm đi và sự khác biệt của hai thuật
toán này không đáng kể.
40
Các chính sách thay thế LRU, LFU, FIFO, Random,.. được sử dụng có hiệu
quả trong các chip đơn lõi và cũng được sử dụng cho các CMP đa luồng, tuy nhiên
không đạt được hiệu năng cao. Do đó, có một số chính sách thay thế cache được đề
xuất cho CMP đa luồng [3, 45] nhằm nâng cao hiệu năng của bộ xử lý.
2.3.5. Chính sách thay thế cache NRU
Chính sách thay thế NRU là một cách xấp xỉ của chính sách thay thế cache
LRU, thường được sử dụng trong CMP đa luồng hiện đại hiệu năng cao. NRU sử
dụng một bit duy nhất cho mỗi khối cache được gọi là nru-bit. Với chỉ 1 bit của
thông tin, NRU cho phép hai dự đoán khoảng tham chiếu lại: Tham chiếu lại gần
ngay lập tức và tham chiếu lại xa. Khi giá trị nru-bit = 0 có nghĩa là một khối cache
được sử dụng gần đây và khối cache đã dự đoán sẽ được tham chiếu lại trong tương
lai gần ngay lập tức. Khi giá trị nru-bit = 1 có nghĩa là khối này không được sử
dụng gần đây và khối được dự đoán sẽ được tham chiếu lại trong tương lai xa. Khi
đầy cache, NRU luôn luôn dự đoán rằng thiếu khối sẽ có tham chiếu lại gần ngay
lập tức. Với tham chiếu lại, NRU một lần nữa dự đoán trước rằng khối tham chiếu
sẽ có tham chiếu lại gần ngay lập tức. Khi trượt cache, NRU lựa chọn các khối
cache nạn nhân mà dự đoán tham chiếu lại trong tương lai xa, tức là, một khối mà
nru-bit = 1. Bởi vì nhiều khối cache có thể có một dự đoán tham chiếu lại xa. Chính
sách lựa chọn nạn nhân NRU luôn luôn bắt đầu việc tìm kiếm nạn nhân từ một vị trí
cố định. Trong trường hợp tất cả các giá trị nru-bit = 0, tức là, tất cả các khối được
dự đoán sẽ được tham chiếu lại trong tương lai gần ngay lập tức, NRU cập nhật các
dự đoán tham chiếu lại của tất cả các khối cache trong tương lai xa và lặp lại tìm
kiếm nạn nhân. Cập nhật tất cả nru-bit = 1 cho phép chính sách lựa chọn nạn nhân
thực hiện tiến trình chuyển tiếp trong khi đó cũng loại bỏ các khối cũ từ cache.
2.3.6. Chính sách thay thế cache SRRIP
Với một bit thông tin, NRU có thể dự đoán hoặc là khoảng tham chiếu lại gần
ngay lập tức hoặc là khoảng tham chiếu lại xa cho tất cả các khối được lấp đầy vào
cache. Luôn dự đoán khoảng tham chiếu lại gần ngay lập tức trên tất cả cache được
chèn vào làm hạn chế hiệu năng cache cho các mô hình truy nhập hỗn hợp. Mặt
khác, luôn dự đoán khoảng tham chiếu lại xa làm giảm đáng kể hiệu năng cache cho
41 các mô hình truy nhập mà chủ yếu là khoảng tham chiếu lại gần ngay lập tức. Để
khắc phục hạn chế của NRU một chính sách thay thế cache SRRIP được đề xuất.
Chính sách thay thế cache SRRIP thực hiện dựa trên dự đoán khoảng cách
tham chiếu lại (RRIP). RRIP sử dụng M-bit cho mỗi khối cache để lưu trữ một trong 2M giá trị dự đoán tham chiếu lại (RRPV) có thể thực hiện được. RRIP biết
được linh hoạt thông tin tham chiếu lại cho mỗi khối cache trong mô hình truy nhập
cache. Khi RRPV = 0 có nghĩa là một khối cache được dự đoán sẽ tham chiếu lại trong tương lai gần ngay lập tức, trong khi RRPV = 2M - 1 có nghĩa là một khối
cache đã dự đoán sẽ được tham chiếu lại trong tương lai xa. Về mặt định lượng,
RRIP dự đoán rằng các khối có các RRPV nhỏ được tham chiếu lại sớm hơn các
khối có các RRPV lớn. Khi M = 1, RRIP cho phép hai dự đoán khoảng tham chiếu
lại đó là tham chiếu lại ngay lập tức và tham chiếu lại xa. Khi M > 1, RRIP cho
phép các khoảng tham chiếu lại trung gian tức là lớn hơn khoảng tham chiếu lại gần
ngay lập tức nhưng nhỏ hơn khoảng tham chiếu lại xa. Mục đích chủ yếu của RRIP
là để ngăn chặn các khối cache với một khoảng tham chiếu lại xa do làm bẩn cache.
Như vậy, SRRIP dự đoán khoảng tham chiếu lại của tất cả các khối cache bị
trượt để có một khoảng tham chiếu lại trung gian. Khi đó, RRIP cập nhật dự đoán
tham chiếu lại ngắn hơn so với dự đoán trước đó trong khoảng tham chiếu lại.
Chính sách thay thế cache SRRIP có hai chính sách để cập nhật dự đoán tham
chiếu lại: SRRIP-ưu tiên trúng (SRRIP-HP) và SRRIP-ưu tiên tần suất (SRRIP-FP).
Chính sách RRIP-HP dự đoán rằng khối cache nhận được trúng cache sẽ được
tham chiếu lại trong tương lai gần ngay lập tức và cập nhật RRPV của khối cache
liên quan bằng không. Mục đích của chính sách HP là ưu tiên thay thế các khối
cache không nhận được trúng cache hơn khối cache bất kỳ nhận được trúng cache.
Chính sách RRIP-FP cập nhật khoảng tham chiếu lại đã được dự đoán là ngắn
hơn khoảng tham chiếu lại trước đó, mỗi lần một khối cache nhận được trúng cache.
Chính sách FP hoàn thành việc này bằng cách giảm số ghi RRPV (trừ khi số ghi
RRPV = 0) khi trúng cache. Mục đích của chính sách FP là ưu tiên thay thế các khối
cache tham chiếu lại không thường xuyên khi các khối cache tham chiếu lại thường
xuyên. Theo [3], SRRIP-HP thực hiện tốt hơn SRRIP-FP rất nhiều.
42
2.3.7. Chính sách thay thế cache DRRIP
Sử dụng chính sách thay thế cache SRRIP sẽ không hiệu quả khi khoảng
tham chiếu lại của các khối cache là lớn hơn so với dung lượng cache sẵn có. Trong
các tình huống như vậy, SRRIP sẽ gây ra hiện tượng đập cache và dẫn đến là không
trúng cache. Hiện tượng này được khắc phục bằng cách đề xuất chính sách thay thế
hai phương thức RRIP (BRRIP). BRRIP chèn vào phần lớn các khối cache với một dự đoán khoảng tham chiếu lại xa (tức là RRPV = 2M - 1) và chèn không thường
xuyên (với xác suất thấp) các khối mới với dự đoán khoảng tham chiếu lại dài (tức là RRPV = 2M - 2). BRRIP tương tự như chính sách chèn hai phương thức (BIP)
[45] thành phần của BIP giúp duy trì một số tập làm việc trong cache.
Đối với các mô hình truy nhập không đập cache, sử dụng BRRIP có thể làm
giảm đáng kể hiệu năng cache. Do đó, để sử dụng cho tất cả các mô hình truy nhập
cache, bằng cách đề xuất một chính sách thay thế cache dự đoán khoảng tham chiếu
lại động (DRRIP).
DRRIP sử dụng tranh chấp tay đôi tập hợp (SD) để xác định chính sách thay
thế nào là phù hợp nhất cho một ứng dụng. Chính sách thay thế cache DRRIP lựa
chọn linh hoạt giữa SRRIP và BRRIP bằng cách sử dụng hai bộ giám sát tranh chấp
tay đôi tập hợp (SDM). SDM hạn chế trượt cache cho bất kỳ chính sách được đưa ra
bằng cách cung cấp thường xuyên một vài tập hợp của cache theo chính sách đó.
SD sử dụng một bộ đếm lựa chọn chính sách (PSELC) duy nhất để xác định chính
sách được chọn. DRRIP sử dụng chính sách được chọn của hai SDM cho các tập
hợp còn lại của cache.
2.4. Ghi và đọc cache
2.4.1. Ghi cache
Khi thực hiện một chương trình, mỗi khi CPU có nhu cầu ghi nội dung mới ra
một khối của bộ nhớ chính, mà một phần hay toàn bộ nội dung cũ của khối nhớ đó
đang lưu giữ trong một dòng của cache. CPU phải thực hiện đồng thời ghi dữ liệu
mới đó vào dòng cache và vào khối nhớ tương ứng trên bộ nhớ chính để đảm bảo sự
đồng nhất dữ liệu trên cả hai vị trí (dòng cache và khối nhớ). Như vậy, khi trúng
43 cache nội dung của dòng cache được đọc đồng nhất với nội dung của khối mà CPU
tham chiếu. Thời gian của quá trình ghi này được điều khiển nhờ chính sách ghi.
Khi có tham chiếu ghi bộ nhớ và cache, có thể xuất hiện 2 trường hợp:
Dữ liệu bẩn:
Dữ liệu bẩn là dữ liệu bị thay đổi bên trong dòng cache nhưng chưa thay đổi
bên trong khối nhớ tương ứng ở bộ nhớ chính.
Dữ liệu cũ:
Dữ liệu cũ là dữ liệu bị thay đổi trong khối nhớ ở bộ nhớ chính nhưng không
thay đổi trong dòng cache tương ứng.
Có hai cách ghi cache: ghi thông qua và ghi trở lại [24, 62, 72].
2.4.1.1. Ghi thông qua
Trong ghi thông qua, mỗi lần ghi, CPU đồng thời ghi ngay nội dung mới vào
Lưu trữ
CPU
Nạp vào
Cache
Bộ nhớ chính
Nạp vào cache
Hình 2.10: Ghi thông qua [72].
cả dòng của cache và khối nhớ tương ứng ở bộ nhớ chính như hình 2.10.
Ghi thông qua còn gọi là ghi “caching một nửa”, nội dung mới được ghi ngay
vào cache để cho CPU có thể sớm đọc nó.
Ưu điểm:
Nội dung của bộ nhớ chính và nội dung của dòng cache luôn tương đồng với
nhau, không cần phải nạp từ cache vào bộ nhớ chính, và thực hiện đơn giản.
Nhược điểm:
Phải tham chiếu bộ nhớ chính nên thời gian ghi chậm. Như vậy, để tăng tốc
cần tăng băng thông kết nối bộ nhớ chính.
44
2.4.1.2. Ghi trở lại
Ghi trở lại còn gọi là sao lưu trở lại cache, là ghi “caching đầy đủ”. CPU chỉ
ghi nội dung mới vào dòng cache, mà không ghi đồng thời vào khối tương ứng ở bộ
nhớ chính. Như vậy, nội dung cũ trong khối nhớ ở bộ nhớ chính có thể không tương
đồng với nội dung mới của dòng cache tương ứng. Để thực hiện cách ghi này, một
bit trạng thái được bổ sung cho từng dòng cache (thường vào trường thẻ tương ứng
của dòng cache), gọi là “dirty bit”. Khi có ghi vào dòng cache theo kiểu ghi trở lại,
bit này được thiết lập bằng “1” để chỉ cho bộ điều khiển cache biết rằng: dữ liệu đã
bị thay đổi trong dòng cache (dòng bẩn) và nếu quyết định sử dụng lại dòng cache
này làm “nạn nhân” cho thay thế bởi nội dung của một khối khác, thì trước tiên phải
thực hiện sao lưu nội dung hiện tại của dòng “nạn nhân” (hay dòng bẩn) về một
khối nhớ tương ứng trong bộ nhớ chính như hình 2.11. Như vậy, cần phải hai lần
truy nhập bộ nhớ chính: lần truy nhập thứ nhất là ghi nội dung của dòng nạn nhân
vào bộ nhớ và lần truy nhập thứ hai là đọc nội dung một khối nhớ từ bộ nhớ vào
Lưu trữ
Ghi trở lại
Cache
CPU
Bộ nhớ chính
Nạp vào
Nạp vào cache
Hình 2.11: Ghi trở lại [72].
cache khi thay thế dòng cache.
Ưu điểm:
Tốc độ thực hiện nhanh, tiết kiệm băng thông của bộ nhớ chính vì giảm được
thời gian ghi vào nhớ chính.
Nhược điểm:
Nội dung của khối nhớ, mà nó đã được lưu trên cache, có thể bị thay đổi bởi
các thiết bị khác (ví dụ khi đọc nội dung đĩa cứng vào bộ nhớ chính qua DMA hoặc
bộ xử lý đa lõi), khi đó bản sao nội dung của khối nhớ trong cache có thể trở thành
cũ. Do đó, bộ điều khiển cache cần phải liên tục giám sát những thay đổi trong bộ
nhớ chính và đảm bảo các nội dung của cache phải phù hợp theo vết các thay đổi
của bộ nhớ chính. Có nhiều kỹ thuật được sử dụng cho phép bộ điều khiển cache
45 giám sát bộ nhớ chính, giảm tần xuất ghi trở lại cache khi xảy ra thay thế dòng
cache, tuy nhiên chúng cũng làm phức tạp hơn khối mạch và tăng chi phí.
Nhiều hệ thống cache sử dụng cách ghi cache trở lại có thể được cấu hình để
thực hiện cách ghi cache thông suốt.
Cả hai cách ghi này đang được sử dụng rộng rãi hiện nay. Hầu hết các CMP đa
luồng của Intel đều sử dụng cách ghi thông suốt [72].
Để nâng cao hiệu năng của quá trình CPU ghi nội dung vào cache bằng cách
sử dụng giải pháp đưa vào một bộ đệm ghi sử dụng công nghệ SRAM, và đặt nó
Cache
CPU
Bộ nhớ chính
Bộ đệm ghi
(a): Bộ đệm ghi ở giữa CPU và bộ nhớ chính.
L1 cache
CPU
L2 cache
Bộ nhớ chính
Bộ đệm ghi
(b): Bộ đệm ghi ở giữa L1 cache và L2 cache.
Hình 2.12: Kỹ thuật bộ đệm ghi [72].
giữa bộ nhớ chính và CPU hoặc giữa L1 cache và L2 cache như hình 2.12 [72].
Trong trường hợp bộ đệm ghi đặt giữa CPU và bộ nhớ chính: CPU ghi nội
dung đồng thời ra dòng cache và bộ đệm ghi với tốc độ cao hơn so với thời gian
CPU ghi ra bộ nhớ chính công nghệ DRAM, sau đó đơn vị điều khiển bộ nhớ thực
hiện ghi tiếp nội dung mới từ bộ đệm ghi ra khối nhớ tương ứng trong bộ nhớ chính
mà không chiếm thời gian của CPU và cache.
Trong trường hợp bộ đệm ghi đặt giữa CPU và L2 cache: CPU đồng thời ghi
nội dung ra dòng L1 cache và bộ đệm ghi, sau đó điều khiển cache sẽ thực hiện ghi
tiếp nội dung của bộ đệm ghi ra L2 cache mà không chiếm thời gian của CPU và L1
cache.
46
Như vậy, kỹ thuật bộ đệm ghi cho phép giảm được trễ do CPU không truy
nhập bộ nhớ chính (hay L2 cache) khi sử dụng cách ghi thông suốt, và trong trường
hợp sử dụng cách ghi trở lại thì chỉ thực hiện sao lưu từ bộ đệm ghi ra khối nhớ của
bộ nhớ chính mà không cần sử dụng tới CPU và cache.
2.4.2. Đọc cache
Hầu hết các tham chiếu của CPU đến bộ nhớ chính là các tham chiếu để đọc
nội dung từ bộ nhớ. Có hai trường hợp để đọc cache: CPU đọc một từ (mã lệnh
hoặc dữ liệu) từ dòng cache khi trúng cache và CPU đọc một từ (mã lệnh hoặc dữ
liệu) từ bộ nhớ chính khi trượt cache. Có hai kiến trúc đọc cache đó là: đọc bên
cạnh và đọc thông suốt [24, 72].
2.4.2.1. Đọc bên cạnh
Hình 2.13 là sơ đồ đơn giản của kiến trúc đọc bên cạnh: bộ nhớ chính và cache
nằm ở hai phía đối diện của giao tiếp của hệ thống. Như vậy, bộ nhớ chính và cache
CPU
Giao tiếp hệ thống
Bộ nhớ chính
Cache (SRAM)
Thẻ RAM (TRAM)
Bộ điều khiển cache
Hình 2.13: Đọc bên cạnh [72].
có thể đồng thời thực hiện các chu kỳ bus riêng của mình.
Khi CPU bắt đầu chu kỳ đọc bộ nhớ, tùy thuộc vào tổ chức cache, có sự so
sánh để tìm kiếm dữ liệu yêu cầu có hay không trong một dòng cache nào đó:
- Nếu trúng cache, thì chu kỳ đọc cache được thực hiện: CPU đọc dữ liệu từ
dòng cache được lựa chọn, và không cần phải tham chiếu bộ nhớ chính.
- Nếu trượt cache, thì chu kỳ đọc bộ nhớ chính được thực hiện: CPU đọc dữ
liệu từ bộ nhớ chính và đồng thời khối chứa dữ liệu đó được đọc về dòng cache
tương ứng, bởi vì theo dự đoán nhờ các nguyên tắc tham chiếu, có thể ngay sau đó
dữ liệu này hoặc những dữ liệu lân cận trong khối có thể nhanh chóng được CPU
tham chiếu.
47
Kỹ thuật đọc này có cấu trúc không phức tạp, chi phí thấp, bảo đảm thời gian
đọc nhỏ khi trượt cache, vì sự truyền tải khối từ bộ nhớ chính đến cache có thể thực
hiện độc lập bằng các chu kỳ bus của mình và chúng không ảnh hưởng đến điều
khiển các truy nhập của các thiết bị khác thông qua giao tiếp hệ thống.
2.5.2.2. Đọc thông suốt
Hình 2.14 là sơ đồ đơn giản của kiến trúc đọc thông suốt. Nó có đặc điểm: bộ
nhớ chính ở phía bên đối diện của giao tiếp hệ thống, cache nằm giữa CPU và bộ
nhớ chính. Như vậy, cache có chu kỳ của CPU trước khi chuyển chu kỳ của CPU
đến giao tiếp hệ thống. Khi CPU bắt đầu chu kỳ đọc bộ nhớ, tùy thuộc vào tổ chức
cache, có sự so sánh để tìm kiếm từ yêu cầu có hay không trong một dòng cache
CPU
Cache (SRAM)
Bộ điều khiển cache
Thẻ RAM (TRAM)
Giao tiếp hệ thống
Bộ nhớ chính
Hình 2.14: Đọc thông suốt [72].
nào đó:
- Nếu trúng cache, thì chu kỳ đọc cache được thực hiện: CPU đọc từ yêu cầu
từ dòng cache được lựa chọn và không cần phải tham chiếu bộ nhớ chính.
- Nếu trượt cache, thì chu kỳ đọc bộ nhớ chính được thực hiện: CPU đọc từ
yêu cầu từ bộ nhớ chính thông suốt qua cache, trong đó có từ yêu cầu được đọc về
dòng cache tương ứng, bởi vì theo dự đoán của các nguyên tắc tham chiếu, có thể
ngay sau đó từ này hoặc những từ lân cận trong khối có thể nhanh chóng được CPU
tham chiếu.
Kỹ thuật đọc thông suốt cho phép thực hiện thao tác với cache trong khi vẫn
dành bus hệ thống cho các thiết bị khác để tham chiếu đến bộ nhớ chính, ví dụ, thực
48 hiện DMA giữa bộ nhớ chính và thiết bị nhớ ngoài như HDD, CD/DVD. Kỹ thuật
này phức tạp cho điều khiển các truy nhập của CPU cho các thành phần còn lại của
hệ thống máy tính, do đó chi phí cũng lớn. Khi có trượt cache, phải thực hiện chu
kỳ đọc từ bộ nhớ chính về CPU thông qua bus hệ thống và hệ thống cache, do đó
làm chậm truy nhập của các thiết bị khác qua bus hệ thống. Để khắc phục hiện
tượng này cần phải tăng tỷ số trúng cache.
2.5. Cache chia sẻ thông minh
2.5.1. Tổ chức phân cấp cache trong các chip đa xử lý
Trong các CMP đa luồng, mỗi lõi xử lý có L1I cache và L1D cache riêng,
nhưng L2 cache hoặc có thể riêng cho từng lõi [11, 29, 38, 50] hoặc có thể chia sẻ
a)
b)
Hình 2.15: CMP đa luồng hai cấp cache; a) với L2 cache riêng và
(b) với L2 cache chung cho tất cả các lõi [38,72].
cho tất cả các lõi [2, 8, 16, 17, 29, 38, 72] như hình 2.15.
Trong một số CMP đa luồng có thể có L3 cache chia sẻ cho các lõi, khi đó L2
Hình 2.16: Tổ chức cache trong các bộ xử lý 8-lõi của Intel Xeon họ 5500 [13, 14, 64, 65].
cache là riêng cho từng lõi như hình 2.16.
49
Với xu hướng công nghệ là tăng số lượng lõi để tiết kiệm không gian, các kiến
trúc đa lõi hiện nay hầu hết sử dụng L2 cache chia sẻ. Các lõi với L1 Icache và L1
Dcache riêng kết hợp vào trong chip và các lõi chia sẻ L2 cache. Ví dụ, kiến trúc
Tiled CMP 16-lõi như hình 2.17. Ở đây, L2 cache được tổ chức thành các mảnh
phân bố đều theo các lõi được chia sẻ, một mảnh L2 cache chia sẻ cho 4-lõi kề.
Kiến trúc này cho phép linh hoạt trong cấu hình lại L2 cache chia sẻ cho các lõi
theo nhu cầu dung lượng, giảm đáng kể yêu cầu băng thông tổng thể, và tăng hiệu
Hình 2.17: Tiled CMP 16-lõi với kiến trúc L2 cache chia sẻ [49, 50].
năng của hệ thống [9, 49, 50].
2.5.2. Cache chia sẻ thông minh
Cache thông minh đầu tiên được đưa ra bởi kiến trúc Intel® Advanced Smart
Cache có cache chia sẻ ở cấp cuối cùng, từ kiến trúc Nehalem họ Xeon 5500 và tiếp
tục đến các kiến trúc Corei (L3 smart cache) [66]. AMD và Sun cũng đưa ra các đặc
tính thông minh của cache chia sẻ ở cấp cache cuối. Cache chia sẻ thông minh có
những đặc điểm sau đây:
Cache chia sẻ cho tốc độ chuyển dữ liệu giữa các lõi nhanh hơn so với bộ
nhớ chính.
Kiến trúc cache chia sẻ đem lại nhiều lợi ích và đảm bảo tỷ số hiệu năng/chi
phí tốt hơn so với cache riêng.
Sử dụng hiệu quả cache chia sẻ
- Nếu một lõi rỗi, lõi còn lại chiếm lấy toàn bộ dung lượng của cache chia sẻ.
- Giảm sự không sử dụng của cache chia sẻ.
50
Linh hoạt cho người lập trình
- Có nhiều khả năng chia sẻ dữ liệu cho các luồng chạy trên từng lõi riêng mà
chúng cùng chia sẻ cache.
- Một lõi có thể xử lý trước hoặc xử lý sau dữ liệu cho các lõi còn lại.
- Có các cơ chế truyền thông thay phiên nhau giữa các lõi.
Giảm được sự phức tạp của liên kết logic cache
- Giảm sự chia sẻ bị lỗi của cache chia sẻ.
- Tải nhỏ hơn cho duy trì sự kết dính với nhau so với kiến trúc cache riêng.
Giảm dư thừa lưu trữ dữ liệu
- Cùng một dữ liệu chỉ cần lưu trữ một lần.
- Các luồng lệnh giống nhau chạy ở các lõi riêng nhưng trên dữ liệu khác
nhau cùng chia sẻ các địa chỉ lệnh. Khi đó, các địa chỉ lệnh được sao chép cho tất cả
các cache (riêng và chia sẻ) sẽ gây ra sự lãng phí, mà chỉ cần có một bản sao của
các lệnh trên cache chia sẻ.
Giảm lưu lượng của bus bộ nhớ
Chia sẻ dữ liệu hiệu quả giữa các lõi, cho phép dữ liệu yêu cầu được giải
quyết ở cấp cache chia sẻ cuối cùng thay vì tất cả đi đến bộ nhớ chính.
2.6. Tính nhất quán cache trong các chip đa xử lý, đa luồng
2.6.1. Thế nào là nhất quán cache
Nhất quán cache: Tính nhất quán của cache là khi cache chứa bản sao của một
phần của bộ nhớ chính, điều quan trọng là cache luôn phản ánh nội dung bộ nhớ
chính [64, 67]. Một số thuật ngữ được dùng để mô tả quá trình duy trì tính nhất
quán của bộ nhớ cache:
Snoop:
Snoop là khi cache đang giám sát các đường địa chỉ cho giao tác. Chức năng
này cho phép cache biết được các giao tác đang truy nhập đến vùng bộ nhớ có nội
dung mà nó đang giữ.
51
Snarf:
Cache được gọi là đã snarf dữ liệu khi nó có được những thông tin từ các
đường dữ liệu. Chức năng này cho phép cache cập nhật và duy trì tính nhất quán
của nó.
Như vậy, snoop và snarf là hai cơ chế mà cache dùng để duy trì tính nhất quán
cache.
Nhất quán cache chỉ có trong kiến trúc chip đa lõi, bởi vì các lõi đều cùng chia
sẻ cache và bộ nhớ. Xét trường hợp cụ thể sau đây: Cho rằng CPU là chip đa xử lý
có 2-lõi là P1 và P2. Giai đoạn thứ nhất P2 thực hiện lệnh: ld r2, x (nạp nội dung
Hình 2.18: P2 thực hiện lệnh ld r2, x về thanh ghi r2 của P2 [67].
của ngăn nhớ x từ bộ nhớ chính về thanh ghi r2 của P2) như hình 2.18.
Giai đoạn thứ hai, P1 thực hiện lệnh ld r2, x (nạp nội dung ngăn nhớ x từ bộ
Hình 2.19: P1 thực hiện lệnh ld r2, x [67]. Hình 2.20: P1 thực hiện các lệnh: add r1,
nhớ chính về thanh ghi r2 của P1) như hình 2.19.
r2, r4; st x, r1 [67].
Lúc này, nội dung ngăn nhớ x giống với nội dung ở các thanh ghi r2 của P1 và
P2. Tiếp theo, P1 thực hiện liên tiếp các lệnh add r1, r2, r4 (cộng nội dung của các
52 thanh ghi r1, r2, r4 và lưu kết quả vào r1), st x, r1 (chuyển nội dung của r1 vào
ngăn nhớ x) như hình 2.20. Đến đây, có thể thấy rằng nội dung của ngăn nhớ x trên
bộ nhớ chính đã thay đổi khác với nội dung của nó đã được lưu trên các thanh ghi
r2 của P1 và P2.
2.6.2. Các giao thức nhất quán cache
Có hai kỹ thuật để đảm bảo tính nhất quán cache: Dựa vào thư mục và rình mò
[25, 34, 62].
Trong giao thức dựa vào thư mục, một thư mục trung tâm chứa trạng thái của
chia sẻ một khối của bộ nhớ chính, giao thức dựa vào thư mục được sử dụng trong
các chip đa xử lý có bộ nhớ chia sẻ phân tán (DSM), nhưng giao thức này trễ cao
hơn so với giao thức “rình mò”.
Trong giao thức rình mò, không cần có thư mục trung tâm, từng cache “rình
mò” hoặc nghe để đảm bảo tính nhất quán trong các cache. Giao thức rình mò được
sử dụng trong các chip đa xử lý có bộ nhớ chia sẻ tập trung (CSM) sử dụng mạng
liên kết có cấu hình Bus và Ring [43].
2.7. Kết luận chương 2
- Chương này đã nghiên cứu các tổ chức cache của kiến trúc CMP đa luồng;
các đặc tính hiệu năng cache, và các cách ghi và đọc cache. Đồng thời, nghiên cứu
đã đánh giá các tổ chức cache và lựa chọn được tổ chức cache liên kết tập hợp n-
dòng cho hiệu năng xử lý cao nhất.
- Nghiên cứu các chính sách thay thế cache cho kiến trúc CMP đa luồng nhằm
nâng cao hiệu năng xử lý.
Tuy nhiên, các nghiên cứu hiện nay đều tập trung tổ chức cache 2 cấp với L2
cache chia sẻ cho tất cả các lõi. Với kiến trúc chip có 2 cấp cache như vậy, khi số
lượng lõi tăng lên sẽ làm hạn chế băng thông, làm tăng độ trễ, và gây nghẽn nút cổ
chai tại cấp cache chia sẻ. Vì vậy, việc nghiên cứu đánh giá, đề xuất mô hình tổ
chức cache phù hợp nhằm cải thiện và nâng cao hiệu năng của CMP đa luồng là hết
sức cần thiết.
53
Chương 3
PHÂN TÍCH ĐÁNH GIÁ HIỆU NĂNG CỦA TỔ CHỨC
CACHE TRONG KIẾN TRÚC CHIP ĐA XỬ LÝ, ĐA LUỒNG
3.1. Cơ sở lý thuyết để phân tích đánh giá hiệu năng của tổ chức cache [6,
23, 42]
3.1.1. Kiến trúc chip đa xử lý, đa luồng là mạng xếp hàng đóng đa lớp có
dạng tích các xác suất (MCPFQN)
3.1.1.1. Khái quát mạng xếp hàng đóng
Mạng xếp hàng đóng là mạng xếp hàng không có các cửa vào và các cửa ra,
mà thay vào đó là các liên kết hồi tiếp từ một số cửa ra của một số hàng đợi nào đó
đến một số cửa vào của một số hàng đợi khác. Như vậy, trong mạng xếp hàng đóng
không có khách hàng (bản tin) nào có thể vào và hoặc ra khỏi mạng và tổng số
khách hàng là một số không đổi và được xác định. Hình 3.1 là ví dụ một mô hình
mạng xếp hàng đóng. Tùy theo số lượng lớp công việc (khách hàng) mà có mạng
µ2
µ3
µ1
xếp hàng đóng đơn lớp công việc và mạng xếp hàng đóng đa lớp công việc.
…
µN
Hình 3.1: Mô hình mạng xếp hàng đóng [23].
Các loại nút hàng đợi
Mô hình mạng xếp hàng đóng thường sử dụng một số loại nút hàng đợi sau:
Loại 1: M/M/m-FCFS
Trong đó, M đầu tiên biểu thị thời gian giữa các lần đến phân bố theo hàm mũ,
M thứ hai biểu thị thời gian phục vụ phân bố theo hàm mũ, và m là số lượng server
(m ≥ 1). Loại này có nguyên tắc phục vụ là khách hàng vào trước được phục vụ
trước (FCFS), các thiết bị nhớ thường được mô hình như một nút hàng đợi loại này.
54
Loại 2: M/G/m-PS
Trong đó, M biểu thị thời gian giữa các lần đến phân bố theo hàm mũ, G biểu
thị thời gian phục vụ theo phân bố chung, m số lượng server (m ≥ 1), và nguyên tắc
phục vụ là chia sẻ xử lý (PS). Các CPU của máy tính thường được mô hình như một
nút hàng đợi loại này.
Lọai 3: M/G/∞ (server vô hạn)
Trong đó, M biểu thị thời gian giữa các lần đến phân bố theo hàm mũ, G biểu
thị thời gian phục vụ theo phân bố chung, và số lượng server là vô hạn, các thiết bị
đầu cuối có thể được mô hình như các nút hàng đợi loại này.
Loại 4: M/G/1-LCFS PR
Trong đó, M biểu thị thời gian giữa các lần đến phân bố theo hàm mũ, G biểu
thị thời gian phục vụ theo phân bố chung, số lượng server bằng 1, và nguyên tắc
phục vụ là khách hàng vào sau được phục vụ trước theo kiểu quay vòng (LCFS PR),
trong thực tế không ứng dụng mô hình nút loại 4 này trong các hệ thống máy tính.
Đặc điểm của mạng xếp hàng đóng
Mạng xếp hàng đóng có đặc điểm sau đây:
- Có K nút trong mạng; i = 1, 2,…, K
- ni: số lượng khách hàng ở nút i; với i = 1, 2,…, K
K
N =
i
n (3.1)
i=1
- Tổng số khách hàng (công việc) cùng loại (lớp) vận hành trong mạng đóng
0 , tức là p0i = 0. Không có khách hàng nào từ bất kỳ nút i nào ra khỏi mạng,
0iλ
- Không có khách hàng mới nào từ ngoài mạng đến bất kỳ nút i trong mạng,
tức là pi0 = 0. Do đó, tổng số khách hàng ở trong mạng xếp hàng đóng là cố định
không đổi.
K
- Với pij là xác suất định tuyến từ nút i đến nút j thỏa mãn cho mạng đóng
1
ij
p
j 1
; i = 1, 2, …, K (3.2)
55
iλ
K
- Tổng tốc độ của các khách hàng đến nút i được xác định là
i
λ p j
ji
λ =
j=1
với i = 1, 2, …, K (3.3)
- Số cuộc trung bình đến nút i (tốc độ tương đối đến nút i) của khách hàng là
ν = i
λ i λ
K
K
p
p j
λ
ν λ j
ji
ji
K
j=1
j=1
hay
=
=
=
ν p j
ν = i
ji
λ
λ
λ i λ
j=1
; với i = 1, 2, …, K (3.4)
iE S có phân
- Mỗi server ở nút i có thời gian phục vụ khách hàng trung bình
i E S
1 μ
i
bố hàm mũ với giá trị và độc lập với các thời gian phục vụ ở các nút
khác, độc lập với các quá trình đến.
- Mức độ sử dụng của nút i là
< 1
U = i
λ i m μ i
i
(3.5a)
i
Trong đó: mi là số server trong từng nút i. Nếu mi = 1, ta có hàng đợi loại M/M/1, thì mức độ sử dụng của nút i là
λ < μ (3.5b)
< 1
U = i
i
i
λ μ
i
hay
iν .
- Đối với mạng đóng chỉ có thể xác định các giá trị tốc độ đến tương đối
Do đó, mức độ sử dụng tương đối của nút i được xác định
=
U = i
ν i m μ i
λ i m μ λ i
i
i
(3.5c)
;
n m
n μ × i
i
i
- Các tốc độ phục vụ của từng nút là hàm phụ thuộc số công việc
μ (n ) i
i
;
n m
i m μ × i
i
i
i
(3.6)
56
Trong trường hợp mạng xếp hàng đóng có đa lớp công việc
- R: số lượng các lớp công việc trong một mạng, với r = 1, 2,.., R.
K R
- nir : số lượng các công việc của lớp thứ r ở nút i
n = N
ir
i=1 j=1
(3.7)
K
n = N
- Nr: số lượng công việc của lớp thứ r trong toàn mạng
ir
r
i=1
(3.8)
- N: tổng số công việc thuộc tất cả các lớp của toàn mạng là một vector tổng
các số lượng công việc của từng lớp, với N = (N1, N2,.., NR).
K
- Si: trạng thái của nút i của mạng, Si = (ni1, ni2,…, niR), và thỏa mãn
i
S = N
i=1
(3.9)
- S: trạng thái của toàn mạng gồm nhiều lớp, các công việc là vector
S = (S1, S2…, SN)
irμ : tốc độ phục vụ của nút i cho tất cả các công việc thuộc lớp r.
-
- pir,js : xác suất định tuyến mà công việc của lớp r ở nút i được chuyển đến lớp
s ở nút j.
3.1.1.2. Khái quát mạng xếp hàng đóng có dạng tích các xác suất
Mạng xếp hàng đóng có dạng tích các xác suất là mạng Gordon-Newell được
mở rộng từ định lý Jackson của mạng xếp hàng mở.
Định nghĩa mạng Gordon-Newell
Gordon-Newell định nghĩa như sau:
Một mạng gồm K nút kết nối với nhau được gọi là mạng Gordon-Newell nếu
nó thỏa mãn các điều kiện sau đây:
- Là một mạng đóng (không có khách hàng từ bên ngoài vào mạng và không
có khách hàng nào từ bên trong đi ra khỏi mạng).
57
- Tất cả thời gian phục vụ được phân bố theo hàm mũ và nguyên tắc phục vụ
ở tất cả các nút là FCFS (hay FIFO).
K
- Một khách hàng được phục xong ở nút i sẽ chuyển một số nút j khác với xác
1
ji
p
j 1
. suất chuyển tiếp pij, thỏa mãn
- Mức độ sử dụng của tất cả các nút đều nhỏ hơn 1.
Định lý Gordon-Newell
K
N
Định lý Gordon-Newell phát biểu rằng: trong một mạng Gordon-Newell gồm
i
n
, trong đó ni: số lượng khách hàng ở nút i,
i 1
K nút, với tổng số khách hàng
thì có tích xác suất trạng thái bền vững
π(n) π(n ,n ,...,n ) 1 K
2
F (n ) i i
1 K G(N) i 1
(3.10)
Trong đó, G(N): hằng số bình thường hóa, và thỏa mãn điều kiện bình thường
K
hóa là tổng tất các các xác suất trạng thái mạng bằng 1
G(N)
F (n ) i i
n
... n N i 1
n 1
2
K
(3.11)
Trong đó, Fi(ni): là các hàm tương ứng với các xác suất πi(ni) của nút i, được
in
) =
×
cho bởi
i
( F n i
ν i μ
β
1 (n ) i
i
i
(3.12)
iν : là số cuộc trung bình đến nút i, được xác định theo (3.4).
Trong đó,
Hàm
β n được xác định theo i
i
; n m
i
n ! i
i
i
; n m
β (n ) i
i
m !m i
n m i i
i
i
i
1 ; m 1
(3.13)
Cho các ứng dụng khác nhau, mà các tốc độ phục vụ phụ thuộc vào số lượng
iF(n ) được cho bằng i
các công việc ở từng nút, dạng chung của hàm
58
F (n ) = i i
in ν i A (n ) i i
μ ( j) ; n
0
i
i
(3.14)
A (n ) i i
0
i
in j 1 1 ; n
Với: (3.15)
Với quan hệ (3.6) có thể dễ dàng nhận thấy rằng: trường hợp các tốc độ phục
vụ là hằng số thì đẳng thức (3.12) là trường hợp riêng của đẳng thức (3.14).
Tính các xác suất trạng thái theo phương pháp Gordon-Newell
Tính các xác suất trạng thái theo phương pháp Gordon-Newell có thể thực
hiện theo 4 bước:
Bước 1: Tính các số cuộc trung bình đến tất cả các nút i = 1, 2,..., K của mạng
xếp hàng đóng theo công thức (3.4).
Bước 2: Đối với tất cả các nút i = 1, 2,..., K, tính các hàm Fi(ni) theo công thức
(3.14).
Bước 3: Tính hằng số bình thường hóa G(N) theo công thức (3.11).
Bước 4: Tính các xác suất trạng thái của mạng theo công thức (3.10).
3.1.1.3. Kiến trúc chip đa xử lý, đa luồng là mạng xếp hàng đóng đa lớp có
dạng tích các xác suất (MCPFQN)
Một CMP đa luồng được coi là một hệ thống mạng xếp hàng đa lớp công việc.
Các công việc trong mạng đa lớp được coi là song song mức lệnh (ILP) hay song
song mức luồng (TLP), mỗi lệnh hay mỗi luồng lệnh có đặc điểm riêng được coi là
một lớp. CMP đa luồng chỉ xử lý một số luồng hay một số lệnh cố định (không
thêm vào, không bớt đi) nên được mô hình hóa bằng mạng xếp hàng đóng. Vì các
luồng có thể khác nhau về thời gian phục vụ (do độ dài luồng, tính chất các lệnh và
dữ liệu của luồng) nên mạng xếp hàng đóng được gọi là mạng xếp hàng đóng đa
lớp. Trong CMP đa luồng các lệnh hay luồng lệnh có cùng thời gian phục vụ, cùng
tính chất thuộc vào một lớp.
59
Kiến trúc CMP đa luồng là một hệ thống đóng tìm được nghiệm của các đẳng
thức cân bằng toàn cục, nghiệm này có dạng tích các xác suất.
Do đó, kiến trúc CMP đa luồng được mô hình hóa bằng một mạng xếp hàng
đóng đa lớp có dạng tích các xác suất (MCPFQN).
3.1.2. Thuật toán phân tích giá trị trung bình (MVA) đánh giá hiệu năng cho
các mạng xếp hàng đóng có dạng tích các xác suất
Có nhiều thuật toán được sử dụng để xác định các thông số hiệu năng của các
mạng xếp hàng đóng có dạng tích các xác suất, như: lý thuyết Gordon-Newell, thuật
toán chập, thuật toán phân tích giá trị trung bình (MVA). Tuy nhiên, quan trọng hơn
cả cho các mạng xếp hàng đóng có dạng tích các xác suất là sử dụng thuật toán
MVA. Vì thuật toán MVA có ưu điểm là các số đo hiệu năng của mạng xếp hàng
đóng có thể được tính mà không cần phải tính hằng số bình thường hóa G(N) hay
phân bố xác suất trạng thái.
Thuật toán MVA được phát triển bởi Reiser và Lavenberg được dùng để phân
tích các MCPFQN. MVA sử dụng hai luật đơn giản: Luật Little cho toàn mạng và
định lý phân bố xác suất thời gian đến.
(1). Luật Little: Là quan hệ giữa số lượng trung bình các công việc, thông
E[N] = λ.E[R] (3.16)
lượng, và đáp ứng trung bình của một nút hay của toàn bộ hệ thống
(2). Định lý phân bố xác suất ở thời gian đến (hay định lý đến): Đối với tất cả
các MCPFQN, hàm khối lượng xác suất (PMF) của số lượng công việc nhận thấy
thời gian đến nút i khi có n công việc trong mạng bằng PMF của số lượng công việc
ở chính nút này với ít hơn một công việc trong mạng. Hay nói một cách khác: “Ở
thời điểm một công việc đi tới một nút trong mạng, nhận thấy rằng bản thân công
việc này không sẵn sàng vào hàng đợi của nút. Như vậy, chỉ có n - 1 công việc khác
có thể giao thoa với cuộc đến mới”.
3.1.2.1. Mạng xếp hàng đóng đơn lớp có dạng tích các xác suất
Thuật toán MVA cho mạng xếp hàng đóng đơn lớp có dạng tích các xác suất
gồm các bước sau:
60
E N (0) = 0 ,
i
iπ 0 \ 0 = 1,
iπ j \ 0 = 0
Bước 1: Khởi tạo. Với i = 1, 2, …, K, j = 1, …, (mi -1)
Bước 2: Lặp theo số các công việc n = 1, 2,.., N
; Type1,2,4; (m =1)
(1+E N (n-1) ) i
i
m -2 i
×
(3.17)
Bước 2.1: Thời gian đáp ứng trung bình của một công việc ở nút i
) (m - j-1) π (j\ n-1) ;Type1;(m 1)
E[R (n)] = i
( 1+E N (n-1) + i
i
i
i
j=0
; Type 3
1 μ i 1 μ m × ir i 1 μ i
Bước 2.2: Tính thông lượng toàn mạng
λ n =
K
i
n (3.18)
i=1
ν E R n i
Thông lượng của từng nút có thể được tính nhờ sử dụng công thức sau:
λ n = λ n ν i
i
(3.19)
iν được xác định bằng công thức (3.4)
Trong đó,
Bước 2.3: Số lượng trung bình các công việc ở từng nút i
E N n = λ n E R n ν
i
i
i
(3.20)
Bước 2.4: Thời gian chờ đợi trung bình tại các nút
E W n = E R n -
i
i
1 μ
i
(3.21)
Bước 2.5: Mức độ sử dụng tại các nút
U = i
λ i μ m i
i
với mi là số server của nút i (3.22)
61
3.1.2.2. Mạng xếp hàng đóng đa lớp có dạng tích các xác suất
Thuật toán MVA để tính các thông số hiệu năng của các mạng xếp hàng đóng
đa lớp công việc được mở rộng từ trường hợp một lớp công việc, gồm các bước sau:
E[N (0, 0,..., 0)]
0; π (0 | 0) 1;
π(j | 0)
0
ir
i
Bước 1: Khởi tạo: với i = 1, 2,..., K ; j = 1, ..., (mi – 1) và r = 1,..., R
Bước 2: Lặp với n = 0, …, N
Bước 2.1: Thời gian đáp ứng trung bình của các công việc của lớp r ở từng
R
E[N (n 1 )]) ; Type 1,2,4 (m 1)
(1
is
r
i
s 1
R
m 2 i
nút i
×
(1
E[N (n 1 )]
E[R (n)] i
is
r
(m j 1) π (j| n 1 )); Type 1 (m 1) r
i
i
i
j 0
s 1
; Type 3
1 μ ir 1 μ m × ir i 1 μ ir
(3.23)
(n ,..., n
1,..., n )
(n 1 ) r
1
R
r
Trong đó, là vector số công việc với một công
việc thuộc lớp r ít hơn trong mạng.
( j 1,..., (m 1))
i
R
ir
Xác suất có j công việc ở nút i và mạng đang có n công việc
π(j | n)
λ (n)π ( j 1| n 1 ) r
r
i
1 j
ν μ r 1
ir
(3.24)
R
ir
π(0 | n) 1
(m j)π ( j | n)
Và với j = 0:
λ (n) r
i
i
(3.25)
im 1
ν μ
r 1
j 1
1 m i
ir
n
Bước 2.2: Thông lượng toàn mạng
λ (n) r
N
ν E[R (n)] ir
ir
i 1
(3.26)
Thông lượng của từng nút có thể được tính nhờ sử dụng công thức sau đây:
62
λ
ir
n = λ n ν r ir
(3.27)
Bước 2.3: Số lượng trung bình các công việc của lớp r ở nút i
E[N (n)] = ν .λ (n).E[R (n)] r
ir
ir
ir
(3.28)
Bước 2.4: Thời gian chờ đợi trung bình các công việc của lớp r ở nút i
E W n = E R n -
ir
ir
1 μ
ir
(3.29)
Bước 2.5: Mức độ sử dụng tại các nút i
U = ir
λ ir μ m ir
i
với mi là số server của nút i (3.30)
3.2. Mô hình tổ chức cache trong kiến trúc chip đa xử lý, đa luồng
3.2.1. Khái quát
Công nghệ vi xử lý hiện nay tập trung vào đa lõi và đa luồng cho mỗi lõi trong
một chip. CMP đa luồng cho phép đa lõi nằm trong cùng một chip để chia sẻ tài
nguyên và cải thiện mức độ sử dụng. Kỹ thuật đa luồng đồng thời (SMT) cho phép
các lõi xử lý riêng trong một chip để thực hiện các lệnh từ nhiều luồng đơn cùng
một lúc (2, 4 hoặc 8-luồng) còn gọi là siêu luồng [37, 52, 53].
Phần lớn các CMP đa luồng hiện nay sử dụng 2 cấp cache: L1 cache riêng cho
từng lõi, L2 cache chia sẻ chung cho các lõi. Khi số lượng lõi tăng lên, do có nhiều
lõi truy nhập đồng thời tại L2 cache chia sẻ, làm xuất hiện trạng thái nghẽn nút cổ
chai, dẫn đến tắc nghẽn lưu lượng dữ liệu và giảm hiệu năng của bộ xử lý.
Kiến trúc CMP đa luồng yêu cầu phân cấp cache để quản lý độ trễ và băng
thông. Trên mỗi chip thường có 2 hoặc 3 cấp cache, L1 cache riêng cho mỗi lõi, L2
cache có thể là riêng hay chia sẻ cho 2 hoặc 4-lõi, L3 cache và bộ nhớ chính luôn
luôn được chia sẻ.
Cache riêng có lợi thế: chúng gần lõi, do đó truy nhập nhanh hơn, và làm giảm
tranh chấp. Ngoài ra, cache riêng cũng có được vị trí khoảng cách tốt hơn, tất cả các
dữ liệu cần thiết qua lõi luôn được đưa vào cache của lõi. Cache riêng dễ dàng để
đạt được hiệu năng cao hơn cache chia sẻ, do ranh giới tự nhiên giữa các cache sắp
63 xếp cạnh nhau. Nhưng với kiến trúc cache riêng, vấn đề kết nối cache cần phải sử
dụng các giao thức cache phù hợp để giữ dữ liệu ổn định qua các cache, giới hạn
không gian cache được dùng không thể chia sẻ các dữ liệu cùng cache đến các
luồng trên các lõi khác nhau dẫn đến không đồng đều mức độ sử dụng của toàn bộ
không gian cache [1, 32]. Mức độ sử dụng cache không đồng đều như vậy có thể
dẫn đến suy giảm đáng kể tổng hiệu năng của hệ thống.
CMP đa luồng sử dụng cache chia sẻ có lợi thế: độ trễ của thông tin ít, một lõi
có thể tìm nạp trước dữ liệu cho lõi khác có kích thước cache nhỏ hơn cần thiết, tắc
nghẽn trên phạm vi kết nối bộ nhớ ít hơn, chia sẻ động cho phép sử dụng hiệu quả
chia sẻ không gian cache [1, 32]. Tuy nhiên, với số lượng lõi cao đòi hỏi băng thông
và kích thước cache cao hơn. Độ trễ trúng cache sẽ cao hơn do chuyển đổi logic trên
bộ nhớ cache. Mặt khác, khi thực hiện đồng thời các luồng được tạo ra từ các ứng
dụng khác nhau, tổng hiệu năng của một CMP đa luồng có thể suy giảm do các
xung đột giữa các các luồng trong không gian cache chia sẻ, một luồng của một lõi
có thể truy xuất các dữ liệu của một luồng khác và thời gian thực hiện của nó trở
nên dài hơn so với cache riêng [1].
3.2.2. Mô hình tổ chức cache trong kiến trúc chip đa xử lý, đa luồng
Trên cơ sở một số kiến trúc CMP đa luồng đã đề cập ở chương 1 và chương 2,
luận án đưa ra hai kiến trúc CMP đa luồng: kiến trúc CMP đa luồng có 2 cấp cache,
trong đó L1 cache riêng cho mỗi lõi và L2 cache chia sẻ cho tất cả các lõi như hình
3.2a và kiến trúc CMP đa luồng có 3 cấp cache, trong đó L1, L2 cache riêng cho
mỗi lõi và L3 cache chia sẻ cho tất cả các lõi như hình 3.2b, nhằm phân tích đánh
giá hiệu năng của từng kiến trúc để từ đó chọn ra kiến trúc CMP đa luồng có tổ
chức cache phù hợp cho hiệu năng xử lý tốt nhất.
Trong hình 3.2:
a) L1 cache riêng cho mỗi lõi và L2 cache chia sẻ cho tất cả các lõi.
b) L1 cache và L2 cache riêng cho mỗi lõi và L3 cache chia sẻ cho tất cả các lõi.
Ở hình 3.2 mỗi lõi có m luồng ký hiệu là T, các hộp đen là các kết nối.
64
CPU 2
CPU n
CPU 1
CPU 1
CPU 2
CPU n
…
…
…
T
T
T
T
T
T
…
…
…
T
T
T
T
T
T
…
L1
L1
L1
L1
L1
L1
…
L2
L2
L2
L2
MM
L3
a)
MM
b) )
Hình 3.2: Các kiến trúc CMP đa luồng.
3.3. Phân tích đánh giá hiệu năng của tổ chức cache trong kiến trúc chip
đa xử lý, đa luồng
3.3.1. Mô hình thực hiện phân tích hiệu năng của kiến trúc chip đa xử lý, đa
luồng
3.3.1.1. Mô hình tổng quát
Dựa vào mô hình MCFPQN để mô hình hóa cho các kiến trúc CMP đa luồng
ở hình 3.2 được thể hiện như hình 3.3.
Mô hình này đã được công bố trên các công trình:“Phân tích hiệu năng của tổ
chức cache trong kiến trúc vi xử lý đa lõi”. Kỷ yếu Hội nghị khoa học công nghệ
thông tin và truyền thông ĐHBK Hà Nội, (10/2011), pp.67-73, và “Đánh giá hiệu
năng của tổ chức cache trong hệ thống vi xử lý đa lõi, đa luồng”. Tạp chí Khoa học
& Công nghệ, các Trường Đại học kỹ thuật, Số 91, (2012), pp.54-58.
Ở hình 3.3a, mỗi lõi CPU được mô hình hóa bằng nút hàng đợi loại M/G/m-
1 / μ , i = 1,.., m. PS (chia
Ti
PS, với m luồng xử lý có thời gian phục vụ trung bình là
sẻ xử lý) có nghĩa là mỗi lõi CPU đưa ra phục vụ của mình cho một số công việc
bằng việc chia sẻ nguồn tài nguyên của nó. Mạng liên kết (Interconnect) và L2
cache chia sẻ là các điểm nối quan trọng ảnh hưởng đến hiệu năng của hệ thống. Vì
vậy, ở đây thiết lập mô hình cho Interconnect và L2 cache là một nút
65
L2μ (bao gồm thời gian
Interconnect+L2 cache với thời gian phục vụ trung bình 1/
CPU 1
µT1
L11cache
p1L11
µT2
µL1
p11
pL11L2
pL11,1
µTm
MemoryBus+Mem
µm1
Interconnect+L2cache
PL2Mem
µm2
truy cập L2 cache và sự độ trễ chuyển đổi kết nối).
µL2
pL21L2
PL2CPU
pMemCPU
µmk
µT1
CPU n
Ln1cache
pnL1
µT2
µL1
pnn
pLn1,1
pLn1Ln2
µTm
a)
CPU 1
µT1
L12cache
p1L11
pL1L2
µT2
µL1
µL2
pL11,1
pL12,1
pL12L3
p11
µTm
MemoryBus+Mem
µm1
Interconnect+L3cache
PL3Mem
µm2
µL3
pL22L3
pMemCPU
µmk
PL3CPU
µT1
CPU n
Ln2cache
Ln1cache
pnL1
pLn1Ln2
µT2
µL1
µL2
pLn1,n
pLn2L3
pLn2,n
pnn
µTm
b)
Hình 3.3: Mô hình MCPFQN tổng quát cho CMP đa luồng của hình 3.2.
L11cache
66
Ở hình 3.3b, cũng đưa ra mô hình với mỗi lõi CPU được mô hình hóa bằng nút
1 / μ , i = 1,.., m. PS (chia sẻ xử lý) có nghĩa là mỗi lõi CPU đưa ra phục vụ của
Ti
hàng đợi loại M/G/m-PS, với m luồng xử lý có thời gian phục vụ trung bình là
mình cho một số công việc bằng việc chia sẻ nguồn tài nguyên của nó. Mạng liên
kết (Interconnect) và L3 cache chia sẻ cũng là điểm nối quan trọng ảnh hưởng đến
hiệu năng của hệ thống. Vì vậy, ở đây cũng thiết lập mô hình cho Interconnect và
1/ μ L3
L3 cache là một nút Interconnect+L3 cache với thời gian phục vụ trung bình
(bao gồm thời gian truy cập L3 cache và sự độ trễ chuyển đổi kết nối).
Bus bộ nhớ (MemoryBus) và bộ nhớ chính (Mem) được đặt vào một nút
1/ μ , i = 1, ..,
mi
MemBus+Mem với thời gian phục vụ trung bình của mỗi module là
k. (bao gồm độ trễ bus bộ nhớ và thời gian truy nhập bộ nhớ).
Trong hình 3.3 tất cả các cache và MemBus+Mem được mô hình hóa bằng nút
hàng đợi loại M/M/1-FCFS.
3.3.1.2. Mô hình rút gọn
Nhận xét:
Vì các lõi có khả năng thực hiện song song. Do đó, có thể tính đến hai trường
hợp:
- Trường hợp 1: Từng lõi thực hiện các công việc của tất cả các lớp khác nhau.
- Trường hợp 2: Mỗi lõi chỉ thực hiện các công việc của một lớp. Khi đó, với n
lõi CPU thực hiện n lớp công việc song song.
Vì các lõi có cấu trúc và tài nguyên nhớ giống nhau nên trong mô hình rút gọn
chỉ xét cho một lõi duy nhất và mỗi lõi chỉ thực hiện các công việc của một lớp.
1/ μ
Mặc định rằng, các CMP đa luồng làm việc ở 2GHz. Như vậy, thời gian phục
0,5ns ). Đối với tất cả các lõi, giả
Ti =
vụ trung bình yêu cầu là 0,5ns (hay
thuyết rằng: trong 1000 lệnh mà lõi CPU tham chiếu, chỉ có 150 lệnh có tham chiếu
Register-to-Register, nghĩa là không có tham chiếu đến hệ thống nhớ.
67
Trong 850 lệnh tham chiếu đến L1 cache có 600 lệnh trúng L1 cache, nghĩa là
tỷ số trúng L1 cache là L1 hit rate = 600 / 850 = 0,7 và tỷ số trượt L1 cache là L1 miss rate = 0,3.
L2 hit rate = 200 / (850 - 600) = 0,8 và tỷ số trượt L2 cache là L2 miss rate = 0, 2 .
Có 200 lệnh trúng L2 cache, nghĩa là tỷ số trúng L2 cache là
L3 hit rate = 400 / (850 - 600 - 200) = 0,8
Có 40 lệnh trúng L3 cache, nghĩa là tỷ số trúng L3 cache là
L3miss rate = 0, 2
Chỉ còn 10 lệnh phải tìm trong bộ nhớ chính, nghĩa là tỷ số trượt L3 cache là
1/ μ
1ns ), L2 hit time = 5
L1 =
1/ μ
Cho rằng L1 hit time = 2 chu kỳ đồng hồ (hay
2,5ns), L3 hit time (tính cả trễ Interconnect) = 10 chu
L2 =
chu kỳ đồng hồ (hay
1/ μ
5ns ), thời gian truy nhập bộ nhớ chính (tính cả trễ Memory
L3 =
1/ μ
kỳ đồng hồ (hay
40ns (hay L3 miss penalty).
mi =
bus) là
MemoryBus+Mem
µm1
CPU 1
µT1
Interconnect+L2cache
L11cache
p1L11
pL11L2
pL2Mem
µm2
µT2
µL2
µL1
pL11,1
p11
pL12,1
µmk µmk
µTm
PMem1
Hình 3.4: Mô hình MCPFQN rút gọn cho CMP đa luồng, 2 cấp cache với L2 cache chung.
Mô hình rút gọn của hình 3.3a
Ở mô hình này mạng gồm 4 nút hàng đợi: i = 1, 2, 3, 4.
Trong đó: i = 1 là nút hàng đợi CPU 1; i = 2 là nút hàng đợi L11cache;
i = 3 là nút hàng đợi Interconnect+L2cache;
i = 4 là nút hàng đợi MemoryBus+Mem
1. Thời gian phục vụ trung bình tại các nút
= 0,5ns
= 1ns
= 2,5ns
= 40ns
1 μ
1 μ
1 μ
1 μ 1
2
3
4
; ; ;
68
2. Xác suất định tuyến tại các nút
p = 31
0,8 n
(n là số lõi trên chip) p11 = 0,15; p12 = 0,85; p21 = 0,7; p23 = 0,3;
p = 41
1 n
(n là số lõi trên chip) p34 = 0,2;
3. Tốc độ đến tại các nút
ν = i
ji
4 ν p j j=1
với i là số nút của mạng
4. Tính toán các thông số hiệu năng
Để tính toán các thông số hiệu năng theo thuật toán phân tích giá trị trung bình
(MVA) lần lượt thực hiện theo các bước:
E N (0) = E N (0) = E N (0) = E N (0) = 0
1
2
3
4
1π (0 \ 0) = 1 ;
1π (1\ 0) = 0
Bước 1: Khởi tạo i = 1, 2, 3, 4
Bước 2: Lặp theo số lượng công việc n = 1, 2,…, N
Bắt đầu từ n = 1
Bước 2.1: Thời gian đáp ứng trung bình tại các nút được tính theo công thức
(3.17)
m - j -1 π 0 \ 0
im -2
E R (1) = 1
1
i
j=1
1 m μ i 1
1+ E N (1) + 1
- Nút 1 (CPU 1)
E R (1) = 2
2
1+ E N (1)
1 μ
2
- Nút 2 (L11 cache)
E R (1) = 3
3
1+ E N (1)
1 μ
3
- Nút 3 (Interconnect+L2 cache)
- Nút 4 (MemoryBus+Mem)
69
E R (1) = 4
4
1+ E N (1)
1 μ
4
1
λ 1 =
4
i
ν E R 1 i
i=1
Bước 2.2: Thông lượng toàn mạng được tính theo công thức (3.18)
λ 1 = λ 1 ν
i
i
- Thông lượng tại các nút được tính theo công thức (3.19)
Bước 2.3: Số lượng trung bình các công việc tại các nút được tính theo công
E N 1 = λ 1 E R 1 ν
i
i
i
thức (3.20)
Bước 2.4: Thời gian chờ đợi trung bình các công việc tại các nút được tính
E W 1 = E R 1 -
i
i
1 μ
i
theo công thức (3.21)
Bước 2.5: Mức độ sử dụng tại các nút được tính theo công thức (3.22)
U = i
λ i μ m i
i
với mi là số server của nút i
Lặp lại với n = 2; n = 3; n = 4; …; n = N
MemoryBus+Mem
µm1
CPU1
µT1
Interconnect+L3cache
L12cache
L11cache
pL11L12
pL12L3
pL3Mem
p1L11
µm2
µT2
µL1
µL3
µL2
pL11,1
p11
pL3,1
pL12,1
µmk
µTm
PMem1
Hình 3.5: Mô hình MCPFQN rút gọn cho CMP đa luồng, 3 cấp cache với L3 cache chung.
Mô hình rút gọn của hình 3.3b
Ở mô hình này mạng gồm 5 nút hàng đợi: i = 1, 2, 3, 4, 5.
Trong đó: i = 1 là nút hàng đợi CPU 1; i = 2 là nút hàng đợi L11cache;
70
i = 3 là nút hàng đợi L12 cache;
i = 4 là nút hàng đợi Interconnect+L3cache;
i = 5 là nút hàng đợi MemoryBus+Mem
1. Thời gian phục vụ trung bình tại các nút
0,5ns
1ns
2,5ns
5ns
= 40ns
1
1
1
1 μ
1 1
2
3
4
5
; ; ;
2 Xác suất định tuyến tại các nút
p11 = 0,15; p12 = 0,85; p21 = 0,7; p23 = 0,3; p31 = 0,8; p34 = 0,2;
p = 41
p = 51
1 n
0,8 n
(n là số lõi trên chip) (n là số lõi trên chip); p45 = 0,2;
5
3. Tốc độ đến tại các nút
ν p
ν = i
j
ji
j=1
với i là số nút của mạng
4. Tính toán các thông số hiệu năng
Để tính toán các thông số hiệu năng theo thuật toán phân tích giá trị trung bình
(MVA) lần lượt thực hiện theo các bước:
= 0
E N (0) = E N (0) = E N (0) = E N (0) = E
2
1
3
4
5N 0
1π (0 \ 0) = 1 ;
1π (1\ 0) = 0
Bước 1: Khởi tạo i = 1, 2, 3, 4, 5
Bước 2: Lặp theo số lượng công việc n = 1, 2,…, N
Bắt đầu từ n = 1
Bước 2.1: Thời gian đáp ứng trung bình tại các nút được tính theo công thức
(3.17)
m - j -1 π 0 \ 0
E R (1) = 1
1
i
im -2 j=1
1 m μ i 1
1+ E N (1) + 1
- Nút 1 (CPU 1)
71
E R (1) = 2
2
1+ E N (1)
1 μ
2
- Nút 2 (L11 cache)
E R (1) = 3
3
1+ E N (1)
1 μ
3
- Nút 3 (L12 cache)
E R (1) = 4
4
1+ E N (1)
1 μ4
- Nút 4 (Interconnect+L3 cache)
E R (1) = 5
5
1+ E N (1)
1 μ
5
- Nút 5 (MemoryBus+Mem)
Bước 2.2: Thông lượng toàn mạng được tính theo công thức (3.18)
λ 1 =
5
i
1
i=1
ν E R 1 i
λ 1 = λ 1 ν
i
i
Thông lượng tại các nút được tính theo công thức (3.19)
Bước 2.3: Số lượng trung bình các công việc tại các nút được tính theo công
E N 1 = λ 1 E R 1 ν
i
i
i
thức (3.20)
Bước 2.4: Thời gian chờ đợi trung bình các công việc tại các nút được tính
E W 1 = E R 1 -
i
i
1 μ
i
theo công thức (3.21)
Bước 2.5: Mức độ sử dụng tại các nút được tính theo công thức (3.22)
72
U = i
λ i μ m i
i
với mi là số server của nút i
Lặp lại cho n = 2; n = 3; n = 4; …; n = N
3.3.2. Kết quả mô phỏng và đánh giá hiệu năng cho kiến trúc CMP đa luồng
3.3.2.1. Kết quả mô phỏng cho các kiến trúc CMP đa luồng
Sử dụng công cụ mô phỏng Java (JMT) v.0.8.0 [22, 73] để thực hiện mô
phỏng cho mô hình MCFPQN ở hình 3.3. Quá trình mô phỏng đã thực hiện theo
kịch bản được trình bày trong phần Phụ lục 1. Ở đây lần lượt xét các CMP đa luồng
có 2-lõi với L2 cache chung cho các lõi hình 3.6a và L3 cache chung cho các lõi
hình 3.6b; CMP đa luồng có 4-lõi với L2 cache chia sẻ như hình 3.11a và với L3
cache chia sẻ như hình 3.11b; CMP đa luồng có 8-lõi với L2 cache chia sẻ như hình
3.16a và với L3 cache chia sẻ như hình 3.16b.
Kết quả mô phỏng, đã thu được các thông số hiệu năng (thời gian chờ đợi, thời
gian đáp ứng, mức độ sử dụng, thông lượng) ở các lõi CPU và các cấp cache L1,
L2, L3 cache của các lõi. Các kết quả ở lõi CPU và các cấp cache L1, L2, L3 của
các lõi là tương đương nhau, Do đó, ở đây chỉ trình bày kết quả của các thông số
hiệu năng ở các nút CPU1, L11cache, Int+L2cache, L21cache, Int+L3cache,
MemoryBus+Mem và của hệ thống (System) được trình bày trong bảng 3.1; bảng
3.2, và bảng 3.3.
Các kết quả này đã được công bố trên các công trình:“Phân tích hiệu năng
của tổ chức cache trong kiến trúc vi xử lý đa lõi”. Kỷ yếu Hội nghị khoa học công
nghệ thông tin và truyền thông ĐHBK Hà Nội, (10/2011), pp.67-73; “Đánh giá hiệu
năng của tổ chức cache trong hệ thống vi xử lý đa lõi, đa luồng”. Tạp chí Khoa học
& Công nghệ, các Trường Đại học kỹ thuật, Số 91, (2012), pp.54-58, và “Giải pháp
mới cho kiến trúc đa lõi nhằm nâng cao hiệu năng của bộ vi xử lý đa lõi, đa luồng”.
Tạp chí Khoa học & Công nghệ, Đại học Đà Nẵng, Số 11(60), Quyển II, (2012),
pp.78-83.
73
CMP đa luồng có 2-lõi
b)
Hình 3.6: Mô hình MCPFQN 2-lõi, đa luồng. a) với L2 cache chung và
b) với L3 cache chung.
Bảng 3.1: Giá trị trung bình của các thông số hiệu năng khi chip có 2-lõi với 8-luồng/lõi.
Mức độ sử dụng
Thời gian chờ đợi (ns)
Thời gian đáp ứng (ns)
Thông lượng (Số công việc/ns)
L2 cache chung
L3 cache chung
L2 cache chung
L3 cache chung
L2 cache chung
L3 cache chung
L2 cache chung
L3 cache chung
CPU1
0,32
0,79
0,82
1,31
0,19
0,53
0,39
1,04
L11cache
1,01
8,38
2,01
9.37
0,33
0,90
0,33
0,89
L12cache
-
5,27
-
7,76
0,67
0,26
-
-
Int+L2cache;
102,78
-
107,92
-
0,99
-
0,20
-
Int+L3cache
-
34,45
-
43,51
0,84
0,11
-
-
Membus+Mem 75,01
14,41 94,77
34,68
0,80
0,42
0,04
0,02
System
-
-
543,67 204,96
-
-
0,03
0,08
a)
74
120 100 80 60 40 20 0
L2cache chung L3cache chung
Hình 3.7: Biểu diễn giá trị trung bình của Thời gian chờ đợi ở các nút khi chip có 2-lõi, mỗi lõi xử lý 8-luồng với L2 cache chung và L3 cache chung.
Thời gian chờ đợi (ns)
Nhận xét
Thời gian chờ đợi tại các nút chia sẻ là rất lớn, nhưng với CMP đa luồng có 3
cấp cache thì thời gian chờ đợi tại nút Int+L3 cache giảm 66% và tại
MemoryBus+Mem giảm 81% so với thời gian chờ đợi tại Int+L2 cache và
MemoryBus+Mem của CMP đa luồng có 2 cấp cache.
600 500 400 300 200 100 0
L2cache chung
L3cache chung
Hình 3.8: Biểu diễn giá trị trung bình của Thời gian đáp ứng ở các nút khi chip có 2-lõi, mỗi lõi xử lý 8-luồng với L2 cache chung và L3 cache chung.
Thời gian đáp ứng (ns)
Nhận xét
Thời gian đáp ứng tại các nút chia sẻ là rất lớn, nhưng với CMP đa luồng có 3
cấp cache thì thời gian đáp ứng tại nút Int+L3 cache giảm 60%, tại
MemoryBus+Mem giảm 63% và hệ thống giảm 62% so với thời gian đáp ứng tại
Int+L2 cache, MemoryBus+Mem và hệ thống của CMP đa luồng có 2 cấp cache.
75
1.2 1 0.8 0.6 0.4 0.2 0
L2cache chung
L3cache chung
Hình 3.9: Biểu diễn giá trị trung bình của Mức độ sử dụng ở các nút khi chip có 2-lõi, mỗi lõi xử lý 8-luồng với L2 cache chung và L3 cache chung.
Mức độ sử dụng
Nhận xét
Mức độ sử dụng tại các nút chia sẻ là rất lớn, nhưng với CMP đa luồng có 3
cấp cache thì mức độ sử dụng tại nút Int+L3 cache giảm 15% và tại
MemoryBus+Mem giảm 48% so với mức độ sử dụng tại Int+L2 cache và
MemoryBus+Mem của CMP đa luồng có 2 cấp cache.
1.2 1 0.8 0.6 0.4 0.2 0
L2cache chung
L3cache chung
Hình 3.10: Biểu diễn giá trị trung bình của Thông lượng ở các nút khi chip có 2-lõi, mỗi lõi xử lý 8-luồng với L2 cache chung và L3 cache chung.
Thông lượng (Số công việc/ns)
Nhận xét
Thông lượng tại các nút chia sẻ giảm, nhưng với CMP đa luồng có 3 cấp cache
thì thông lượng tại nút Int+L3 cache giảm 45%, tại MemoryBus+Mem giảm 50%
và hệ thống tăng 167% so với thông lượng tại nút Int+L2 cache, MemoryBus+Mem
và hệ thống của CMP đa luồng có 2 cấp cache.
76
CMP đa luồng có 4-lõi
a)
Hình 3.11: Mô hình MCPFQN 4 lõi, đa luồng; a) với L2 cache chung và
b) với L3 cache chung.
b)
77 Bảng 3.2: Giá trị trung bình của các thông số hiệu năng khi chip có 4-lõi với 8-luồng/lõi.
Mức độ sử dụng
Thời gian chờ đợi (ns)
Thời gian đáp ứng (ns)
Thông lượng (Số công việc/ns)
L2 cache chung
L3 cache chung
L2 cache chung
L3 cache chung
L2 cache chung
L3 cache chung
L2 cache chung
L3 cache chung
CPU1
0,12
0,40
0,62
0,88
0,10
0,39
0,20
0,78
L11cache
0,33
2,15
1,34
3,13
0,17
0,66
0,16
0,66
L12cache
-
2,58
-
5,09
-
0,49
0,20
-
Int+L2cache ;
68,73
-
73,70
-
0,99
-
0,20
-
Int+L3cache
-
14,54
-
19,56
-
0,80
0,16
-
Membus+Mem
70,93
30,82
90,89
50,91
0,81
0,64
0,04
0,03
-
-
270,92
68,19
-
-
0,06
0,23
System
80 70 60 50 40 30 20 10 0
L2cache chung
L3cache chung
Hình 3.12: Biểu diễn giá trị trung bình của Thời gian chờ đợi ở các nút khi chip có 4-lõi, mỗi lõi xử lý 8-luồng với L2 cache chung và L3 cache chung.
Thời gian chờ đợi (ns)
Nhận xét
Thời gian chờ đợi tại các nút chia sẻ là rất lớn, nhưng với CMP đa luồng có 3
cấp cache thì thời gian chờ đợi tại nút Int+L3 cache giảm 79% và tại
MemoryBus+Mem giảm 57% so với thời gian chờ đợi tại Int+L2 cache và
MemoryBus+Mem của CMP đa luồng có 2 cấp cache.
78
250
200
150
100
50
0
L2cache chung
L3cache chung
Hình 3.13: Biểu diễn giá trị trung bình của Thời gian đáp ứng ở các nút khi chip có 4-lõi, mỗi lõi xử lý 8-luồng với L2 cache chung và L3 cache chung.
Thời gian đáp ứng (ns)
Nhận xét
Thời gian đáp ứng tại các nút chia sẻ là rất lớn, nhưng với CMP đa luồng có 3
cấp cache thì thời gian đáp ứng tại nút Int+L3 cache giảm 73%, tại
MemoryBus+Mem giảm 44% và hệ thống giảm 75% so với thời gian đáp ứng tại
Int+L2 cache, MemoryBus+Mem và hệ thống của CMP đa luồng có 2 cấp cache.
1.2 1 0.8 0.6 0.4 0.2 0
L2cache chung
L3cache chung
Hình 3.14: Biểu diễn giá trị trung bình của Mức độ sử dụng ở các nút khi chip có 4-lõi, mỗi lõi xử lý 8-luồng với L2 cache chung và L3 cache chung.
Mức độ sử dụng
Nhận xét
Mức độ sử dụng tại các nút chia sẻ là rất lớn, nhưng với CMP đa luồng có 3
cấp cache thì mức độ sử dụng tại nút Int+L3 cache giảm 19% và tại
MemoryBus+Mem giảm 21% so với mức độ sử dụng tại nút Int+L2 cache và
MemoryBus+Mem của CMP đa luồng có 2 cấp cache.
79
0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0
L2cache chung
L3cache chung
Hình 3.15: Biểu diễn giá trị trung bình của Thông lượng ở các nút khi chip có 4-lõi, mỗi lõi xử lý 8-luồng với L2 cache chung và L3 cache chung.
Thông lượng (Số công việc/ns)
Nhận xét
Thông lượng tại các nút chia sẻ giảm, nhưng với CMP đa luồng có 3 cấp cache
thì thông lượng tại nút Int+L3 cache giảm 20%, tại MemoryBus+Mem giảm 25%
và hệ thống tăng 283% so với thông lượng tại nút Int+L2 cache, MemoryBus+Mem
và hệ thống của CMP đa luồng có 2 cấp cache.
CMP đa luồng có 8-lõi
a)
80
Hình 3.16: Mô hình MCPFQN 8 lõi, đa luồng; a) với L2 cache chung và
b) với L3 cache chung.
Bảng 3.3: Giá trị trung bình của các thông số hiệu năng khi chip có 8-lõi với 8-luồng/lõi.
Thời gian chờ đợi (ns)
Thời gian đáp ứng (ns)
Mức độ sử dụng Thông lượng (Số công việc/ns)
L2 cache chung
L3 cache chung
L2 cache chung
L3 cache chung
L2 cache chung
L3 cache chung
L2 cache chung
L3 cache chung
CPU1
0,03
0,13
0,52
0,63
0,05
0,22
0,10
0,44
L11cache
0,09
0,54
1,09
1,55
0,08
0,37
0,08
0,37
L12cache
-
0,90
-
3,41
-
0,28
0,11
-
Int+L2cache ;
51,36
-
56,19
-
0,99
-
0,20
-
Int+L3cache
-
17,09
-
22,12
-
0,87
0,17
-
Membus+Mem
67,42
36,26
86,86
55,45
0,80
0,70
0,04
0,03
System
-
-
137,00 30,58
-
-
0,12
0,52
b)
81
80 70 60 50 40 30 20 10 0
L2cache chung
L3cache chung
Hình 3.17: Biểu diễn giá trị trung bình của Thời gian chờ đợi ở các nút khi chip có 8-lõi, mỗi lõi xử lý 8-luồng với L2 cache chung và L3 cache chung.
Thời gian chờ đợi (ns)
Nhận xét
Thời gian chờ đợi tại các nút chia sẻ là rất lớn, nhưng với CMP đa luồng có 3
cấp cache thì thời gian chờ đợi tại nút Int+L3 cache giảm 67% và tại
MemoryBus+Mem giảm 46% so với thời gian chờ đợi tại nút Int+L2 cache và
MemoryBus+Mem của CMP đa luồng có 2 cấp cache.
160 140 120 100 80 60 40 20 0
L2cache chung
L3cache chung
Hình 3.18: Biểu diễn giá trị trung bình của Thời gian đáp ứng ở các nút khi chip có 8-lõi, mỗi lõi xử lý 8-luồng với L2 cache chung và L3 cache chung.
Thời gian đáp ứng (ns)
Nhận xét
Thời gian đáp ứng tại các nút chia sẻ là rất lớn, nhưng với CMP đa luồng có 3
cấp cache thì thời gian đáp ứng tại nút Int+L3 cache giảm 61%, tại
MemoryBus+Mem giảm 36% và hệ thống giảm 78% so với thời gian đáp ứng tại
Int+L2 cache, MemoryBus+Mem và hệ thống của CMP đa luồng có 2 cấp cache.
82
1.2
1
0.8
0.6
0.4
0.2
0
L2cache chung
L3cache chung
Hình 3.19: Biểu diễn giá trị trung bình của Mức độ sử dụng ở các nút khi chip có 8-lõi, mỗi lõi xử lý 8-luồng với L2 cache chung và L3 cache chung.
Mức độ sử dụng
Nhận xét
Mức độ sử dụng tại các nút chia sẻ là rất lớn, nhưng với CMP đa luồng có 3
cấp cache thì mức độ sử dụng tại nút Int+L3 cache giảm 12% và tại
MemoryBus+Mem giảm 13% so với mức độ sử dụng tại nút Int+L2 cache và
MemoryBus+Mem của CMP đa luồng có 2 cấp cache.
0.6 0.5 0.4 0.3 0.2 0.1 0
L2cache chung
L3cache chung
Hình 3.20: Biểu diễn giá trị trung bình của Thông lượng ở các nút khi chip có 8-lõi, mỗi lõi xử lý 8-luồng với L2 cache chung và L3 cache chung.
Thông lượng (Số công việc/ns)
Nhận xét
Thông lượng tại các nút chia sẻ giảm, nhưng với CMP đa luồng có 3 cấp cache
thì thông lượng tại nút Int+L3 cache giảm 15%, tại MemoryBus+Mem giảm 25%
và hệ thống tăng 333% so với thông lượng tại nút Int+L2 cache, MemoryBus+Mem
và hệ thống của CMP đa luồng có 2 cấp cache.
83
3.3.2.2. Đánh giá hiệu năng các chip đa xử lý, đa luồng
Trong kiến trúc CMP đa luồng, đa cấp cache với cấp cache cuối cùng là cache
chia sẻ thông minh, nhưng cũng là nút tập trung lưu lượng của hệ thống nên gây ra
nghẽn nút cổ chai. Do đó, ở các kết quả trên cho thấy rằng: đối với CMP đa luồng
có 3 cấp cache, tại nút Interconnect+L3 cache và MemoryBus+Mem có thời gian
chờ đợi, thời gian đáp ứng, và mức độ sử dụng giảm đi nhiều so với tại nút
Interconnect+L2 cache của CMP đa luồng chỉ có 2 cấp cache với L2 cache chia sẻ.
Đồng thời thông lượng của CMP đa luồng có 3 cấp cache cũng lớn hơn so với thông
lượng của CMP đa luồng có 2 cấp cache.
Mặt khác, để đánh giá hiệu năng của CMP đa luồng có 3 cấp cache so với
CMP đa luồng có 2 cấp cache. Theo các số liệu đã cho ở mục 3.3.1, xác định được
thời gian trung bình truy nhập bộ nhớ (AMAT) của từng kiến trúc:
Đối với chip đa lõi có 3 cấp cache (L1, L2, L3)
= L1 hit time + L1 miss rate(L2 hit time
L1L2L3
AMAT + L2 miss rate(L3 hit time + L3 miss rate(L3 miss penalty)) = 1ns + (0, 3)(2,5 + (0, 2)(5ns + (0, 2)(40ns))) = 2,53ns
Thời gian trung bình truy nhập bộ nhớ được tính theo công thức (2.9a)
Đối với chip đa lõi có 2 cấp cache (L1, L2)
AMAT
L1L2
= L1 hit time + L1 miss rate(L2 hit time + L2 miss rate(L2 miss penalty)) = 1ns + (0,3)(2,5ns + (0,2)(40ns))
= 4,5ns
Thời gian trung bình truy nhập bộ nhớ được tính theo công thức (2.5a)
Như vậy, với CMP đa luồng có 3 cấp cache thì thời gian trung bình truy nhập
bộ nhớ giảm đi: 4,15 – 2,53 = 1,62ns so với CMP đa luồng có 2 cấp cache.
Ngoài ra, tác giả cũng sử dụng mô hình mạng Petri ngẫu nhiên suy rộng
(GSPN) để thực hiện đánh giá hiệu năng của tổ chức cache đa cấp trong CMP đa
luồng có 4-lõi. Kết qủa cho thấy rằng với CMP đa luồng chỉ có 2 cấp cache với L2
cache chia sẻ cho các lõi thì số lượng yêu cầu đợi phục vụ tại các vị trí L2 cache và
84 Memory lớn hơn nhiều so với tại các ví trí L3 cache và Memory của CMP đa luồng
có 3 cấp cache với L3 cache chia sẻ cho các lõi. Đồng thời thông lượng tại các
chuyển tiếp của L2 cache và Memory của bộ xử lý 2 cấp cache cũng lớn hơn so với
thông lượng tại các chuyển tiếp L3 cache và Memory của bộ xử lý 3 cấp cache.
Điều này chứng tỏ rằng với CMP đa luồng có 3 cấp cache làm giảm đáng kể độ trễ
và thời gian truy cập bộ nhớ, do đó giảm nghẽn nút cổ chai tại các cấp cache chia sẻ
và tăng hiệu năng của bộ xử lý. Kết quả này đã được công bố trong công trình:
“Using Generalized stochastic Petri net for performance evaluation of cache
organization in multicore processor chips”. Journal of Science and Technology,
Technical Universities in Vietnamese, No 98, (2014), pp.15-22.
Như vậy, kiến trúc CMP đa luồng có 3 cấp cache với L3 cache chia sẻ cho tất
cả các lõi, các lõi xử lý đa luồng cho kết quả khả quan, giảm được thời gian trung
bình truy nhập bộ nhớ, giảm nghẽn nút cổ chai tại cấp cache chia sẻ. Do đó, nâng
cao hiệu năng của bộ xử lý.
3.4. Kết luận chương 3
- Giới thiệu cơ sở lý thuyết MCPFQN được sử dụng để phân tích và đánh giá
hiệu năng của kiến trúc CMP đa luồng.
- Sử dụng mô hình MCPFQN cho kiến trúc CMP đa luồng để đánh giá hiệu
năng của tổ chức cache đa cấp (2 cấp và 3 cấp cache), với cache cấp cuối là cache
chia sẻ thông minh.
- Thực hiện mô phỏng bằng JMT v.0.8.0 để đánh giá hiệu năng của các tổ
chức cache trong kiến trúc CMP đa luồng.
Như vậy, với kiến trúc CMP đa luồng có tổ chức cache ba cấp, trong đó L3
cache chia sẻ cho tất cả các lõi đạt được hiệu năng xử lý là tốt nhất.
85 Chương 4
GIẢI PHÁP TỐI ƯU HÓA HIỆU NĂNG CỦA TỔ CHỨC
CACHE TRONG KIẾN TRÚC CHIP ĐA XỬ LÝ, ĐA LUỒNG
4.1. Kiến trúc cụm lõi cho chip đa xử lý, đa luồng
4.1.1. Khái quát
Để nâng cao hiệu năng của các CMP đa luồng có 2 cấp cache với L2 cache
chia sẻ cho tất cả các lõi, các nhà nghiên cứu và sản xuất chip đã đề xuất nhiều giải
pháp kiến trúc cụm lõi cho các CMP đa luồng như: Bộ xử lý Xeon 4-lõi, của Intel
có 2 cụm mỗi cụm 2-lõi được chia sẻ bởi L2 cache [8], bộ xử lý Rock 16-lõi của
Sun có 4 cụm mỗi cụm 4-lõi được chia sẻ bởi L1 cache, và L2 cache chia sẻ cho tất
cả các lõi [29, 35], Ketan Bahulkar và những người khác cũng đề xuất kiến trúc
cụm có 8-lõi trong đó có 2 cụm 4-lõi với L2 cache chia sẻ cho 2-lõi [33]. Với kiến
trúc CMP đa luồng 3 cấp cache, bên cạnh tổ chức cache có L1 và L2 cache riêng
cho mỗi lõi và L3 cache chia sẻ cho tất cả các lõi, các nhà nghiên cứu và sản xuất
chip cũng đề xuất kiến trúc cụm lõi cho các CMP đa luồng như: bộ xử lý
Dunnington 6-lõi của Intel với 3 cấp cache có 3 cụm mỗi cụm 2-lõi được chia sẻ bởi
L2 cache còn L3 cache chia sẻ cho tất cả các lõi [29, 56], các bộ xử lý Nehalem 8-
lõi của Intel và Opteron 8-lõi của AMD gồm có 2 chip trong một đóng vỏ, trong đó
mỗi chip có 4-lõi được chia sẻ bởi L3 cache [13, 14, 64, 65]. Với những kiến trúc
này, khi chip càng tích hợp nhiều lõi thì L3 cache chia sẻ càng không khả thi thực
hiện bên trong chip vì kích thước cần thiết để thực hiện cache chia sẻ cho tất cả các
lõi trở nên quá lớn, độ trễ lớn gây nghẽn lưu lượng trên chip và tốc độ giảm đi, thời
gian truy nhập bộ nhớ lớn dẫn đến làm giảm hiệu năng của bộ xử lý.
Để khắc phục các nhược điểm trên, Luận án đề xuất giải pháp kiến trúc cụm
lõi bằng cách nhóm các lõi thành từng cụm với L3 cache riêng cho mỗi cụm và sử
dụng các cấu hình mạng liên kết thích hợp thì lưu lượng được phân chia đều cho các
L3 cache chia sẻ, sẽ giảm được tranh chấp tài nguyên tại L3 cache chia sẻ, đảm bảo
trễ và thời gian phục vụ trung bình nhỏ, khi đó sẽ đem lại hiệu năng xử lý của chip
cao hơn. Giải pháp này được công bố trong công trình “Giải pháp mới cho kiến trúc
86 đa lõi nhằm nâng cao hiệu năng của bộ vi xử lý đa lõi, đa luồng”. Tạp chí Khoa
học & Công nghệ, Đại học Đà Nẵng, Số 11(60), Quyển II, (2012), pp.78-83.
Hình 4.1 là mô hình đề xuất của CMP đa luồng được nhóm thành n cụm, mỗi
CPU mn
CPU 1n
CPU 2n
CPU 11
CPU m1
CPU 21
T
T
T
T
T
T
T
T
T
T
T
T
L1
L1
L1
L1
L1
L1
L2
L2
L2
L2
L2
L2
Interconnect
Interconnect
L31 cache_1
L3n cache_n
Memory bus
Main Memory
Hình 4.1: Kiến trúc CMP đa luồng gồm n cụm lõi, và L3 cache riêng cho mỗi cụm.
cụm gồm m lõi, và L3 cache chia sẻ riêng cho mỗi cụm.
Trong đó, L1 cache và L2 cache riêng tương ứng cho từng lõi. T là luồng, ở đây là
mỗi lõi xử lý k-luồng.
4.1.2. Mô hình MCPFQN cho kiến trúc cụm lõi
4.1.2.1. Mô hình MCPFQN tổng quát của kiến trúc cụm lõi
Dựa vào MCFPQN đưa ra mô hình MCFPQN của kiến trúc cụm lõi để thực
hiện phân tích cho kiến trúc cụm lõi ở hình 4.1. Mô hình này được trình bày như
hình 4.2.
Mô hình này là trường hợp tổng quát một chip gồm n cụm lõi, mỗi cụm có m
lõi, và n L3 cache chia sẻ. Mỗi lõi có thể xử lý k luồng, nên mỗi lõi được biểu diễn
1/ μ ; i = 1,…, k. Các cấp cache riêng (L1 và L2 cache) và bộ nhớ chính được biểu
Ti
thành một nút hàng đợi M/G/m-PS và k luồng với thời gian phục vụ trung bình là
diễn bằng các nút hàng đợi M/M/1-FCFS. L3 cache chia sẻ cho các lõi trong một
cụm thông qua mạng liên kết (Interconnect), do đó có thể gộp Interconnect và L3
87 cache thành một nút là Interconnect+L3 cache được biểu diễn bằng các nút hàng đợi
μT1
M/M/1-FCFS.
Cluster 1 CPU 11
L11cache_1
pL11L12
p1L11
μT2
L12cache_1 μL2
μL1
p11
pL11,1
μTk
pL12,1
pL12L3
MemoryBus+Mem
Interconnect + L3cache_1
μm1
pL3_1Mem
μL3
pL22L3
μm2
pL3,i
pL3_2Mem pL3_nMem
μmk
pMemcore
CPU m1
μT1
Lm1cache_1
pmLm1
pLm1Lm2
μT2
μL1
Lm2cache_1 μL2
pmm
μTk
pLm1,m
pLm2,m
pLm2L3
μT1
Cluster n CPU 1n
L11cache_n
L12cache_n
pL11L12
p1L11
μT2
μL1
μL2
p11
μTk
pL11,1
pL12,1
pL12L3
Interconnect + L3cache_n
μL3
pL22L3
pL3,i
CPU mn
μT1
Lm1cache_n
Lm2cache_n
PmL11
μT2
μL1
μL2
pmm
pL12,m
pLm2L3
μTk
pL11,m
Hình 4.2: Mô hình MCPFQN tổng quát của kiến trúc cụm lõi cho ở hình 4.1.
88
MemoryBus+Mem
µm1
CPU 11
µT1
L11cache_1
L12cache_1
Interconnect+L3cache_1 pL12L13
pL3Mem
p1L11
pL11L12
µm2
µT2
µL3
µL1
µL2
pL11,1
p11
pL3,1
µmk
pL12,1
µTm
PMem1
Hình 4.3: Mô hình MCPFQN rút gọn của kiến trúc cụm lõi.
4.1.2.2. Mô hình MCPFQN rút gọn của kiến trúc cụm lõi
Ở mô hình này mạng gồm 5 nút: i = 1, 2, 3, 4, 5.
Trong đó: i = 1 là nút hàng đợi CPU11; i = 2 là nút hàng đợi L11cache_1 ;
i = 3 là nút hàng đợi L12cache_1;
i = 4 là nút hàng đợi Interconnect+L3cache_1;
i = 5 là nút hàng đợi MemoryBus+Mem
1. Thời gian phục vụ trung bình tại các nút
0,5ns
1ns
2,5ns
5ns
= 40ns
1
1
1
1
1 μ
1
2
3
4
5
; ; ;
2. Xác suất định tuyến tại các nút
p11 = 0,15; p12 = 0,85; p21 = 0,7; p23 = 0,3; p31 = 0,8; p34 = 0,2;
p = 41
p = 51
1 n × m
0,8 m
(n× m: số lõi trên chip) (m: số lõi trên cụm); p45 = 0,2;
3. Tốc độ đến tại các nút
ν = i
ji
5 ν p j j=1
với i là số nút của mạng
4. Tính toán các thông số hiệu năng
Để tính toán các thông số hiệu năng theo thuật toán phân tích giá trị trung bình
(MVA) lần lượt thực hiện theo các bước:
E N (0) = E N (0) = E N (0) = E N (0) = E N 0 = 0
1
2
4
3
5
1π (0 \ 0) = 1 ;
1π (1 \ 0) = 0
Bước 1: Khởi tạo i = 1, 2, 3, 4, 5
89
Bước 2: Lặp theo số lượng công việc n = 1, 2,…, N
Bắt đầu từ n = 1
Bước 2.1: Thời gian đáp ứng trung bình tại các nút được tính theo công thức
(3.17)
m - j -1 π 0 \ 0
E R (1) = 1
1
i
im -2 j=1
1 m μ i 1
1+ E N (1) + 1
- Nút 1 (CPU11)
E R (1) = 2
2
1 + E N (1)
1 μ
2
- Nút 2 (L11 cache_1)
E R (1) = 3
3
1 + E N (1)
1 μ
3
- Nút 3 (L12 cache_1)
E R (1) = 4
4
1 + E N (1)
1 μ 4
- Nút 4 (Interconnect+L3 cache_1)
E R (1) = 5
5
1 + E N (1)
1 μ
5
- Nút 5 (MemoryBus+Mem)
Bước 2.2: Thông lượng toàn mạng được tính theo công thức (3.18)
λ 1 =
5
i
1
i=1
ν E R 1 i
λ 1 = λ 1 ν
i
i
Thông lượng tại các nút được tính theo công thức (3.19)
Bước 2.3: Số lượng trung bình các công việc tại các nút được tính theo công
thức (3.20)
90
E N 1 = λ 1 E R 1 ν
i
i
i
Bước 2.4: Thời gian chờ đợi trung bình các công việc tại các nút được tính
E W 1 = E R 1 -
i
i
1 μ
i
theo công thức (3.21)
Bước 2.5: Mức độ sử dụng tại các nút được tính theo công thức (3.22).
U = i
λ i μ m i
i
với mi là số server của nút i
Lặp lại cho n = 2; n = 3; n = 4; …; n = N
4.1.3. Kết quả mô phỏng và đánh giá hiệu năng cho kiến trúc cụm lõi
4.1.3.1. Kết quả mô phỏng cho kiến trúc cụm lõi
Để tự động tính giá trị các thông số hiệu năng theo MVA, sử dụng công cụ
JMT v.0.8.0 [22, 73], và thực hiện theo kịch bản mô phỏng được trình bày trong
phần Phụ lục 2. Ở đây, thực hiện mô phỏng cấu trúc ở hình 4.3 cho trường hợp:
CMP đa luồng có 2 cụm, mỗi cụm 4-lõi, mỗi lõi xử lý 8-luồng được trình bày như
Hình 4.4: Mô hình MCFPQN 2-cụm lõi, mỗi cụm 4-lõi, đa luồng.
hình 4.4 .
91
Kết quả mô phỏng, thu được các thông số hiệu năng (thời gian chờ đợi, thời
gian đáp ứng, mức độ sử dụng, thông lượng) ở các nút CPU, các cấp cache L1, L2,
L3 cache. Các kết quả ở nút CPU và các cấp cache L1, L2, L3 của các lõi là tuơng
đương nhau. Do đó, luận án chỉ trình bày kết quả của các nút CPU11, L11 cache_1,
L21 cahe_1, Int+L3 cache_1, MemoryBus+Mem và của hệ thống (System) như
bảng 4.1. Ở đây, kết hợp với kết quả của CMP đa luồng có 8-lõi có 3 cấp cache với
Bảng 4.1: Giá trị trung bình của các thông số hiệu năng khi hệ thống có 2 cụm, mỗi cụm 4- lõi với L3 cache riêng cho mỗi cụm, và L3 cache chung, mỗi lõi xử lý 8-luồng.
Thời gian chờ đợi (ns)
Thời gian đáp ứng (ns)
Mức độ sử dụng
Thông lượng (Số công việc/ns)
L3 cache chung
L3 cache chung
L3 cache chung
L3 cache chung
L3 cache riêng /cụm
L3 cache riêng /cụm
L3 cache riêng /cụm
L3 cache riêng /cụm
CPU11
0,13
0,14
0,63
0,64
0,22
0,24
0,44
0,48
L11cache_1
0,54
0,61
1,55
1,61
0,37
0,41
0,37
0,41
L12cache_1
0,90
0,99
3,41
3,54
0,28
0,30
0,11
0,12
Int+L3cache_1
17,09
4,19
22,12
9,21
0,87
0,48
0,17
0,10
Membus+Mem
36,26
44,61
55,45
64,32
0,70
0,78
0,03
0,04
System
-
-
30,58
27,94
-
-
0,52
0,57
L3 cache chia sẻ cho tất cả các lõi (ở mục 3.3.2.1) để so sánh và đánh giá hiệu năng.
50 40 30 20 10 0
L3cache chung
L3cache riêng/cụm
Hình 4.5: Biểu diễn giá trị trung bình của Thời gian chờ đợi ở các nút khi hệ thống có 2- cụm, L3 cache riêng cho mỗi cụm và L3 cache chung cho 8-lõi, mỗi lõi xử lý 8-luồng.
Thời gian chờ đợi (ns)
92
Nhận xét
Thời gian chờ đợi tại các nút chia sẻ là rất lớn, nhưng với CMP đa luồng có
kiến trúc cụm lõi, 3 cấp cache với L3 cache riêng/cụm thì thời gian chờ đợi tại nút
Int+L3 cache giảm 75% và tại MemoryBus+Mem tăng 23% so với thời gian chờ
đợi tại nút Int+L3 cache và MemoryBus+Mem của CMP đa luồng có 3 cấp cache
với L3 cache chung cho tất cả các lõi.
70 60 50 40 30 20 10 0
L3cache chung
L3cache riêng/cụm
Hình 4.6: Biểu diễn giá trị trung bình của Thời gian đáp ứng ở các nút khi hệ thống có 2- cụm, L3 cache riêng cho mỗi cụm và L3 cache chung cho 8-lõi, mỗi lõi xử lý 8-luồng.
Thời gian đáp ứng (ns)
Nhận xét
Thời gian đáp ứng tại các nút chia sẻ là rất lớn, nhưng với CMP đa luồng có
kiến trúc cụm lõi, 3 cấp cache với L3 cache riêng/cụm thì thời gian đáp ứng tại nút
Int+L3 cache giảm 58%, tại MemoryBus+Mem tăng 16% và hệ thống giảm 9% so
với thời gian đáp ứng tại nút Int+L3 cache, MemoryBus+Mem và hệ thống của
CMP đa luồng có 3 cấp cache với L3 cache chung cho tất cả các lõi.
1 0.8 0.6 0.4 0.2 0
L3cache chung
L3cache riêng/cụm
Hình 4.7: Biểu diễn giá trị trung bình của Mức độ sử dụng ở các nút khi hệ thống có 2- cụm, L3 cache riêng cho mỗi cụm và L3 cache chung cho 8-lõi, mỗi lõi xử lý 8-luồng.
Mức độ sử dụng
93
Nhận xét
Mức độ sử dụng tại các nút chia sẻ là rất lớn, nhưng với CMP đa luồng có kiến
trúc cụm lõi, 3 cấp cache với L3 cache riêng/cụm thì mức độ sử dụng tại nút Int+L3
cache giảm 45% và tại MemoryBus+Mem tăng 11% so với mức độ sử dụng tại
Int+L3 cache và MemoryBus+Mem của CMP đa luồng có 3 cấp cache với L3 cache
chung cho tất cả các lõi.
0.6 0.5 0.4 0.3 0.2 0.1 0
L3cache chung
L3cache riêng/cụm
Hình 4.8: Biểu diễn giá trị trung bình của Thông lượng ở các nút khi hệ thống có 2-cụm, L3 cache riêng cho mỗi cụm và L3 cache chung cho 8-lõi, mỗi lõi xử lý 8-luồng.
Thông lượng (Số công việc/ns)
Nhận xét
Thông lượng tại các nút chia sẻ là giảm, nhưng với CMP đa luồng có kiến trúc
cụm lõi, 3 cấp cache với L3 cache riêng/cụm thì thông lượng tại nút Int+L3 cache
giảm 41%, tại MemoryBus+Mem tăng 33% và hệ thống tăng 10% so với thông
lượng tại nút Int+L3 cache, MemoryBus+Mem và hệ thống của CMP đa luồng có 3
cấp cache với L3 cache chung cho tất cả các lõi.
4.1.3.2. Đánh giá hiệu năng cho kiến trúc cụm lõi
Đối với CMP đa luồng 8-lõi có kiến trúc cụm lõi với L3 cache riêng cho mỗi
cụm, các nút Interconnect+L3 cache riêng cho mỗi cụm là các nút tập trung lưu
lượng của hệ thống có thể gây ra nghẽn nút cổ chai, do đó ở các kết quả trên cho
thấy thời gian chờ đợi và thời gian đáp ứng tại các nút này rất lớn, mức độ sử dụng
tăng và thông lượng giảm so với tại các nút CPU, L11 cache và L12 cache. Nhưng
so với bộ xử lý 8-lõi với L3 cache chia sẻ chung cho các lõi thì thời gian chờ đợi,
thời gian đáp ứng, mức độ sử dụng tại các nút Interconnect + L3 cache và thời gian
94 đáp ứng của hệ thống giảm đi đáng kể. Đồng thời thông lượng của hệ thống tăng lên
rất nhiều.
Như vậy, kiến trúc cụm lõi cho kiến trúc CMP đa luồng có 3 cấp cache với L3
cache riêng cho từng cụm, các lõi xử lý đa luồng đã đề xuất thu được những kết quả
khả quan, giảm được thời gian trung bình truy nhập bộ nhớ, giảm nghẽn nút cổ chai
tại các nút chia sẻ, nâng cao hiệu năng của bộ xử lý.
4.2. Lựa chọn cấu hình mạng liên kết trên chip
4.2.1. Khái quát
Mạng liên kết trên chip (OCIN) có ảnh hưởng rất lớn đến hiệu năng của CMP
đa luồng. Hiện nay, có nhiều cấu hình OCIN đang được sử dụng trên CMP đa luồng
như: Ring, Crossbar, 2DMesh đã được giới thiệu trong mục 1.2.3, các cấu hình này
có trễ truyền thông lớn dẫn đến làm suy giảm hiệu năng xử lý của chip và khả năng
mở rộng bị hạn chế, do đó các cấu hình này chỉ phù hợp với các chip có quy mô
nhỏ. Với xu hướng tiếp tục gia tăng của số lượng lõi và các thành phần trên CMP đa
luồng, nhưng khi đó sẽ làm tăng tính phức tạp của các cấu hình OCIN [28, 51]. Các
nhà nghiên cứu và sản xuất chip hiện nay đang tập trung nghiên cứu một số cấu
hình như 2DMesh, 3DMesh, 2DTorus, 3DTorus [44, 51, 55, 61, 71] nhưng các
nghiên cứu này chưa đưa ra cấu hình OCIN nào phù hợp với CMP đa luồng.
Luận án tiến hành đánh giá một số cấu hình OCIN đang được quan tâm thông
qua trễ truyền thông và mức tăng tốc xử lý trên chip, để từ đó lựa chọn cấu hình
mạng liên kết phù hợp với kiến trúc CMP đa luồng. Giải pháp này được công bố
trong công trình“Ảnh hưởng của tổ chức cache đa cấp và mạng liên kết đến hiệu
năng của chip đa lõi”. Tạp chí Khoa học & Công nghệ, Đại học Đà Nẵng, (2014).
4.2.2. Đề xuất công thức tính trễ truyền thông trung bình cho mạng liên kết
trên chip
Hiệu năng của CMP đa luồng với đa cấp cache chỉ được nâng cao đáng kể khi
chúng được sử dụng cho các tính toán song song. Các ứng dụng song song thường
chia ra hai phần: phần thực hiện tuần tự vốn có và phần thực hiện song song. Khi
đó, theo luật Amdahl [7, 19].
95
1
S =
Mức tăng tốc tối đa khi bỏ qua trễ truyền thông được xác định:
(1-f)+
f n
(4.1)
Trong đó:
- f: tỷ lệ phần thực hiện song song.
- 1-f : tỷ lệ phần thực hiện tuần tự.
T (p) + T (p) seq
par
S(p, n) =
Mức tăng tốc S(p, n) khi tính đến trễ truyền thông được xác định:
T (p) + seq
+ T (p, n) O
T (p) par n
(4.2)
Trong đó:
- p: kích thước chương trình,
- n: số lõi xử lý,
- Tseq(p): thời gian thực hiện phần tuần tự,
T
(p) + T
(p)
seq
par
S(p, n) =
- Tpar(p): thời gian thực hiện phần song song, - TO(p,n): trễ truyền thông giữa các lõi xử lý. Khi n (số lõi trên chip) lớn, thì:
T
seq
(p) + T (p, n) O
(4.3)
Ở đây, sử dụng công thức (4.3) để phân tích và xác định trễ truyền thông cho
các cấu hình OCIN.
Nếu phần thực hiện song song gồm các luồng chạy song song trên từng lõi xử
lý thì mức tăng tốc phụ thuộc vào thời gian thực hiện phần tuần tự Tseq(p) và trễ
truyền thông TO(p, n) giữa các luồng chạy trên các lõi. Lập trình song song phải
đảm bảo sao cho Tseq(p) và TO(p, n) tối thiểu nhất.
Tổng thời gian thực hiện chương trình trên chip đa lõi với tổ chức cache đa
cấp, chính là thời gian thực hiện của CPU (CPUexecution time) = Tseq(p) + Tpar(p).
96
Để xác định các thời gian thực hiện của CPU, có thể giả định rằng một chương
trình ứng dụng được biên dịch để chạy trên một máy tính với các thông số được
cung cấp bao gồm:
- Tổng số lệnh trong một chương trình là I, được xác định bằng số
CPI
lệnh/chương trình (instructions per program).
execution
- Một lệnh trung bình cần một số chu kỳ đồng hồ để thực hiện là ,
được xác định bằng số chu kỳ đồng hồ/lệnh (clock cycles per instruction).
- Trung bình với một lệnh số chu kỳ đồng hồ trì hoãn bộ nhớ là MSPI được
xác định bằng số chu kỳ đồng hồ trì hoãn bộ nhớ/lệnh (memory stalls clock cycle
per instruction).
- Thời gian của một chu kỳ đồng hồ là C = 1/tốc độ đồng hồ (1/clock rate),
được xác định bằng giây/chu kỳ (seconds/cycle).
Trong chương 3 đã phân tích lựa chọn kiến trúc của CMP đa luồng có 3 cấp
cache với L3 cache chia sẻ cho tất cả các lõi, và các lõi liên kết với nhau thông qua
các thành phần chuyển mạch kết nối với L3 cache như hình 4.9. Do đó, sử dụng
kiến trúc CMP đa luồng có 3 cấp cache này để xác định thời gian thực hiện chương
CPU n
CPU 1
CPU 2
L1D
L1I L1D
L1D
L1I
L1I
trình của các CPU.
…
L2
L2
L2
sw n
sw 1
sw 2
Interconnect
L3
Memory Bus
MM
Hình 4.9: Chip đa lõi với tổ chức cache 3 cấp: L1I, L1D, L2 riêng cho mỗi lõi và L3 cache chia sẻ cho tất cả các lõi.
Mặc định rằng một chương trình có các thông số sau: tổng số lệnh I =
10000000 lệnh, CPIexecution = 2,5 chu kỳ/lệnh, tốc độ đồng hồ CPU (CPU clock rate)
= 2GHz. Giả sử trong 1000 lệnh tham chiếu bộ nhớ của CPU có 150 lệnh trượt L1
97 cache hay L1 miss rate = 0,15, thời gian trúng L1 cache (L1 hit time) = 2 chu kỳ
đồng hồ; có 45 lệnh trượt L2 cache hay L2 miss rate = 0,3, L2 hit time = 6 chu kỳ
đồng hồ; có 9 lệnh trượt L3 cache tham chiếu vào bộ nhớ chính hay L3 miss rate =
0,2; L3 hit time = 20 chu kỳ đồng hồ; L3 miss penalty = 96 chu kỳ đồng hồ; trong
một lệnh thời gian truy cập bộ nhớ (MAPI) = 1,5 chu kỳ đồng hồ.
MAPI× L1 miss rate ×(L2 hit time + L2 miss rate
L1L2L3 =
MSPI ×(L3 hit time + L3 miss rate × L3 miss penalty)) = 1,5×
×96))
× 0,3 (20
× 0,15 (6
0,2
Sử dụng các công thức (2.23a) xác định được MSPIL1L2L3:
= 4 chu kỳ đồng hồ
Khi đó, thời gian thực hiện của CPU được xác định:
execution
execution
7
L1L2L3 -9 = (10 ) × (2, 5 + 4) × (0, 5×10 ) = 0, 033s
CPU time = I× (CPI + MPSI ) × C
Suy ra:
CPUexecution time = Tseq(p) + Tpar(p) = 0,033s.
Để xác định ảnh hưởng của TO(p, n), cho rằng thời gian thực hiện tuần tự bằng
=
10% tổng CPUexecution time, do đó Tseq(p) = 0,003s. Khi đó.
S(p, n)
0,033 0,003 T (p,n) +
O
(4.4)
Bảng 4.2: Các thông số của các cấu hình mạng liên kết trên CMP đa luồng [15, 24].
Mạng
Degree (d) Aver. Hop count (H)
Bisection width (B)
Ring
2
2DMesh
4
2 N1/2
2DTorus
4
(N+1)/3 (2/3)N1/2 (1/2)N1/2
2N1/2
3DMesh
6
3DTorus
6
N1/3 (3/4)N1/3
N2/3 2N2/3
TO(p, n) phụ thuộc vào cấu hình mạng liên kết các lõi trên chip.
Trong đó:
98
- N = n: tổng số nút chuyển mạch trong mạng liên kết (chính là tổng số lõi
trên chip).
Để phân tích ảnh hưởng của OCIN đến hiệu năng của CMP đa luồng, ở đây
chọn một số cấu hình OCIN phổ biến với các tham số đặc trưng được trình bày
trong bảng 4.1.
Luận án đề xuất công thức tính trễ truyền thông trung bình TO(p, n) trong
+ t
+ t
)π
CMP đa luồng theo khoảng cách định tuyến trung bình giữa các nút (H) như sau:
syn
sw
sw
Inter-switch
OT (p, n) = Hpw (t
(4.5)
Trong đó:
- tInter-switch: trễ giữa các nút chuyển mạch.
- tsw: trễ của nút chuyển mạch.
trễ cho đồng bộ truyền thông giữa các nút gửi và nhận gói dữ liệu. - tsyn:
Cho rằng trễ tsw + tsyn = 1 chu kỳ đồng hồ, trễ tInter-switch = 1 chu kỳ đồng hồ, 1
chu kỳ đồng hồ được xác định bằng tốc độ đồng hồ của chip vì mạng liên kết các lõi
với L3 cache bên trong chip.
- w: kích thước của gói dữ liệu (bit).
- p :số lượng gói dữ liệu.
π
sw :
- xác suất định tuyến chuyển dữ liệu qua chuyển mạch mạng liên kết đến
lõi khác.
Thực tế, mỗi lõi đều có thể định tuyến lưu lượng đến cache cục bộ, vì vậy trễ
truyền thông trung bình giữa các nút chuyển mạch phải tính đến các xác suất định
tuyến lưu lượng của từng lõi πcore và xác suất định tuyến đến cấp cache chia sẻ
π
+ π
+ π
core
sw
cache
= 1 (4.6)
πcache. Các xác suất này thỏa mãn điều kiện:
Nếu tỷ số trúng L3 cache cao thì πsw sẽ nhỏ, khi đó TO cũng nhỏ theo.
Để phân tích, chọn πsw = 0,2 và w = 8 bit. Khi đó:
99
TO = Hp(8)(2)(0,2) = 3,2Hp (4.7)
Để xác định các công thức tính độ trễ truyền thông trung bình cho các cấu
hình OCIN, ở đây kết hợp công thức (4.7) với các giá trị của H đã cho ở bảng 4.1.
=
T
p
(n +1)p;
ORing
T
=
p n
2,13p n ;
O2DMesh
Khi đó, trễ truyền thông trung bình của các cấu hình OCIN được xác định:
T
=
p n = 1, 6p n ;
O2DTorus
3
T
O3DMesh
3
T
=
p n = 3,15p n
O3DTorus
3, 2(n +1) 3 6, 4 3 3, 2 2 = 3, 2p n ; 12, 6 3 4
(4.8)
4.2.3. Lựa chọn cấu hình mạng liên kết trên chip
Để đánh giá các cấu hình OCIN, luận án tiến hành mô phỏng so sánh trễ
truyền thông trung bình và mức tăng tốc xử lý trên chip của các cấu hình OCIN, để
từ đó đưa ra cấu hình OCIN phù hợp nhất với kiến trúc CMP đa luồng .
4.2.3.1. Kết quả mô phỏng
Từ các công thức (4.8), thực hiện tính toán, mô phỏng khi số lượng gói dữ liệu
là p = 8, 16, 32, 64, 128, 256, 1024 cho các trường hợp số lượng lõi trên chip là n =
8, 16, 32, 64, 128. Kết quả thu được trễ truyền thông trung bình cho các cấu hình:
Ring, 2DMesh, 2DTorus, 3DMesh và 3DTorus được trình bày như hình 4.10.
10000 9000 8000 7000 6000 5000 4000 3000 2000 1000 0
8
16
32
64
128
256
1024
Ring
72.00
144.00
288.00
576.00
1152.00
2304.00
9216.00
2DMesh
48.20
96.39
192.79
385.57
771.14
1542.28
6169.14
2DTorus
36.20
72.41
144.82
289.63
579.26
1158.52
4634.10
3DMesh
51.20
102.40
204.80
409.60
819.20
1638.40
6553.60
3DTorus
50.40
100.80
201.60
403.20
806.40
1612.80
6451.20
Trễ truyền thông trung bình (ns); khi n = 8
100
20000
18000
16000
14000
12000
10000
8000
6000
4000
2000
0
8
16
32
64
128
256
1024
Ring
136.00
272.00
544.00
1088.00
2176.00
4352.00
17408.00
2DMesh
68.16
136.32
272.64
545.28
1090.56
2181.12
8724.48
2DTorus
51.20
102.40
204.80
409.60
819.20
1638.40
6553.60
3DMesh
64.51
129.02
258.03
516.06
1032.13
2064.25
8257.02
3DTorus
63.50
127.00
254.00
508.00
1016.00
2032.00
8128.00
Trễ truyền thông trung bình (ns); khi n = 16
40000
35000
30000
25000
20000
15000
10000
5000
0
32
64
128
256
1024
8
16
Ring
264.00
1056.00
2112.00
4224.00
8448.00
33792.00
528.00
2DMesh
96.39
192.79
385.57
771.14
1542.28
3084.57
12338.28
2DTorus
72.41
144.82
289.63
579.26
1158.52
2317.05
9268.19
3DMesh
81.27
162.55
325.10
650.20
1300.40
2600.80
10403.19
3DTorus
80.01
160.01
320.02
640.04
1280.08
2560.16
10240.64
Trễ truyền thông trung bình (ns); khi n = 32
101
70000
60000
50000
40000
30000
20000
10000
0
8
16
32
64
128
256
1024
Ring
520.00
1040.00
2080.00
4160.00
8320.00
16640.00
66560.00
2DMesh
136.32
272.64
545.28
1090.56
2181.12
4362.24
17448.96
2DTorus
102.40
204.80
409.60
819.20
1638.40
3276.80
13107.20
3DMesh
102.40
204.80
409.60
819.20
1638.40
3276.80
13107.20
3DTorus
100.80
201.60
403.20
806.40
1612.80
3225.60
12902.40
Trễ truyền thông trung bình (ns); khi n = 64
140000
120000
100000
80000
60000
40000
20000
0
8
16
32
64
128
256
1024
Ring
1032.00
2064.00
4128.00
8256.00
16512.00
33024.00
132096.0
2DMesh
192.79
385.57
771.14
1542.28
3084.57
6169.14
24676.56
2DTorus
144.82
289.63
579.26
1158.52
2317.05
4634.10
18536.38
3DMesh
129.02
258.03
516.06
1032.13
2064.25
4128.51
16514.04
3DTorus
127.00
254.00
508.00
1016.00
2032.00
4064.00
16256.01
Hình 4.10: Trễ truyền thông trung bình của các mạng liên kết Ring, 2DMesh, 2DTorus, 3DMesh, 3DTorus, cho các trường hợp số lõi trên chip n = 8, 16, 32, 64, 128.
Trễ truyền thông trung bình (ns); khi n = 128
102
Bằng cách kết hợp công thức (4.4) và công thức (4.8). Thực hiện tính toán, mô
phỏng mức tăng tốc xử lý (SP) cho các cấu hình: Ring, 2DMesh, 2DTorus, 3DMesh
và 3DTorus. Các kết quả thu được, trình bày như hình 4.11.
11.01
11.00
10.99
10.98
10.97
10.96
10.95
10.94
8
16
32
64
128
256
1024
Ring
10.9997
10.9995
10.9989
10.9979
10.9958
10.9916
10.9663
2DMesh
10.9998
10.9996
10.9993
10.9986
10.9972
10.9943
10.9774
2DTorus
10.9999
10.9997
10.9995
10.9989
10.9979
10.9958
10.9830
3DMesh
10.9998
10.9996
10.9992
10.9985
10.9970
10.9940
10.9760
3DTorus
10.9998
10.9996
10.9993
10.9985
10.9970
10.9941
10.9764
Mức tăng tốc; khi n = 8
11.01
11.00
10.99
10.98
10.97
10.96
10.95
10.94
10.93
10.92
10.91
10.90
8
16
32
64
128
256
1024
Ring
10.9995
10.9990
10.9980
10.9960
10.9920
10.9841
10.9365
2DMesh
10.9998
10.9995
10.9990
10.9980
10.9960
10.9920
10.9681
2DTorus
10.9998
10.9996
10.9992
10.9985
10.9970
10.9940
10.9760
3DMesh
10.9998
10.9995
10.9991
10.9981
10.9962
10.9924
10.9698
3DTorus
10.9998
10.9995
10.9991
10.9981
10.9963
10.9926
10.9703
Mức tăng tốc; khi n = 16
103
11.02
11.00
10.98
10.96
10.94
10.92
10.90
10.88
10.86
10.84
10.82
10.80
8
16
32
64
128
256
1024
Ring
10.9990
10.9981
10.9961
10.9923
10.9845
10.9691
10.8775
2DMesh
10.9996
10.9993
10.9986
10.9972
10.9943
10.9887
10.9549
2DTorus
10.9997
10.9995
10.9989
10.9979
10.9958
10.9915
10.9661
3DMesh
10.9997
10.9994
10.9988
10.9976
10.9952
10.9905
10.9620
3DTorus
10.9997
10.9994
10.9988
10.9977
10.9953
10.9906
10.9626
Mức tăng tốc; khi n = 32
11.05
11.00
10.95
10.90
10.85
10.80
10.75
10.70
10.65
10.60
8
16
32
64
128
256
1024
Ring
10.9981
10.9962
10.9924
10.9848
10.9696
10.9393
10.7612
2DMesh
10.9995
10.9990
10.9980
10.9960
10.9920
10.9840
10.9364
2DTorus
10.9996
10.9992
10.9985
10.9970
10.9940
10.9880
10.9521
3DMesh
10.9996
10.9992
10.9985
10.9970
10.9940
10.9880
10.9521
3DTorus
10.9996
10.9993
10.9985
10.9970
10.9941
10.9882
10.9529
Mức tăng tốc; khi n = 64
104
11.1
11.0
10.9
10.8
10.7
10.6
10.5
10.4
10.3
8
16
32
64
128
256
1024
Ring
10.9962
10.9924
10.9849
10.9698
10.9398
10.8802
10.5361
2DMesh
10.9993
10.9986
10.9972
10.9943
10.9887
10.9774
10.9103
2DTorus
10.9995
10.9989
10.9979
10.9958
10.9915
10.9830
10.9325
3DMesh
10.9995
10.9991
10.9981
10.9962
10.9924
10.9849
10.9398
3DTorus
10.9995
10.9991
10.9981
10.9963
10.9926
10.9851
10.9407
Hình 4.11: Mức tăng tốc xử lý của các mạng liên kết Ring, 2DMesh, 2DTorus, 3DMesh, 3DTorus, cho các trường hợp số lõi trên chip n = 8, 16, 32, 64, 128.
Mức tăng tốc; khi n = 128
4.2.3.2. Đánh giá kết quả
Từ các kết quả trên, với số lõi n như nhau và số lượng gói dữ liêu p giống
nhau, so sánh trễ truyền thông trung bình và mức tăng tốc xử lý của các cấu hình
OCIN, thấy rằng:
Khi số lõi trên chip n 64 thì mạng liên kết 2DTorus cho trễ truyền thông
trung bình nhỏ nhất và mức tăng tốc xử lý là lớn nhất.
Tuy nhiên, khi số lõi trên chip tăng n ≥ 6 thì mạng liên kết 3DTorus sẽ cho trễ
truyền thông trung bình nhỏ nhất và mức tăng tốc xử lý là lớn nhất.
Do vậy, với CMP đa luồng, lựa chọn cấu hình mạng liên kết 2DTorus khi số
n ≥ 64 để liên kết các lõi trên lõi trên chip n 64 và 3DTorus khi số lõi trên chip chip sẽ đem lại hiệu năng xử lý và khả năng mở rộng quy mô tốt nhất.
4.3. Kết luận chương 4
- Đề xuất tổ chức cache mới với kiến trúc cụm lõi cho kiến trúc CMP đa
luồng.
105
- Sử dụng mô hình MCFPQN và công cụ JMT v.0.8.0 để đánh giá kiến trúc
cụm lõi đã đề xuất. Kiến trúc cụm lõi là một giải pháp tối ưu nhằm cải thiện hiệu
năng của kiến trúc CMP đa luồng.
- Đề xuất được công thức tính toán trễ truyền thông trung bình của các cấu
hình OCIN. Dựa vào công thức TO đã đề xuất và công thức tính mức tăng tốc (SP)
để đánh giá và lựa chọn cấu hình OCIN phù hợp với kiến trúc CMP đa luồng, giảm
được trễ truyền thông và tăng mức tăng tốc xử lý, nâng cao được hiệu năng của
CMP đa luồng.
106 KẾT LUẬN
I. Những đóng góp chính của Luận án
1. Ứng dụng mô hình mạng xếp hàng đóng đa lớp có dạng tích các xác suất để
phân tích, đánh giá hiệu năng của các tổ chức cache đa cấp với cache cấp
cuối là cache chia sẻ thông minh trong kiến trúc CMP đa luồng. Từ đó,
đánh giá được những ưu, nhược điểm của các tổ chức cache này.
2. Đề xuất giải pháp kiến trúc cụm lõi cho CMP đa luồng có 3 cấp cache với
L3 cache riêng cho từng cụm. Kiến trúc này đã thu được những kết quả khả
quan, giảm được thời gian trung bình truy nhập bộ nhớ, giảm nghẽn nút cổ
chai tại cấp L3 cache, nâng cao hiệu năng xử lý của CMP đa luồng.
3. Đề xuất công thức xác định trễ truyền thông trung bình TO của mạng liên
kết trên CMP đa luồng. Dựa vào công thức TO đã đề xuất để tính trễ truyền
thông trung bình và mức tăng tốc (SP), từ đó đánh giá một số cấu hình
OCIN và lựa chọn cấu hình OCIN phù hợp kiến trúc CMP đa luồng. Cấu
hình mạng liên kết này có khả năng mở rộng cao, trễ truyền thông thấp và
mức tăng tốc cao đáp ứng được sự gia tăng số lượng lõi trên chip.
II. Hướng phát triển của Luận án
- Sử dụng các mô hình đã đề xuất để tiếp tục mở rộng nghiên cứu đánh giá
hiệu năng cho kiến trúc CMP đa luồng với số lõi 16, 32, 48…
- Nghiên cứu sử dụng công nghệ OCIN quang cho CMP đa luồng, bởi OCIN
quang cho phép tăng băng thông, tiêu thụ công suất nhỏ và có trễ truyền
thông nhỏ hơn nhiều so với OCIN điện tử. Đây cũng là hướng mà các nhà
nghiên cứu và sản xuất chip trên thế giới đang quan tâm.
107 TÀI LIỆU THAM KHẢO
[1]. A.C. Sodan, Jacob Machina, Arash Deshmeh, Kevin Macnaughton, Bryan
Esbaugh (2010). Parallelism via multithreaded and multicore CPUs. IEEE
Computer Society, Vol. 43, Issue 3, pp.24-32.
[2]. A.I. Fasiku, J. B. Olawale, O. T. Jinadu (2012). A review of architectures -
Intel single core, Intel dual core and AMD dual core processors and the
benefits. International Journal of Engineering and Technology (IJET), Vol. 2,
No. 5, pp.809-817.
[3]. Aamer Jaleel (2010). High performance cache replacement using re-reference
interval prediction (RRIP). ISCA'10 Proceedings of the 37th annual
international symposium on Computer architecture, pp.60-71.
[4]. Alex Settle, Dan Connors, Enric Gibert, Antonio Gonzalez (2006) A
dynamically reconfigurable cache for multithreaded processors. Journal of
Embedded Computing - Issues in embedded single-chip multicore
architectures, Vol. 2 Issue 2, pp.221-233.
[5]. Avinatan Hassidim (2009) Cache replacement policies for multicore
processors. Massachusetts Institute of Technology, Cambridge, 02139, USA.
[6]. B. Filipowicz and J. Kwiecień (2008) Queueing systems and networks. Models
and applications. Bulletin of the Polish academy of sciences technical
sciences, Vol. 56, No. 4, pp.379-390.
[7]. Bashayer M. Al-Babtain, Fajer J. Al-Kanderi, Maha F. Al-Fahad, and Imtiaz
Ahmad (2013) A survey on Amdahl's law extension in multicore architectures.
International Journal of New Computer Architectures and their Applications
(IJNCAA) 3(3), pp.30-46.
[8]. Blair Guy (2007) An analysis of multi-core microprocessor capabilities and their suitablity for current day application requirements. Master’s Thesis Bowie State University Maryland in Europe.
[9]. Chenjie Yu, Peter Petrov) (2010) Off-chip memory bandwidth minimization
through cache partitioning for multi-core platforms. Design Automation Conference (DAC), 47th ACM/IEEE, pp.132-137.
[10]. Christoph Berg (2006) PLRU cache domino effects. 6th Intl Workshop on
108
Worst-Case Execution Time (WCET) Analysis.
[11]. D. Wentzlaff, P. Griffin, H. Hoffmann, Liewei Bao, B. Edwards, C. Ramey,
M. Mattina, Chyi-Chang Miao, J.F. Brown, A. Agarwal (2007) On-chip
interconnection architecture of the tile processor. IEEE Micro, Vol. 27, No. 5,
pp.15-31.
[12]. Damien Hardy, Isabelle Puaut (2008) WCET analysis of multi-level non-
inclusive set-associative instruction caches. RTSS'08 Proceedings of the 2008
Real-Time Systems Symposium, pp.456-466.
[13]. Daniel Hackenberg Daniel Molka Wolfgang E. Nagel (2009) Comparing
cache architectures and coherency protocols on x86-64 multicore SMP
systems. In 42nd Annual IEEE/ACM International Symposium on
Microarchitecture, New York, USA, December 12-16, pp.413-422.
[14]. Daniel Molka, Daniel Hackenberg, Robert Schone and Matthias S. Muller
(2009) Memory performance and cache coherency effects on an Intel Nehalem
multiprocessor system. IEEE Computer Society Washington, DC, USA,
pp.261-270.
[15]. Daniel Sanchez, George Michelogiannakis, And christos Kozyrakis (2010) An
analysis of on-chip interconnection networks for large-scale chip
multiprocessors. ACM Transactions on Architecture and Code Optimization,
Vol. 7, No. 1.
[16]. David Tam (2010) Operating system management of shared caches on
multicore processors. A thesis of Doctor of Philosophy Graduate Department
of Electrical and Computer Engineering University of Toronto.
[17]. David Tam, Reza Azimi, Livio Soares, and Michael Stumm (2007) Managing
shared L2 caches on multicore systems in software. In Proc. of the Workshop
on the Interaction between Operating Systems and Computer Architecture
(WIOSCA).
[18]. Dennis Abts, Natalie D. Enright Jerger, John Kim (2009) Achieving
predictable performance through better memory controller placement in
many-core CMPs. ISCA’09, June 20-24, Austin, TX, USA.
109 [19]. Dong Hyuk Woo and Hsien-Hsin S. Lee (2008) Extending Amdahl’s law for
energy-efficient computing in the many-core era. IEEE Computer Society,
pp.24-31.
[20]. Frederik Rønn, (2003.) Cache-oblivious searching and sorting. Master's
Thesis, Department of Computer Science University of Copenhagen.
[21]. G. E. Moore (1965) Cramming more components onto integrated circuits.
Electronics, pp.114-117.
[22]. Giuseppe Serazzi, Giuliano Casale, Marco Bertoli (2010) Java Modelling
Tools (JMT) v.0.8.0 users manual. Performance Evaluation Lab Dipartimento
di Elettronica e Informazione Politecnico di Milano - Italy.
[23]. Gunter Bolch, Stefan Greiner, Hermann de Meer, Kishor S.Trivedi (2006)
Queueing networks and Markov chains. A John Wiley & sons, Inc,
Publication.
[24]. H.El-Rewwini and Abd-El-Barr (2005) Advanced computer architecture and
parallel processing; Published by John Wiley & Sons, Inc, Hoboken, New
Jersey.
[25]. J.L. Hennessy and D.A. Patterson (2011) Computer architecture: A
quantitative approach. 5th edition, Elsevier Inc.
[26]. Jesús Camacho Villanueva, José Flich, J. Duato, H. Eberle, N. Gura and W.
Olesinski (2009) A performance evaluation of 2D-Mesh, Ring, and Crossbar
interconnects for chip multi-processors. In 2nd International Workshop on
Network on Chip Architectures (NoCArc 2009), pp. 51-56.
[27]. Jitendra Kumar Rai, Atul Negi, Rajeev Wankar, K. D. Nayak (2010)
Characterizing L2 cache behavior of programs on multi-core processors:
Regression models and their transferability. International Journal of Computer
Information Systems and Industrial Management Applications (IJCISIM),
Vol. 2, pp.212-221.
[28]. John D. Owens, William J. Dally, Ron Ho, D.N. (Jay), Jayasimha (2007)
Research challenges for on-chip interconnection networks. Micro, IEEE Vol.
27, Issue 5, pp.96-108.
110 [29]. John E. Savage, Mohammad Zubair (2008) A unified model for multicore
architectures. Proceedings of IFMT'08, the First International Forum on Next-
Generation Multi-core/Manycore Technologies, Cairo, Egypt.
[30]. John Fruehe (2005) Planning considerations for multicore processor
technology. Reprinted from Dell Power Solutions, pp. 67-72.
[31]. Julian Bui, Chenguang Xu, Sudhanva Gurumurthi (2007) Understanding
performance issues on both single core and multi-core architecture. Computer
Organizatione’07.
[32]. Jun Yan and Wei Zhang (2008) WCET analysis for multi-core processors with
shared L2 instruction caches. IEEE Real-Time and Embedded Technology
and Applications Symposium, pp.80-89.
[33]. Ketan Bahulkar, Nicole Hofmann, Deepak Jagtap, Nael Abu-Ghazaleh and
Dmitry Ponomarev (2010) Performance evaluation of PDES on multi-core
clusters. Distributed Simulation and Real Time Applications (DS-RT), 2010 IEEE/ACM 14th International Symposium on, pp.131-140.
[34]. Keun Sup Shim, Myong Hyon Cho, Mieszko Lis, Omer Khan, and Srinivas
Devadas (2011) Library cache coherence. MIT-CSAIL-TR-2011-027.
[35]. Krishna K. Rangan, Gu-Yeon Wei, David Brooks (2009) Thread motion:
Fine-grained power management for multi-core systems. In Proc. of ISCA,
pp.302-313.
[36]. Lin Qiao, Vijayshankar Raman, Frederick Reiss, Peter J. Haas, Guy M.
Lohman (2008) Main-memory scan sharing for multi-core CPUs. Proceedings
of the VLDB Endowment, Vol. 1, Issue 1, pp.610-621.
[37]. Ma Nicholas (2007) Modeling and evaluation of multi-core multithreaded processor architectures in systemC. Master’s Thesis, Queen’s University Kingston, Ontario, Canada.
[38]. Magnus Jahre, Lasse Natvig (2007) Performance effects of a cache miss
handling architecture in a multi-core processor. Department of Computer and
Information Science (IDI), NTNU.
[39]. Marco A. Z. Alves, Philippe O. A. Navaux (2009) Investigation through set
associativity on shared L2 cache memory in a multi-core chip architecture
111
Informatics Institute - Universidade Federal do Rio Grande do Sul - UFRGS.
[40]. Mark D. Hill, Michael R. Marty (2008) Amdahl’s Law in the multicore era.
Published by the IEEE Computer Society.
[41]. Matteo Monchiero, Ramon Canal, Antonio González (2006) Design space
exploration for multicore architectures: A power/performance/thermal view.
ICS'06 Proceedings of the 20th annual international conference on
Supercomputing, pp.177-186.
[42]. Miao Ju (2011) Performance analysis and resource allocation for
multithreaded multicore processors. Doctor of Philosophy Thesis, the
University of Texas at Arlington.
[43]. Michael R. Marty (2008) Cache coherence techniques for multicore
processors; Doctor of Philosophy Thesis at the University of Wisconsin -
Madison.
[44]. Mohammad Reza Nouri rad, Reza Kourdy (2012) Performance comparison of
3D Mesh and 3D Torus network on chip. Journal of Computing, Vol. 4, Issue
1, pp.78-82.
[45]. Moinuddin K. Qureshi, Aamer Jaleel, Yale N. Patt, Simon C. Steely Jr, Joel
Emer (2007) Adaptive Insertion Policies for High Performance Caching
ISCA’07, San Diego, California, USA.
[46]. Myungho Lee, Yeonseung Ryu, Sugwon Hong, Chungki Lee (2005)
Performance implications of a CMT processor for openmp applications.
Department of Computer Software, MyongJi University.
[47]. Naveen Choudhary (2012) Network-on-Chip: A new SoC communication
infrastructure paradigm. International Journal of Soft Computing and
Engineering (IJSCE). Vol.1, Issue 6, pp.332-335.
[48]. Naveen Choudhary (2013) Migration of on-chip networks from 2 dimensional
plane to 3 dimensional plane. International Journal of Engineering and
Advanced Technology (IJEAT), Vol. 2, Issue 4, pp.516-519.
[49]. Nikolaos Hardavellas (2009) Chip multiprocessors for server workloads.
Doctor of Philosophy Thesis, Carnegie Mellon University.
[50]. Nikoslaos Hardavellas, Michael Ferdman, Babak Falsafi and Anastasia
112
Ailamaki (2009) Reactive NUCA: Near-optimal block placement and replication in distributed caches. ISCA'09 Proceedings of the 36th Annual International Symposium on Computer Architecture, pp.184-195.
[51]. Reza Kourdy, Mohammad Reza Nouri rad (2012) Performance comparison of
2D and 3D Torus network on chip architectures. Journal of Computing, Vol.
4, Issue 2, pp.190-122.
[52]. Ruken Zilan, Javier Verdú, Mario Nemirovsky, Rodolfo A. Milito, Mateo
Valero (2011) An abstraction methodology for the evaluation of multi-core
multi-threaded architectures. IEEE International Symposium on Modelling,
Analysis, and Simulation of Computer and Telecommunication Systems 2011,
pp.478-481.
[53]. Ryan Eric Grant (2007) Analysis and improvement of performance and power consumption of chip multi threading SMP architectures. Master’s thesis, Queen’s University Kingston, Ontario, Canada, August.
[54]. S. Keckler, K. Olukotun, & H. P. Hofstee (2009) Multicore processors and
systems. New York, NY: Springer.
[55]. Sarat Yoowattana, Ikki Fujiwara, Michihiro Koibuchi (2013) Investigating
performance advantages of random topologies on network-on-chip. The 18th
Workshop on Synthesis And System Integration of Mixed Information
Technologies (SASIMI) in Japan, pp.190-194.
[56]. Shekhar Srikantaiah, Emre Kultursay, Tao Zhang, Mahmut Kandemir, Mary
Jane Irwin, Yuan Xie (2011) MorphCache: A reconfigurable adaptive multi-
level cache hierarchy high. Performance Computer Architecture (HPCA), 2011 IEEE 17th International Symposium on, pp.231-242.
[57]. Stijn Eyerman Lieven Eeckhout (2010) Probabilistic job symbiosis modeling
for SMT processor scheduling. ELIS Department, Ghent University, Belgium,
pp.91-102.
[58]. Sudhakar Gummadi, Radhakrishnan Shanmugasundaram (2012) Effective
utilization of multicore processor for unified threat management functions.
Journal of Computer Science, Vol. 8, Issue 1, pp.68-75.
[59]. Sudipta Chattopadhyay Abhik Roychoudhury Tulika Mitra (2010) Modeling
shared cache and bus in multi-cores for timing analysis. SCOPES'10
113
Proceedings of the 13th International Workshop on Software & Compilers for Embedded Systems Article No. 6.
[60]. T. Scogland, P. Balaji, W. Feng, G. Narayanaswamy (2008) Asymmetric
interactions in symmetric multi-core systems: Analysis, enhancements and
evaluation. SC'08 Proceedings of the 2008 ACM/IEEE conference on
Supercomputing Article, No. 17.
[61]. Thomas Canhao Xu, Bo Yang, Alexander Wei Yin, Pasi Liljeberg, Hannu
Tenhunen (2010) 3D network-on-chip with on-chip dram: An empirical
analysis for future chip multiprocessor. 2010 International Conference on
Computer, Electrical, and Systems Science, and Engineering, pp.18-24.
[62]. Thomas Rauber, Gudula Rünger (2010) Parallel programming for multicore
and cluster systems. Springer-Verlag Berlin Heidelberg.
[63]. Timo Schonwald, Jochen Zimmermann, Oliver Bringmann, Wolfgang
Rosenstiel (2009) Network-on-chip architecture exploration framework. Digital System Design, Architectures, Methods and Tools 2009. DSD'09, 12th Euromicro Conference on, pp.375-382.
[64]. Trent Rolf (2009) Cache organization and memory management of the Intel
Nehalem computer architecture. University of Utah Computer Engineering.
[65]. Vijayalakshmi Saravanan, Senthil Kumar Chandran, Sasikumar Punnekkat and
D. P. Kothari (2011) A study on factors influencing power consumption in
multithreaded and multicore CPUs. WSEAS Transactions on Computers, Vol.
10, Issue 3, pp.93-103.
[66]. Vikas Bhatnagar, Kavita Chaudhary, Sarita Chaudhary (2012) Multi-Core
Paradigm. MIT International Journal of Computer Science & Information
Technology, Vol. 2, No. 1, pp.19-24.
[67]. Vipin S. Bhure, Praveen R. Chakole (2012) Design of cache controller for
multi-core processor system. IJECSE, Vol.1, No. 2, pp.520-526.
[68]. Xiaoqiang Yang, Huimin Du, Jungang Han (2009) Topology and routing
algorithm based on the combination Gray code with Johnson code. Journal of
computers, Vol. 4, No. 3, pp.259-264.
[69]. Xing Fu, Khairul Kabir, and Xiaorui Wang (2011) Cache-aware utilization
114
control for energy-efficient multi-core real-time systems. Real-Time Systems
(ECRTS), 23rd Euromicro Conference on, pp.102-111.
[70]. Wang Zuo, Shi Feng, Zuo Qi, Ji Weixing, Li Jiaxin, Deng Ning, Xue Licheng,
Tan Yuan, Qiao Baojun (2009) Group-caching for NoC based multicore cache
coherent systems. In proceedings of the conference on Design, automation and
test in Europe (DATE), pp.755-760.
[71]. Wen-Hsiang Hu, Seugn Eun Lee, and Nader Bagherzadeh (2008) DMesh: A
diagonally-linked Mesh network-on-chip architecture. NoCArc, First
International Workshop on Network on Chip Architectures to be held in
conjunction with MICRO-41.
[72]. William Stallings (2010) Computer organization and architecture designing
for performance. 8th edition, Publisher: Prentice Hall.
[73]. http// www.jmt.sourceforge.net/
[74]. http://www.most.gov.vn/
[75]. http://www.wikipedia.com/multi-core
[76]. http://www.intel.com/multi-core
115
DANH MỤC CÁC CÔNG TRÌNH ĐÃ CÔNG BỐ CỦA LUẬN ÁN
1. Hồ Khánh Lâm, Nguyễn Minh Quý, Hồ Văn Phi (2011), “Phân tích hiệu năng
của tổ chức Cache trong kiến trúc vi xử lý đa lõi”. Kỷ yếu Hội nghị khoa học
công nghệ thông tin và truyền thông ĐHBK Hà Nội, 10/2011. ISBN: 978-604-
911-032-0, pp.67-73.
2. Hồ Văn Phi, Hồ Khánh Lâm (2012), “Đánh giá hiệu năng của tổ chức cache
trong hệ thống vi xử lý đa lõi-đa luồng”. Tạp chí Khoa học & Công nghệ, các
Trường Đại học kỹ thuật, Số 91, năm 2012. ISSN 0868-3980, pp.54-58.
3. Hồ Văn Phi, Trần Hoàng Vũ, Hồ Khánh Lâm (2012), “Giải pháp mới cho kiến
trúc đa lõi nhằm nâng cao hiệu năng của bộ vi xử lý đa lõi-đa luồng”. Tạp chí
Khoa học & Công nghệ, Đại học Đà Nẵng, Số 11(60), Quyển II, năm 2012.
ISSN 1859-1531, pp.78-83.
4. Hồ Văn Phi, Hồ Khánh Lâm (2014), “Ảnh hưởng của tổ chức cache đa cấp và
mạng liên kết đến hiệu năng của chip đa lõi”. Tạp chí Khoa học & Công nghệ,
Đại học Đà Nẵng. ISSN 1859-1531. (Đã chấp nhận đăng ngày 03/04/2014).
5. Ho Van Phi, Ho Khanh Lam (2014) “Using Generalized stochastic Petri net for
performance evaluation of cache organization in multicore processor chips”.
Journal of Science and Technology, Technical Universities in Vietnamese, No
98. ISSN 0868-3980, pp.15-22.
116 PHỤ LỤC
PHỤ LỤC I
KỊCH BẢN MÔ PHỎNG ĐÁNH GIÁ HIỆU NĂNG CỦA TỔ CHỨC
CACHE TRONG KIẾN TRÚC CMP ĐA LUỒNG CÓ 2 CẤP CACHE
VÀ 3 CẤP CACHE
I.1. Giới thiệu JMT v.0.8.0
Công cụ mô phỏng Java (JMT) v.0.8.0 là một bộ ứng dụng miễn phí, mã
nguồn mở được tải về từ http://jmt.sourceforge.net. JMT bao gồm các công cụ sử
dụng một số thuật toán tiên tiến để mô hình hóa, phân tích, và mô phỏng đánh giá
chính xác hiệu năng các mô hình mạng xếp hàng đóng, mở hoặc hỗn hợp, có hoặc
không có dạng tích các xác suất. Hình I.1 biểu diễn giao diện lựa chọn các công cụ
Hình I.1: Giao diện lựa chọn công cụ JMT.
JMT.
Trên giao diện ở hình I.1, chọn công cụ mô phỏng đồ họa (JSIMgraph) để tiến
hành mô phỏng đánh giá hiệu năng cho hệ thống mạng xếp hàng.
JSIMgraph: là giao diện mô phỏng đồ họa được dùng cho việc đánh giá phân
tích mô hình mạng xếp hàng. JSIMgraph dễ dàng với người sử dụng, nó tích
hợp các chức năng với một không gian làm việc đồ họa trực quan. Điều này cho
117 phép mô tả đơn giản cấu trúc mô hình mạng xếp hàng, cũng như định nghĩa đơn
giản các thông số đầu vào thực hiện mô phỏng. Hình I.2 mô tả giao diện
Hình I.2: Giao diện mô phỏng đồ họa JSIMgraph.
JSIMgraph.
I.2. Tiến trình mô phỏng
I.2.1. Mô phỏng CMP đa luồng có 2-lõi
1. Vẽ mô hình mạng:
Trên giao diện ở hình I.2, tiến hành vẽ mô hình MCFPQN của kiến trúc CMP
2-lõi. Mô hình CMP 2-lõi có 2 cấp cache với L2 cache chia sẻ cho các lõi được biểu
diễn như hình 3.6a. Mô hình CMP 2-lõi có 3 cấp cache với L3 cache chia sẻ cho các
lõi được biểu diễn như hình 3.6b
2. Thiết lập các thông số cho mỗi nút
Đối với CMP 2-lõi có 2 cấp cache với L2 cache chia sẻ cho các lõi
Xác suất định tuyến ở các nút
- Xác suất định tuyến cho tất cả các CPU là p11 = p22 = 0,15
- Xác suất định tuyến từ CPU1 đến L11 cache là p1L1 = 0,85
- Xác suất định tuyến từ CPU2 đến L21 cache là p2L1 = 0,85
- Xác suất định tuyến từ L11 cache đến CPU1 là pL1,1 = 0,7
118
- Xác suất định tuyến từ L21 cache đến CPU2: pL1,2 = 0,7
- Xác suất định tuyến từ L11 cache đến Int+L2 cache là pL1L2 = 0,3
- Xác suất định tuyến từ L21 cache đến Int+L2 cache là pL1L2 = 0,3
- Xác suất định tuyến từ Int+L2 cache đến CPU1 là pL2,1 = 0,4
- Xác suất định tuyến từ Int+L2 cache đến CPU2 là pL2,2 = 0,4
- Xác suất định tuyến từ Int+L2 cache đến MemoryBus+Mem là pL2Mem = 0,2
- Xác suất định tuyến từ MemoryBus+Mem đến CPU1 là pMem1 = 0,5
- Xác suất định tuyến từ MemoryBus+Mem đến CPU2 là pMem2 = 0,5
Thời gian phục vụ trung bình ở các nút được phân bố theo hàm mũ
- Thời gian phục vụ trung bình tại nút CPU1 là 0,5ns và CPU2 là 0,5ns
- Thời gian phục vụ trung bình tại nút L11 cache là 1ns và L21 cache là 1ns
- Thời gian phục vụ trung bình tại nút Int+L2 cache là 2,5ns
- Thời gian phục vụ trung bình tại nút MemoryBus+Mem là 40ns
Đối với CMP 2-lõi có 3 cấp cache với L3 cache chia sẻ cho các lõi
Xác suất định tuyến ở các nút
- Xác suất định tuyến cho tất cả các CPU là p11 = p22 = 0,15
- Xác suất định tuyến từ CPU1 đến L11 cache là p1L1 = 0,85
- Xác suất định tuyến từ CPU2 đến L21 cache là p2L1 = 0,85
- Xác suất định tuyến từ L11 cache đến CPU1 là pL1,1 = 0,7
- Xác suất định tuyến từ L21 cache đến CPU2 là pL1,2 = 0,7
- Xác suất định tuyến từ L11 cache đến L12 cache là pL1L2 = 0,3
- Xác suất định tuyến từ L21 cache đến L22 cache là pL1L2 = 0,3
- Xác suất định tuyến từ L12 cache đến CPU1 là pL2,1 = 0,8
- Xác suất định tuyến từ L22 cache đến CPU2 là pL2,2 = 0,8
- Xác suất định tuyến từ L12 cache đến Int+L3 cache là pL2L3 = 0,2
119
- Xác suất định tuyến từ L22 cache đến Int+L3 cache là pL2L3 = 0,2
- Xác suất định tuyến từ Int+L3 cache đến CPU1 là pL3,1 = 0,4
- Xác suất định tuyến từ Int+L3 cache đến CPU2 là pL3,2 = 0,4
- Xác suất định tuyến từ Int+L3 cache đến MemoryBus+Mem là pL3Mem = 0,2
- Xác suất định tuyến từ MemoryBus+Mem đến CPU1 là pMem1 = 0,5
- Xác suất định tuyến từ MemoryBus+Mem đến CPU2 là pMem2 = 0,5
Thời gian phục vụ trung bình tại các nút được phân bố theo hàm mũ
- Thời gian phục vụ trung bình tại nút CPU1 là 0,5ns và CPU2 là 0,5ns
- Thời gian phục vụ trung bình tại nút L11 cache là 1ns và L21 cache là 1ns
- Thời gian phục vụ trung bình tại nút L12 cache là 2,5ns và L22 cache là
2,5ns
- Thời gian phục vụ trung bình tại nút Int+L3 cache là 5ns
- Thời gian phục vụ trung bình tại nút MemoryBus+Mem là 40ns
3. Chọn các chỉ số hiệu năng để mô phỏng và đánh giá
Thời gian chờ đợi tại mỗi nút; thời gian đáp ứng tại mỗi nút; thời gian đáp ứng
của hệ thống; mức độ sử dụng tại mỗi nút; thông lượng tại mỗi nút; thông lượng của
hệ thống.
4. Chọn các thông số mô phỏng
- Số lượng mẫu cực đại là 5.000.000
- Độ tin cậy/Độ sai lệch tương đối cực đại là 0,99/0,003
- Số luồng của mỗi CPU là 8
- Chọn loại mạng xếp hàng là mạng xếp hàng đóng
5. Thực hiện mô phỏng
Các kết quả mô phỏng cho CMP 2-lõi có 2 cấp cache với L2 cache chia sẻ cho
các lõi, và có 3 cấp cache với L3 cache chia sẻ cho các lõi được trình bày như trong
bảng 3.1
120
I.2.2. Mô phỏng CMP đa luồng có 4-lõi
1. Vẽ mô hình mạng:
Trên giao diện ở hình I.2, tiến hành vẽ mô hình MCFPQN của kiến trúc CMP
4-lõi. Mô hình CMP 4-lõi có 2 cấp cache với L2 cache chia sẻ cho các lõi được biểu
diễn như hình 3.11a. Mô hình CMP 4-lõi có 3 cấp cache với L3 cache chia sẻ cho
các lõi được biểu diễn như hình 3.11b.
2. Thiết lập các thông số cho mỗi nút
Đối với CMP 4-lõi có 2 cấp cache với L2 cache chia sẻ cho các lõi
Xác suất định tuyến ở các nút
- Xác suất định tuyến cho tất cả các CPU: p11 = p22 = p33 = p44 = 0,15
- Xác suất định tuyến từ CPU1 đến L11 cache: p1L1 = 0,85
- Xác suất định tuyến từ CPU2 đến L21 cache: p2L1 = 0,85
- Xác suất định tuyến từ CPU3 đến L31 cache: p3L1 = 0,85
- Xác suất định tuyến từ CPU4 đến L41 cache: p4L1 = 0,85
- Xác suất định tuyến từ L11 cache đến CPU1: pL1,1 = 0,7
- Xác suất định tuyến từ L21 cache đến CPU2: pL1,2 = 0,7
- Xác suất định tuyến từ L31 cache đến CPU3: pL1,3 = 0,7
- Xác suất định tuyến từ L41 cache đến CPU4: pL1,4 = 0,7
- Xác suất định tuyến từ L11 cache đến Int+L2 cache: pL1L2 = 0,3
- Xác suất định tuyến từ L21 cache đến Int+L2 cache: pL1L2 = 0,3
- Xác suất định tuyến từ L31 cache đến Int+L2 cache: pL1L2 = 0,3
- Xác suất định tuyến từ L41 cache đến Int+L2 cache: pL1L2 = 0,3
- Xác suất định tuyến từ Int+L2 cache đến CPU1: pL2,1 = 0,2
- Xác suất định tuyến từ Int+L2 cache đến CPU2: pL2,2 = 0,2
- Xác suất định tuyến từ Int+L2 cache đến CPU3: pL2,3 = 0,2
121
- Xác suất định tuyến từ Int+L2 cache đến CPU4: pL2,4 = 0,2
- Xác suất định tuyến từ Int+L2 cache đến MemoryBus+Mem: pL2Mem = 0,2
- Xác suất định tuyến từ MemoryBus+Mem đến CPU1: pMem1 = 0,25
- Xác suất định tuyến từ MemoryBus+Mem đến CPU2: pMem2 = 0,25
- Xác suất định tuyến từ MemoryBus+Mem đến CPU3: pMem3 = 0,25
- Xác suất định tuyến từ MemoryBus+Mem đến CPU4: pMem4 = 0,25
Thời gian phục vụ trung bình ở các nút được phân bố theo hàm mũ
- Thời gian phục vụ trung bình tại nút CPU1 là 0,5ns, CPU2 là 0,5ns, CPU3 là
0,5ns và CPU4 là 0,5ns
- Thời gian phục vụ trung bình tại nút L11 cache là 1ns, L21 cache là 1ns, L31
cache là 1ns và L41 cache là 1ns
- Thời gian phục vụ trung bình tại nút Int+L2 cache là 2,5ns
- Thời gian phục vụ trung bình tại nút MemoryBus+Mem là 40ns
Đối với CMP 4-lõi có 3 cấp cache với L3 cache chia sẻ cho các lõi
Xác suất định tuyến ở các nút
- Xác suất định tuyến cho tất cả các CPU: p11 = p22 = p33 = p44 = 0,15
- Xác suất định tuyến từ CPU1 đến L11 cache: p1L1 = 0,85
- Xác suất định tuyến từ CPU2 đến L21 cache: p2L1 = 0,85
- Xác suất định tuyến từ CPU3 đến L31 cache: p3L1 = 0,85
- Xác suất định tuyến từ CPU4 đến L41 cache: p4L1 = 0,85
- Xác suất định tuyến từ L11 cache đến CPU1: pL1,1 = 0,7
- Xác suất định tuyến từ L21 cache đến CPU2: pL1,2 = 0,7
- Xác suất định tuyến từ L31 cache đến CPU3: pL1,3 = 0,7
- Xác suất định tuyến từ L41 cache đến CPU4: pL1,4 = 0,7
- Xác suất định tuyến từ L11 cache đến L12 cache: pL1L2 = 0,3
122
- Xác suất định tuyến từ L21 cache đến L22 cache: pL1L2 = 0,3
- Xác suất định tuyến từ L31 cache đến L32 cache: pL1L2 = 0,3
- Xác suất định tuyến từ L41 cache đến L42 cache: pL1L2 = 0,3
- Xác suất định tuyến từ L12 cache đến CPU1: pL2,1 = 0,8
- Xác suất định tuyến từ L22 cache đến CPU2: pL2,2 = 0,8
- Xác suất định tuyến từ L32 cache đến CPU3: pL2,3 = 0,8
- Xác suất định tuyến từ L42 cache đến CPU4: pL2,4 = 0,8
- Xác suất định tuyến từ L12 cache đến Int+L3 cache: pL2L3 = 0,2
- Xác suất định tuyến từ L22 cache đến Int+L3 cache: pL2L3 = 0,2
- Xác suất định tuyến từ L32 cache đến Int+L3 cache: pL2L3 = 0,2
- Xác suất định tuyến từ L42 cache đến Int+L3 cache: pL2L3 = 0,2
- Xác suất định tuyến từ Int+L3 cache đến CPU1: pL3,1 = 0,2
- Xác suất định tuyến từ Int+L3 cache đến CPU2: pL3,2 = 0,2
- Xác suất định tuyến từ Int+L3 cache đến CPU3: pL3,3 = 0,2
- Xác suất định tuyến từ Int+L3 cache đến CPU4: pL3,4 = 0,2
- Xác suất định tuyến từ Int+L3 cache đến MemoryBus+Mem: pL3Mem = 0,2
- Xác suất định tuyến từ MemoryBus+Mem đến CPU1: pMem1 = 0,25
- Xác suất định tuyến từ MemoryBus+Mem đến CPU2: pMem2 = 0,25
- Xác suất định tuyến từ MemoryBus+Mem đến CPU3: pMem3 = 0,25
- Xác suất định tuyến từ MemoryBus+Mem đến CPU4: pMem4 = 0,25
Thời gian phục vụ trung bình tại các nút được phân bố theo hàm mũ
- Thời gian phục vụ trung bình tại nút CPU1 là 0,5ns, CPU2 là 0,5ns, CPU3 là
0,5ns và CPU4 là 0,5ns
- Thời gian phục vụ trung bình tại nút L11 cache là 1ns, L21 cache là 1ns, L31
cache là 1ns và L41 cache là 1ns
123
- Thời gian phục vụ trung bình tại nút L12 cache là 2,5ns, L22 cache là 2,5ns,
L32 cache là 2,5ns và L42 cache là 2,5ns
- Thời gian phục vụ trung bình tại nút Int+L3 cache là 5ns
- Thời gian phục vụ trung bình tại nút MemoryBus+Mem là 40ns
3. Chọn các chỉ số hiệu năng để mô phỏng và đánh giá
Thời gian đợi tại mỗi nút; thời gian đáp ứng tại mỗi nút; thời gian đáp ứng của
hệ thống; mức độ sử dụng tại mỗi nút; thông lượng tại mỗi nút; thông lượng của hệ
thống.
4. Chọn các thông số mô phỏng
- Số lượng mẫu cực đại là 5.000.000
- Độ tin cậy/Độ sai lệch tương đối cực đại là 0,99/0,003
- Số luồng của mỗi CPU là 8
- Chọn loại mạng xếp hàng là mạng xếp hàng đóng
5. Thực hiện mô phỏng
Các kết quả mô phỏng cho CMP 4-lõi có 2 cấp cache với L2 cache chia sẻ cho
các lõi, và có 3 cấp cache với L3 cache chia sẻ cho các lõi được trình bày như trong
bảng 3.2.
I.2.3. Mô phỏng CMP đa luồng có 8-lõi
1. Vẽ mô hình mạng
Trên giao diện ở hình I.2, tiến hành vẽ mô hình MCFPQN của kiến trúc CMP
8-lõi. Mô hình CMP 8-lõi có 2 cấp cache với L2 cache chia sẻ cho các lõi được biểu
diễn như hình 3.16a. Mô hình CMP 8-lõi có 3 cấp cache với L3 cache chia sẻ cho
các lõi được biểu diễn như hình 3.16b.
2. Thiết lập các thông số cho mỗi nút
Đối với CMP 8-lõi có 2 cấp cache với L2 cache chia sẻ cho các lõi
Xác suất định tuyến ở các nút
124
- Xác suất định tuyến cho tất cả các CPU: p11 = p22 = p33 = p44 = p55 = p66 = p77
= p88 = 0,15
- Xác suất định tuyến từ CPU1 đến L11 cache: p1L1 = 0,85
- Xác suất định tuyến từ CPU2 đến L21 cache: p2L1 = 0,85
- Xác suất định tuyến từ CPU3 đến L31 cache: p3L1 = 0,85
- Xác suất định tuyến từ CPU4 đến L41 cache: p4L1 = 0,85
- Xác suất định tuyến từ CPU5 đến L51 cache: p5L1 = 0,85
- Xác suất định tuyến từ CPU6 đến L61 cache: p6L1 = 0,85
- Xác suất định tuyến từ CPU7 đến L71 cache: p7L1 = 0,85
- Xác suất định tuyến từ CPU8 đến L81 cache: p8L1 = 0,85
- Xác suất định tuyến từ L11 cache đến CPU1: pL1,1 = 0,7
- Xác suất định tuyến từ L21 cache đến CPU2: pL1,2 = 0,7
- Xác suất định tuyến từ L31 cache đến CPU3: pL1,3 = 0,7
- Xác suất định tuyến từ L41 cache đến CPU4: pL1,4 = 0,7
- Xác suất định tuyến từ L51 cache đến CPU5: pL1,5 = 0,7
- Xác suất định tuyến từ L61 cache đến CPU6: pL1,6 = 0,7
- Xác suất định tuyến từ L71 cache đến CPU7: pL1,7 = 0,7
- Xác suất định tuyến từ L81 cache đến CPU8: pL1,8 = 0,7
- Xác suất định tuyến từ L11 cache đến Int+L2 cache: pL1L2 = 0,3
- Xác suất định tuyến từ L21 cache đến Int+L2 cache: pL1L2 = 0,3
- Xác suất định tuyến từ L31 cache đến Int+L2 cache: pL1L2 = 0,3
- Xác suất định tuyến từ L41 cache đến Int+L2 cache: pL1L2 = 0,3
- Xác suất định tuyến từ L51 cache đến Int+L2 cache: pL1L2 = 0,3
- Xác suất định tuyến từ L61 cache đến Int+L2 cache: pL1L2 = 0,3
- Xác suất định tuyến từ L71 cache đến Int+L2 cache: pL1L2 = 0,3
125
- Xác suất định tuyến từ L81 cache đến Int+L2 cache: pL1L2 = 0,3
- Xác suất định tuyến từ Int+L2 cache đến CPU1: pL2,1 = 0,1
- Xác suất định tuyến từ Int+L2 cache đến CPU2: pL2,2 = 0,1
- Xác suất định tuyến từ Int+L2 cache đến CPU3: pL2,3 = 0,1
- Xác suất định tuyến từ Int+L2 cache đến CPU4: pL2,4 = 0,1
- Xác suất định tuyến từ Int+L2 cache đến CPU5: pL2,5 = 0,1
- Xác suất định tuyến từ Int+L2 cache đến CPU6: pL2,6 = 0,1
- Xác suất định tuyến từ Int+L2 cache đến CPU7: pL2,7 = 0,1
- Xác suất định tuyến từ Int+L2 cache đến CPU8: pL2,8 = 0,1
- Xác suất định tuyến từ Int+L2 cache đến MemoryBus+Mem: pL2Mem = 0,2
- Xác suất định tuyến từ MemoryBus+Mem đến CPU1: pMem1 = 0,125
- Xác suất định tuyến từ MemoryBus+Mem đến CPU2: pMem2 = 0,125
- Xác suất định tuyến từ MemoryBus+Mem đến CPU3: pMem3 = 0,125
- Xác suất định tuyến từ MemoryBus+Mem đến CPU4: pMem4 = 0,125
- Xác suất định tuyến từ MemoryBus+Mem đến CPU5: pMem5 = 0,125
- Xác suất định tuyến từ MemoryBus+Mem đến CPU6: pMem6 = 0,125
- Xác suất định tuyến từ MemoryBus+Mem đến CPU7: pMem7 = 0,125
- Xác suất định tuyến từ MemoryBus+Mem đến CPU8: pMem8 = 0,125
Thời gian phục vụ trung bình ở các nút được phân bố theo hàm mũ
- Thời gian phục vụ trung bình tại nút CPU1 là 0,5ns, CPU2 là 0,5ns, CPU3 là
0,5ns, CPU4 là 0,5ns, CPU5 là 0,5ns, CPU6 là 0,5ns, CPU7 là 0,5ns và
CPU8 là 0,5ns
- Thời gian phục vụ trung bình tại nút L11 cache là 1ns, L21 cache là 1ns, L31
cache là 1ns, L41 cache là 1ns, L51 cache là 1ns, L61 cache là 1ns, L71
cache là 1ns và L81 cache là 1ns
126
- Thời gian phục vụ trung bình tại nút Int+L2 cache là 2,5ns
- Thời gian phục vụ trung bình tại nút MemoryBus+Mem là 40ns
Đối với CMP 8-lõi có 3 cấp cache với L3 cache chia sẻ cho các lõi
Xác suất định tuyến ở các nút
- Xác suất định tuyến cho tất cả các CPU: p11 = p22 = p33 = p44 = p55 = p66 = p77
= p88 = 0,15
- Xác suất định tuyến từ CPU1 đến L11 cache: p1L1 = 0,85
- Xác suất định tuyến từ CPU2 đến L21 cache: p2L1 = 0,85
- Xác suất định tuyến từ CPU3 đến L31 cache: p3L1 = 0,85
- Xác suất định tuyến từ CPU4 đến L41 cache: p4L1 = 0,85
- Xác suất định tuyến từ CPU5 đến L51 cache: p5L1 = 0,85
- Xác suất định tuyến từ CPU6 đến L61 cache: p6L1 = 0,85
- Xác suất định tuyến từ CPU7 đến L71 cache: p7L1 = 0,85
- Xác suất định tuyến từ CPU8 đến L81 cache: p8L1 = 0,85
- Xác suất định tuyến từ L11 cache đến CPU1: pL1,1 = 0,7
- Xác suất định tuyến từ L21 cache đến CPU2: pL1,2 = 0,7
- Xác suất định tuyến từ L31 cache đến CPU3: pL1,3 = 0,7
- Xác suất định tuyến từ L41 cache đến CPU4: pL1,4 = 0,7
- Xác suất định tuyến từ L51 cache đến CPU5: pL1,5 = 0,7
- Xác suất định tuyến từ L61 cache đến CPU6: pL1,6 = 0,7
- Xác suất định tuyến từ L71 cache đến CPU7: pL1,7 = 0,7
- Xác suất định tuyến từ L81 cache đến CPU8: pL1,8 = 0,7
- Xác suất định tuyến từ L11 cache đến L12 cache: pL1L2 = 0,3
- Xác suất định tuyến từ L21 cache đến L22 cache: pL1L2 = 0,3
- Xác suất định tuyến từ L31 cache đến L32 cache: pL1L2 = 0,3
127
- Xác suất định tuyến từ L41 cache đến L42 cache: pL1L2 = 0,3
- Xác suất định tuyến từ L51 cache đến L52 cache: pL1L2 = 0,3
- Xác suất định tuyến từ L61 cache đến L62 cache: pL1L2 = 0,3
- Xác suất định tuyến từ L71 cache đến L72 cache: pL1L2 = 0,3
- Xác suất định tuyến từ L81 cache đến L82 cache: pL1L2 = 0,3
- Xác suất định tuyến từ L12 cache đến CPU1: pL2,1 = 0,8
- Xác suất định tuyến từ L22 cache đến CPU2: pL2,2 = 0,8
- Xác suất định tuyến từ L32 cache đến CPU3: pL2,3 = 0,8
- Xác suất định tuyến từ L42 cache đến CPU4: pL2,4 = 0,8
- Xác suất định tuyến từ L52 cache đến CPU5: pL2,5 = 0,8
- Xác suất định tuyến từ L62 cache đến CPU6: pL2,6 = 0,8
- Xác suất định tuyến từ L72 cache đến CPU7: pL2,7 = 0,8
- Xác suất định tuyến từ L82 cache đến CPU8: pL2,8 = 0,8
- Xác suất định tuyến từ L12 cache đến Int+L3 cache: pL2L3 = 0,2
- Xác suất định tuyến từ L22 cache đến Int+L3 cache: pL2L3 = 0,2
- Xác suất định tuyến từ L32 cache đến Int+L3 cache: pL2L3 = 0,2
- Xác suất định tuyến từ L42 cache đến Int+L3 cache: pL2L3 = 0,2
- Xác suất định tuyến từ L52 cache đến Int+L3 cache: pL2L3 = 0,2
- Xác suất định tuyến từ L62 cache đến Int+L3 cache: pL2L3 = 0,3
- Xác suất định tuyến từ L72 cache đến Int+L3 cache: pL2L3 = 0,2
- Xác suất định tuyến từ L82 cache đến Int+L3 cache: pL2L3 = 0,2
- Xác suất định tuyến từ Int+L3 cache đến CPU1: pL3,1 = 0,1
- Xác suất định tuyến từ Int+L3 cache đến CPU2: pL3,2 = 0,1
- Xác suất định tuyến từ Int+L3 cache đến CPU3: pL3,3 = 0,1
- Xác suất định tuyến từ Int+L3 cache đến CPU4: pL3,4 = 0,1
128
- Xác suất định tuyến từ Int+L3 cache đến CPU5: pL3,5 = 0,1
- Xác suất định tuyến từ Int+L3 cache đến CPU6: pL3,6 = 0,1
- Xác suất định tuyến từ Int+L3 cache đến CPU7: pL3,7 = 0,1
- Xác suất định tuyến từ Int+L3 cache đến CPU8: pL3,8 = 0,1
- Xác suất định tuyến từ Int+L3 cache đến MemoryBus+Mem: pL3Mem = 0,2
- Xác suất định tuyến từ MemoryBus+Mem đến CPU1: pMem1 = 0,125
- Xác suất định tuyến từ MemoryBus+Mem đến CPU2: pMem2 = 0,125
- Xác suất định tuyến từ MemoryBus+Mem đến CPU3: pMem3 = 0,125
- Xác suất định tuyến từ MemoryBus+Mem đến CPU4: pMem4 = 0,125
- Xác suất định tuyến từ MemoryBus+Mem đến CPU5: pMem5 = 0,125
- Xác suất định tuyến từ MemoryBus+Mem đến CPU6: pMem6 = 0,125
- Xác suất định tuyến từ MemoryBus+Mem đến CPU7: pMem7 = 0,125
- Xác suất định tuyến từ MemoryBus+Mem đến CPU8: pMem8 = 0,125
Thời gian phục vụ trung bình ở các nút được phân bố theo hàm mũ
- Thời gian phục vụ trung bình tại nút CPU1 là 0,5ns, CPU2 là 0,5ns, CPU3 là
0,5ns, CPU4 là 0,5ns, CPU5 là 0,5ns, CPU6 là 0,5ns, CPU7 là 0,5ns và
CPU8 là 0,5ns
- Thời gian phục vụ trung bình tại nút L11 cache là 1ns, L21 cache là 1ns, L31
cache là 1ns, L41 cache là 1ns, L51 cache là 1ns, L61 cache là 1ns, L71
cache là 1ns và L81 cache là 1ns
- Thời gian phục vụ trung bình tại nút L12 cache là 2,5ns, L22 cache là 2,5ns,
L32 cache là 2,5ns, L42 cache là 2,5ns, L52 cache là 2,5ns, L62 cache là
2,5ns, L72 cache là 2,5ns và L82 cache là 2,5ns
- Thời gian phục vụ trung bình tại nút Int+L3 cache là 5ns
- Thời gian phục vụ trung bình tại nút MemoryBus+Mem là 40ns
3. Chọn các chỉ số hiệu năng để mô phỏng và đánh giá
129
Thời gian đợi tại mỗi nút; thời gian đáp ứng tại mỗi nút; thời gian đáp ứng của
hệ thống; mức độ sử dụng tại mỗi nút; thông lượng tại mỗi nút; thông lượng của hệ
thống.
4. Chọn các thông số mô phỏng
- Số lượng mẫu cực đại là 5.000.000
- Độ tin cậy/Độ sai lệch tương đối cực đại là 0,99/0,003
- Số luồng của mỗi CPU là 8
- Chọn loại mạng xếp hàng là mạng xếp hàng đóng
5. Thực hiện mô phỏng
Các kết quả mô phỏng cho CMP 8-lõi có 2 cấp cache với L2 cache chia sẻ cho
các lõi, và có 3 cấp cache với L3 cache chia sẻ cho các lõi được trình bày như trong
bảng 3.3.
130 PHỤ LỤC II
KỊCH BẢN MÔ PHỎNG ĐÁNH GIÁ HIỆU NĂNG CỦA TỔ CHỨC
CACHE TRONG KIẾN TRÚC CỤM LÕI CÓ 3 CẤP CACHE
1. Vẽ mô hình mạng
Trên giao diện ở hình I.2, tiến hành vẽ mô hình MCFPQN của kiến trúc cụm
lõi trong trường hợp CMP có 8-lõi, 4-lõi/cụm và có 3 cấp cache với L3 cache riêng
cho mỗi cụm để thực hiện mô phỏng. Mô hình được biểu diễn như hình 4.4.
2. Thiết lập các thông số cho mỗi nút
Xác suất định tuyến ở các nút
- Xác suất định tuyến cho tất cả các CPU là p11,11 = p21,21 = p31,31 = p41,41 =
p12,12 = p22,22 = p32,32 = p42,41 = 0,15
- Xác suất định tuyến từ CPU11 đến L11 cache_1 là p11L1 = 0,85
- Xác suất định tuyến từ CPU21 đến L21 cache_1là p21L1 = 0,85
- Xác suất định tuyến từ CPU31 đến L31 cache_1 là p31L1 = 0,85
- Xác suất định tuyến từ CPU41 đến L41 cache_1 là p41L1 = 0,85
- Xác suất định tuyến từ CPU12 đến L11 cache_2 là p12L1 = 0,85
- Xác suất định tuyến từ CPU22 đến L21 cache_2 là p22L1 = 0,85
- Xác suất định tuyến từ CPU32 đến L31 cache_2 là p32L1 = 0,85
- Xác suất định tuyến từ CPU42 đến L41 cache_2 là p42L1 = 0,85
- Xác suất định tuyến từ L11 cache_1 đến CPU11 là pL1,11 = 0,7
- Xác suất định tuyến từ L21 cache_1 đến CPU21 là pL1,21 = 0,7
- Xác suất định tuyến từ L31 cache_1 đến CPU31 là pL1,31 = 0,7
- Xác suất định tuyến từ L41 cache_1 đến CPU41 là pL1,41 = 0,7
- Xác suất định tuyến từ L11 cache_2 đến CPU12 là pL1,12 = 0,7
- Xác suất định tuyến từ L21 cache_2 đến CPU22 là pL1,22 = 0,7
131
- Xác suất định tuyến từ L31 cache_2 đến CPU32 là pL1,32 = 0,7
- Xác suất định tuyến từ L41 cache_2 đến CPU42 là pL1,42 = 0,7
- Xác suất định tuyến từ L11 cache_1 đến L12 cache_1 là pL1L2 = 0,3
- Xác suất định tuyến từ L21 cache_1 đến L22 cache_1 là pL1L2 = 0,3
- Xác suất định tuyến từ L31 cache_1 đến L32 cache_1 là pL1L2 = 0,3
- Xác suất định tuyến từ L41 cache_1 đến L42 cache_1 là pL1L2 = 0,3
- Xác suất định tuyến từ L11 cache_2 đến L12 cache_2 là pL1L2 = 0,3
- Xác suất định tuyến từ L21 cache_2 đến L22 cache_2 là pL1L2 = 0,3
- Xác suất định tuyến từ L31 cache_2 đến L32 cache_2 là pL1L2 = 0,3
- Xác suất định tuyến từ L41 cache_2 đến L42 cache_2 là pL1L2 = 0,3
- Xác suất định tuyến từ L12 cache_1 đến CPU11 là pL2,11 = 0,8
- Xác suất định tuyến từ L22 cache_1 đến CPU21 là pL2,21 = 0,8
- Xác suất định tuyến từ L32 cache_1 đến CPU31 là pL2,31 = 0,8
- Xác suất định tuyến từ L42 cache_1 đến CPU41 là pL2,41 = 0,8
- Xác suất định tuyến từ L12 cache_2 đến CPU12 là pL2,12 = 0,8
- Xác suất định tuyến từ L22 cache_2 đến CPU22 là pL2,22 = 0,8
- Xác suất định tuyến từ L32 cache_2 đến CPU32 là pL2,32 = 0,8
- Xác suất định tuyến từ L42 cache_2 đến CPU42 là pL2,42 = 0,8
- Xác suất định tuyến từ L12 cache_1 đến Int+L3 cache_1 là pL2L3 = 0,2
- Xác suất định tuyến từ L22 cache_1 đến Int+L3 cache_1 là pL2L3 = 0,2
- Xác suất định tuyến từ L32 cache_1 đến Int+L3 cache_1 là pL2L3 = 0,2
- Xác suất định tuyến từ L42 cache_1 đến Int+L3 cache_1 là pL2L3 = 0,2
- Xác suất định tuyến từ L12 cache_2 đến Int+L3 cache_2 là pL2L3 = 0,2
- Xác suất định tuyến từ L22 cache_2 đến Int+L3 cache_2 là pL2L3 = 0,2
- Xác suất định tuyến từ L32 cache_2 đến Int+L3 cache_2 là pL2L3 = 0,2
132 - Xác suất định tuyến từ L42 cache_2 đến Int+L3 cache_2 là pL2L3 = 0,2
- Xác suất định tuyến từ Int+L3 cache_1 đến CPU11 là pL3,11 = 0,2
- Xác suất định tuyến từ Int+L3 cache_1 đến CPU21 là pL3,21 = 0,2
- Xác suất định tuyến từ Int+L3 cache_1 đến CPU31 là pL3,31 = 0,2
- Xác suất định tuyến từ Int+L3 cache_1 đến CPU41 là pL3,41 = 0,2
- Xác suất định tuyến từ Int+L3 cache_2 đến CPU12 là pL3,12 = 0,2
- Xác suất định tuyến từ Int+L3 cache_2 đến CPU22 là pL3,22 = 0,2
- Xác suất định tuyến từ Int+L3 cache_2 đến CPU32 là pL3,32 = 0,2
- Xác suất định tuyến từ Int+L3 cache_2 đến CPU42 là pL3,42 = 0,2
- Xác suất định tuyến từ Int+L3 cache_1 đến MemoryBus+Mem: pL3Mem = 0,2
- Xác suất định tuyến từ Int+L3 cache_2 đến MemoryBus+Mem: pL3Mem = 0,2
- Xác suất định tuyến từ MemoryBus+Mem đến CPU11 là pMem11 = 0,125
- Xác suất định tuyến từ MemoryBus+Mem đến CPU21 là pMem21 = 0,125
- Xác suất định tuyến từ MemoryBus+Mem đến CPU31 là pMem31 = 0,125
- Xác suất định tuyến từ MemoryBus+Mem đến CPU41 là pMem41 = 0,125
- Xác suất định tuyến từ MemoryBus+Mem đến CPU12 là pMem12 = 0,125
- Xác suất định tuyến từ MemoryBus+Mem đến CPU22 là pMem22 = 0,125
- Xác suất định tuyến từ MemoryBus+Mem đến CPU32 là pMem32 = 0,125
- Xác suất định tuyến từ MemoryBus+Mem đến CPU42 là pMem42 = 0,125
Thời gian phục vụ trung bình ở các nút được phân bố theo hàm mũ
- Thời gian phục vụ trung bình tại nút CPU11 là 0,5ns, CPU21 là 0,5ns,
CPU31 là 0,5ns, CPU41 là 0,5ns, CPU12 là 0,5ns, CPU22 là 0,5ns, CPU32
là 0,5ns và CPU42 là 0,5ns
133
- Thời gian phục vụ trung bình tại nút L11 cache_1 là 1ns, L21 cache_1 là 1ns,
L31 cache_1 là 1ns, L41 cache_1 là 1ns, L11 cache_2 là 1ns, L21 cache_2 là
1ns, L31 cache_2 là 1ns và L41 cache_2 là 1ns
- Thời gian phục vụ trung bình tại nút L12 cache_1 là 2,5ns, L22 cache_1 là
2,5ns, L32 cache_1 là 2,5ns, L42 cache_1 là 2,5ns, L12 cache_2 là 2,5ns,
L22 cache_2 là 2,5ns, L32 cache_2 là 2,5ns và L42 cache_2 là 2,5ns
- Thời gian phục vụ trung bình tại nút Int+L3 cache_1 là 5ns
- Thời gian phục vụ trung bình tại nút Int+L3 cache_2 là 5ns
- Thời gian phục vụ trung bình tại nút MemoryBus+Mem là 40ns
3. Chọn các chỉ số hiệu năng để mô phỏng và đánh giá
Thời gian chờ đợi tại mỗi nút; thời gian đáp ứng tại mỗi nút; thời gian đáp ứng
của hệ thống; mức độ sử dụng tại mỗi nút; thông lượng tại mỗi nút; thông lượng của
hệ thống.
4. Chọn các thông số mô phỏng
- Số lượng mẫu cực đại là 5.000.000
- Độ tin cậy/Độ sai lệch tương đối cực đại là 0,99/0,003
- Số luồng của mỗi CPU là 8
- Chọn loại mạng xếp hàng là mạng xếp hàng đóng
5. Thực hiện mô phỏng
Các kết quả mô phỏng cho CMP 8-lõi có kiến trúc cụm lõi, 4-lõi/cụm, và có 3
cấp cache với L3 cache riêng cho mỗi cụm được trình bày như trong bảng 4.1.