Xem mẫu
- HộiHội Thảo Quốc Gia 2015 về Điện Tử, Truyền Thông và Công Nghệ Thông Tin (ECIT 2015)
Thảo Quốc Gia 2015 về Điện Tử, Truyền Thông và Công Nghệ Thông Tin (ECIT 2015)
Nghiên cứu và thiết kế chip xử lý đa nhân sử dụng
Multi2Sim
Ngô Quang Vinh, Đỗ Đức Hào Hoàng Trang, Vũ Đình Thành
Trung tâm ICDREC, ĐHQG TPHCM Đại học Bách khoa, ĐHQG TPHCM
Email : {vinh.ngoquang, hao.doduc}@icdrec.edu.vn Email: {hoangtrang, vdthanh}@hcmut.edu.vn
Tóm tắt nội dung—Chip đa nhân (CMP) ngày càng được đó đã làm cho CMP ngày càng phổ biến trên thị trường
sử dụng rộng rãi nhờ vào năng lực tính toán được nâng cũng như không ngừng được nghiên cứu, cải tiến nhằm
cao rõ rệt so với các thế hệ chip một nhân. Tốc độ cũng nâng cao chất lượng.
như hiệu quả của CMP chủ yếu đến từ quá trình phân Để nhanh chóng và dễ dàng trong việc tìm hiểu,
cấp bộ nhớ. Tùy vào cách thiết kế mà các thành phần bộ
nghiên cứu cũng như thiết kế CMP thì một phần mềm
nhớ cùng nhau chia sẻ dữ liệu hay sử dụng một cách độc
quyền. Điều đó làm cho khả năng lưu trữ của bộ nhớ vô
mô phỏng là không thể thiếu. Phần mềm này sẽ giúp
cùng linh hoạt và qua đó trực tiếp cải thiện tốc độ xử chúng ta thiết kế một CMP dễ dàng, mô phỏng về hiệu
lý. Chúng tôi tập trung tìm hiểu và phân tích quá trình năng tính toán, từ đó so sánh các thiết kế khác nhau
phân cấp này nhằm lý giải phần nào về sự cải thiện rõ nhằm rút ra ưu nhược điểm của từng thiết kế. Có rất
rệt về mặt tốc độ xử lý của CMP. Mặt khác, hiệu suất nhiều phần mềm dạng này, trong đó đa phần là miễn
của CMP chỉ đạt tối ưu khi sự phân cấp bộ nhớ là phù phí như : Gem5, Multi2Sim, SimpleScalar [?][?][?], ...
hợp với chương trình ứng dụng thực tế. Trong nghiên cứu Trải qua một quá trình tìm hiểu và sử dụng hầu hết các
này, chúng tôi trình bày mối liên hệ giữa cấu trúc bộ nhớ chương trình trên, chúng tôi nhận thấy Multi2Sim là một
thứ bậc của chip CMP và những đặc tính chính của một
công cụ rất tốt để tìm hiểu và nghiên cứu về CMP cho
chương trình ứng dụng chạy trên nó. Chúng tôi sử dụng
công cụ Multi2Sim để thiết kế và chạy mô phỏng CMP. Bên nhiều đối tượng, từ người mới bắt đầu đến các chuyên
cạnh đó, chương trình ứng dụng được chon là benchmark gia.
Splash-2, là benchmark được dùng phổ biến để ước lượng Bên cạnh đó, Multi2Sim cũng hỗ trợ các chương trình
hiệu suất của thiết kế CMP. Kết quả thí nghiệm cho thấy benchmark phổ biến nhất hiện nay cho chip CMP là
Splash-2 đạt được hiệu suất cao nhất khi dung lượng L1 Splash-2 và Parsec [?][?][1]. Thông qua thực hiện thí
là 64 KB. nghiệm trên những chương trình benchmark chuẩn này,
Từ khóa—Phân cấp bộ nhớ, vi xử lý đa nhân, bộ nhớ chúng tôi phân tích và rút ra một số đặc tính chính của
cache, Multi2Sim benchmark và từ đó đưa ra các thông số thiết kế bộ nhớ
có thứ bậc phù hợp nhằm tạo ra mô hình tối ưu nhất cho
benchmark đó. Trong nghiên cứu, này chúng tôi chọn sử
I. GIỚI THIỆU
dụng Splash-2 vì nó đã được phát triển khá lâu và có độ
Ngày nay, khi mà máy tính càng ngày càng phổ biến ổn định cao [?]. Splash-2 bao gồm nhiều bài toán ứng
và tham gia vào nhiều mặt của cuộc sống con người, yêu dụng khác nhau về tính toán hiệu năng cao và về đồ hoạ.
cầu về năng lực xử lý của một bộ vi xử lý dường như Đặc biệt, Splash-2 là benchmark được thiết kế để đánh
là một điều tất yếu. Kể từ năm 2001, khi IBM lần đầu giá các kiến trúc xử lý song song đa luồng hoặc đa nhân
tiên giới thiệu chip đa nhân (CMP) ra thị trường, loại [1][?].
chip này đã dần thống trị thị trường vi xử lý [?]. Những Kết quả thí nghiệm cho thấy benchmark Splash-2 có
thế hệ chip một nhân vào hàng xa xỉ của vài chục năm sự phân bổ các tác vụ vào các nhân một cách cân bằng
trước thì ngày nay vẫn không thể đáp ứng được nhu cầu thể hiện ở tỷ lệ số lượng truy xuất bộ nhớ cache và thể
của một người dùng bình thường. Cho dù được cải tiến hiện ở tỷ lệ hit giữa các nhân. Tỷ lệ hit ở cache đạt được
bằng cách tăng mật độ transitor hay tăng xung nhịp, các mức trung bình cao nhất lên tới 99.3% tương ứng với
loại chip này vẫn không thể chạy những phần mềm ứng dung lượng L1 và L2 tương ứng là 64 KB và 512 KB.
dụng, những trò chơi điện tử có đồ họa cao cấp một cách Trong phần II, chúng tôi trình bày về kiến trúc tổ
mượt mà [?][?]. Chip CMP ngoài khả năng xử lý mạnh chức bộ nhớ có phân cấp của một chip xử lý đa nhân.
mẽ còn có độ bền cao, hoạt động ổn định và ít bị nóng Phần giới thiệu về Multi2Sim được trình bày ở mục III.
nhờ khả năng tản nhiệt tốt [?][?]. Chính những lý do Trong phần này, chúng tôi đi sâu vào những phần liên
ISBN: 978-604-67-0635-9 369
369
- HộiHội
ThảoThảo Quốc
Quốc GiaGia 2015vềvềĐiện
2015 ĐiệnTử,
Tử,Truyền
TruyềnThông
Thông và
và Công
CôngNghệ
NghệThông
ThôngTinTin
(ECIT 2015)
(ECIT 2015)
quan đến phần phân cấp bộ nhớ để minh họa một cách
trực quan cho nội dung của phần trước. Phần IV giới
thiệu một quá trình xuyên suốt của việc thiết kế CMP,
từ khâu hình thành ý tưởng, triển khai, cấu hình, chạy mô
phỏng cho đến khâu thống kê và đánh giá. Cuối cùng,
phần V là những nhận định và đánh giá của chúng tôi
về Multi2Sim đối với việc nghiên cứu và thiết kế chip
vi xử lý đa nhân.
II. PHÂN CẤP BỘ NHỚ TRÊN CMP
Như đã trình bày trong phần I, một CMP xét về bản
chất là sự ghép nối của nhiều chip một nhân tạo thành.
Tương tự như chip một nhân, CMP khi vận hành cũng
nhận mã lệnh (Inst) và dữ liệu (Data) từ bộ nhớ để tiến Hình 1: Phân cấp bộ nhớ
hành xử lý. Các nhân trong chip gần như không thể cải
tiến gì thêm, mật độ các đơn vị xử lý gần như đã bão
hòa. Mặt khác việc nâng cao hiệu năng hoạt động của này, thực chất là sự kết hợp giữa các ưu điểm của các
nhân thông qua việc tăng tần số hoạt động đã gặp giới cách bố trí bộ nhớ: bộ nhớ chính, dung lượng lớn sẽ chứa
hạn rõ ràng là công suất tiêu thu của chip và mức toả toàn bộ nội dung chương trình, và dĩ nhiên nằm xa chip;
nhiệt cao [?]. một bộ nhớ nhỏ hơn nhiều, được thiết kế nằm trong
Do đó, mọi sự thay đổi hay tác động lên chip với chip, có nhiệm vụ lưu trữ những Inst và Data thường
mong muốn cải thiện hiệu năng đều được thực hiên tại dùng nhất, nhằm tiết kiệm thời gian truy xuất đến bộ
các thành phần bộ nhớ, từ kiến trúc cho đến mạng nội nhớ chính, bộ nhớ như vậy được biết đến với tên gọi
bộ giữa chúng với nhau. bộ nhớ truy cập nhanh hay bộ nhớ đêm (cache) [?]. Sự
khác nhau giữa cache trong chip đơn nhân và CMP được
A. Phân cấp bộ nhớ trình bày rõ hơn trong hai mục II-A1 và II-A2.
Chip và bộ nhớ chính của máy tính là hai bộ phận 1) Cache của chip một nhân: Như đã trình bày, bộ
riêng biệt, tách rời nhau và được liên kết với nhau bởi nhớ được đặt càng gần chip thì truy xuất càng nhanh,
một mạng nội bộ [?]. Rõ ràng, khi chip yêu cầu một dung lượng phải càng nhỏ. Người ta thường chia cache
Inst hay Data thì không thể có ngay được, phải chờ tín thành các mức : L1, L2, L3, ... L1 là cache nhỏ nhất,
hiệu yêu cầu đi từ chip đến bộ nhớ chính, rồi thông tin có tốc độ truy xuất nhanh nhất, L2 có sức chứa lớn hơn
cần thiết sẽ đi từ bộ nhớ chính về lại chip. Nếu bộ nhớ L1 và truy xuất chậm hơn L1, tương tự cho các mức cao
càng gần chip thì quãng đường đi lại càng ngắn, thời hơn [2][?]. Chip một nhân chỉ có một bộ nhớ cache cho
gian thực thi càng ít, và ngược lại. Nhưng mặc khác, mỗi mức, và do đó, mạng nội bộ nối từ chip, qua các
chip được cấu thành từ các mạch bán dẫn cực nhỏ, và mức cache, đến bộ nhớ chính rất đơn giản, đó chỉ là một
phải được nuôi bởi những nguồn điện tương ứng và thật đường thẳng.
sự ổn định. Nếu ta thiết kế một bộ nhớ chính với dung 2) Cache của CMP: CMP là nhiều nhân hợp lại mà
lượng lớn đặt ngay bên trong chip hay quá gần chip đều thành. Mỗi nhân đều có cache riêng, tùy theo cách chúng
có thể làm hư hỏng chip, thậm chí gây cháy nổ. Qua ta bố trí mà có được các kiến trúc khác nhau. Thông
đó, chúng ta nhận thấy rằng, khoảng cách từ bộ nhớ đến thường, mỗi nhân đều có cache L1 riêng, còn ở các mức
chip tỉ lệ thuận với thời gian truy xuất thông tin và tỉ cao hơn thì có thể dùng chung hoặc riêng đều được. Vì
lệ nghịch với dung lượng bộ nhớ. Bộ nhớ càng gần chip ở cùng một mức cache, có nhiều module nên chúng ta
thì truy xuất càng nhanh nhưng dung lượng sẽ giảm đi, có thể cấu hình để thu được các đồ hình (topology) khác
và ngược lại, những bộ nhớ với dung lượng lưu trữ lớn nhau, qua đó thời gian truy xuất và hiệu năng tính toán
phải được đặt xa chip [?]. Hình 1 cho ta một cái nhìn cũng khác nhau. Giả sử CMP có 4 module L2, chúng ta
trực quan về phân cấp bộ nhớ. có thể cho chúng nối thẳng đến L3, hoặc cho chúng nối
Nhưng những nhu cầu ứng dụng của người dùng cuối thành một vòng (ring network), rồi nối một nút trên vòng
thường rất ngặt nghèo: phần mềm ứng dụng lớn, nhưng đến L3, hoặc nối chúng thành hình sao (star network),
yêu cầu xử lý phải nhanh. Đó là thách thức, nhưng cũng rồi nối đến L3 ... Qua đó, chúng ta có thể nhận thấy
là động lực để bộ nhớ máy tính được phát triển đến một rằng phân cấp bộ nhớ của CMP phức tạp và đa dạng
mức độ cao hơn: phân cấp bộ nhớ [2][?][?]. Quá trình hơn nhiều so với chip một nhân [?][?]. Khi số khả năng
370
370
- Hội Thảo Quốc Gia 2015 về Điện Tử, Truyền Thông và Công Nghệ Thông Tin (ECIT 2015)
Hội Thảo Quốc Gia 2015 về Điện Tử, Truyền Thông và Công Nghệ Thông Tin (ECIT 2015)
phân cấp càng lớn, chúng ta càng có quyền hi vọng một way. Khi muốn kiểm tra xem một địa chỉ đã có trong
trong số chúng sẽ đem lại hiệu quả tính toán mong muốn cache hay chưa, chúng ta chỉ cần tìm trong set tương
cho chúng ta. ứng. Đây cũng là cách tổ chức phổ biến nhất hiện nay
bởi các hãng lơn như Intel hay AMD, trong đó k thường
B. Những thành phần chính của bộ nhớ Cache nhận giá trị 4 hoặc 8, nghĩa là tổ chức theo kiểu 4-way
hoặc 8-way.
Cache là một tập hợp các cache line [?]. Cache line
Trong cache được tổ chức theo kiểu k-way, tuy kích
là đơn vị cơ bản của cache, mỗi cache line chứa thông
thước của một set là không nhỏ, nhưng không chắc chứa
tin đang được lưu trữ tại một địa chỉ nào đó trong bộ
đủ tất cả các dữ liệu cần thiết cho CPU tại một khoảng
nhớ. Tùy theo các cách ánh xạ địa chỉ bộ nhớ lên cache
thời gian xác định. Một vấn đề rất tự nhiên nảy sinh, khi
line mà ta có các kiểu cache khác nhau [3] [4]. Hình 2
set đã chứa đầy dữ liệu nhưng chúng ta cần lưu thêm một
cho ta một minh họa trực quan.
địa chỉ nữa, vậy cần loại bỏ địa chỉ nào hiện tại. Có rất
nhiều chiến lược thay thế được dùng trong thực tế như:
chọn ngẫu nhiên một địa chỉ để loại ra, dành chỗ cho địa
chỉ mới; chọn địa chỉ có số lần sử dụng ít nhất để loại
ra; First In First Out (FIFO) [?][?]; hay chọn địa chỉ ít
sử dụng nhất trong thời gian gần đây để loại bỏ (LRU)
[?][?]... Mỗi chiến lược đều có ưu điểm riêng, không
chiến lược nào là tốt toàn diện, và đây cũng chỉ là theo
(a) Ánh xạ trực tiếp (b) ánh xạ 2-way (c) Hỗ trợ toàn phần
dự đoán, không ai dám chắc địa chỉ vừa loại bỏ có được
Hình 2: Các kiểu ánh xạ địa chỉ từ bộ nhớ vào cache sử dụng trong tương lai gần hay không. Tuy nhiên, theo
khảo sát của chúng tôi, chiến lược LRU được sử dụng
Trong hình 2a, mỗi địa chỉ trong bộ nhớ chỉ có thể khá phổ biến. Đặc biệt là trong cache L2, ở đó dữ liệu
được chứa trong duy nhất một cache line. Điều này sẽ Instr và data được lưu trữ chung. Theo hoạt động căn
rất thuận lợi khi truy xuất vì cache line chứa địa chỉ cần bản nhất của vi xử lý thì CPU đọc Instr vào và có xu
tìm, nếu có, là duy nhất. Tuy nhiên, khi có nhiều địa hướng không đọc hay ghi lên địa chỉ đó nữa mà có xu
chỉ đáng lẽ ra được lưu trong cùng một cache line được hướng đọc hoặc ghi lên các địa chỉ data. Khi đó các địa
sử dụng thì chỉ có tối đa một địa chỉ được lưu lại trong chỉ chứa Instr sẽ có thể bị thay thế một cách thích đáng
cache, điều này làm giảm hiệu quả của cache. Để hạn nếu sử dụng chiến lược LRU.
chế điều này, một giải pháp được đề nghị trong hình 2c,
mỗi địa chỉ có thể được lưu trong bất kỳ cache line nào,
miễn là cache line đó đang trống. Điều này rất thuận C. Phân loại Cache theo cấu trúc
lợi trong lưu trữ nhưng lại tốn thời gian trong khâu tìm Qua phần II-A, chúng ta biết rằng cache có nhiều mức
kiếm. Vì không biết địa chỉ mà CPU yêu cầu cầu đã có khác nhau, mức càng cao thì dung lượng càng lớn và tốc
trong cache hay chưa, nên ta phải duyệt toàn bộ cache độ truy xuất càng chậm. Điều này có nghĩa L2 lớn hơn
line để có câu trả lợi. Qua đó, ta nhận thấy khả năng lưu rất nhiều so với L1, và L3 lớn hơn hẳn so với L2 ... Một
trữ và tốc độ truy xuất, một lần nữa, lại tỉ lệ nghịch với câu hỏi tự nhiên đặt ra là: liệu L2 có chứa L1 hay không?
nhau. Lý do là gì, và làm thế được lợi gì? Như đã trình bày
Một giải pháp vừa đảm bảo tốc độ truy xuất và khả ngay từ đầu, chúng tôi tập trung vào tìm hiểu và nghiên
năng lưu trữ được minh họa trong hình 2b. Bộ nhớ cache cứu về chip xử lý đa nhân, nên phần này chúng tôi sẽ bỏ
được chia làm đôi, khi đó, mỗi địa chỉ trong cache có qua việc phân tích cấu trúc cache trong chip một nhân.
thể được chứa trong 2 cache line. Ở một khía cạnh nào Một phân cấp đơn giản được cho trong hình 3. Thông
đó, ta có thể nói điều này làm tăng sức chứa lên gấp đôi thường, khi có 2 mức cache, mỗi core có một module
so với trường hợp ánh xạ trực tiếp và giảm thời gian đi cache L1 riêng, và cùng nhau chia sẻ một module L2.
một nửa khi so với trường hợp hỗ trợ toàn phần. Tổng Trong trường hợp này, chúng ta có 3 sự lựa chọn cho
quát, ta có thể chia cache thành k phần, mỗi phần chứa mối quan hệ giữa L1 và L2 [?]. Cách thứ nhất: L2 bao
m cache line. Khi đó, ta gọi tập hợp m cache line trong gồm L1, tất cả những địa chỉ có trong L1 đều phải có
một phần là một way, nói cách khác, chúng ta có k way. trong L2 [?]. Điều này thật sự rất hữu ích, bởi vì L2
Một địa chỉ trong bộ nhớ có thể thuộc vào một cache line chứa cả L1-A và L1-B. Khi CPU yêu cầu L1-A một địa
nào đó trong một way bất kỳ, chúng ta gọi một tập hợp chỉ mà L1-A không có địa chỉ này nhưng L1-B có, nếu
các khả năng như vậy là một cache set. Do đó, chúng L2 không chứa hai module L1 thì sẽ rất khó để L1-A
ta có m cache set, bằng đúng số cache line trong một lấy được thông tin mà CPU yêu cầu. Ở đây, vì L2 chứa
371
371
- Hội Thảo Quốc Gia 2015 về Điện Tử, Truyền Thông và Công Nghệ Thông Tin (ECIT 2015)
Hội Thảo Quốc Gia 2015 về Điện Tử, Truyền Thông và Công Nghệ Thông Tin (ECIT 2015)
địa chỉ đang chứa dữ liệu ghi bị loại ra để lấy chỗ cho
địa chỉ mới thì mới ghi vào bộ nhớ chính [?]. Cho dù
được ghi chép nhiều lần lên cùng địa chỉ, nhưng vì địa
chỉ được lưu trên cache nên việc ghi dữ liệu chiếm rất
ít thời gian. Vấn đề nảy sinh khi nhiều chip xử lý cùng
ghi, hoặc một số chip đọc và một số chip ghi, khi đó,
ta cần đến một cache coherency protocol [5], nghĩa là
một cách thức để đảm bảo sự toàn vẹn và thống nhất dữ
liệu. Chi tiết về các giao thức này chúng tôi không trình
Hình 3: Hai module cache L1 cùng chia sẻ một module bày ở đây, bạn đọc nếu muốn tìm hiểu có thể tham khảo
L2 trong [6], [7], [8].
III. MÔ PHỎNG CMP BẰNG MULTI2SIM
cả L1-B nên sẽ chứa luôn dữ liệu mà L1-A đang cần.
Tuy thuận lợi cho truy xuất là vậy, nhưng cách tổ chức Multi2Sim (M2S) [?] là một công cụ rất linh hoạt để
này có một nhược điểm rất lớn: tốn chi phí lưu trữ. Mọi người dùng tìm hiểu về CMP. M2S là một phần mềm mã
dữ liệu lưu ở một mức cache nào đó đều được lưu lại nguồn mở, cho phép người dùng tạo ra, thay đổi và can
trong những mức cache cao hơn, đây thật sự là một lãng thiệp đến mức sâu nhất đối với CMP. Tuy nhiên, chúng
phí lớn trong khi kích thước của các module cache rất tôi không trình bày tất cả những gì M2S cung cấp mà
nhỏ. Bên cạnh đó, cách làm này cần phải đảm bảo một chỉ giới hạn ở những phần thiết kế tổ chức bộ nhớ cache.
ràng buộc để tận dụng được ưu thế của mình, đó là dung M2S thật sự là một môi trường bắt đầu không thể tốt
lượng L2 phải không được nhỏ hơn tổng dung lượng của hơn cho những ai có ý định tìm hiểu và nghiên cứu về
các module L1. Cách lưu trữ thứ hai khắc phục nhược CMP. Chúng ta có thể giả lập một CMP rất đơn giản
điểm của cách thứ nhất: Tất cả những gì được chứa trong bằng các file INI dưới dạng text. Một CMP gồm có
L1 thì không được chứa trong L2, và tương tự cho các nhiều nhân, nhiều cache ở các mức khác nhau, mạng
module cao hơn [?]. Cách lưu trữ này tận dụng tối đa nội bộ nối các module lại với nhau, và cuối cùng là bộ
không gian lưu trữ, nhưng sẽ rất tốn chi phí về băng nhớ chính. Tất cả những phần này được trình bày chi tiết
thông trên chip khi dữ liệu cần thiết đang chứa ở một trong những mục tiếp theo.
module cache cùng cấp. Một cách tổng quan, cách thứ
nhất tận dụng tối đa thời gian truy xuất, và cách thứ hai A. Phần nhân
tận dụng tối đa không gian lưu trữ, ưu điểm của cách
Cấu hình phần nhân là một phần quan trọng trong việc
làm này là nhược điểm của cách còn lại. Trong thực tế,
giả lập một CMP. Những gì chúng ta cần làm là viết các
ngoài hai cách này, người ta còn có cách thứ ba: dữ liệu
dòng cấu hình vào tập tin mem-config. Nội dung chúng
có ở L1 thì có thể có hoặc có thể không có ở L2 [?][?].
ta viết được cho trong bảng I.
Tuy không có ưu điểm rõ ràng như hai cách trên, nhưng
giải pháp này cũng không vướng phải những nhược điểm Tham số Ý nghĩa
tương ứng. [Entry ] Tên của nhân
Type Loại nhân (CPU hay GPU)
Arch Kiến trúc tập lệnh
D. Phân loại Cache theo chiến lược ghi Core Số thứ tự của nhân trong CMP
Mọi thao tác mà CPU tác động lên bộ nhớ chính đều Thread Số lượng tiểu trình chạy trên nhân
ComputerUnit Số thứ tự của đơn vị tính toán trong GPU
thông qua bộ nhớ cache với vai trò trung gian. Khi CPU
DataModule Nơi nhận lệnh
muốn ghi vào bộ nhớ chính, dữ liệu sẽ được ghi tạm lên InstModule Nơi nhận dữ liệu
cache, và cache sẽ chọn thời điểm tốt nhất để ghi vào Module Đơn vị phục vụ cho GPU
bộ nhớ chính. Về cơ bản, có 2 thời điểm cache ghi dữ
Bảng I: Cấu hình cho một nhân CMP
liệu vào bộ nhớ chính, tương ứng với hai kiểu hoạt động
khác nhau [?]. Kiểu thứ nhất tốn thời gian, ghi lại nhiều
lần nhưng rất an toàn, không lo có sai sót: ghi dữ liệu Những thành phần bắt buộc phải có, nếu chúng ta
xuống bộ nhớ chính ngay sau khi CPU ghi xuống cache. không thực hiện cấu hình thì cấu hình mặc định sẽ được
Trong trường hợp chúng ta cần ghi nhiều lần lên một địa sử dụng. Do đó, trong các tập tin INI, chúng ta chỉ
chỉ nào đó, phương pháp này tỏ ra kém hiệu quả vì tốn cấu hình những tham số thật cần thiết hoặc những phần
băng thông hệ thống kết nối trên chip. Trường hợp thư chúng ta quan tâm mà không cần bận tâm quá nhiều về
hai tối ưu hơn, nhưng cũng phức tạp hơn: chờ đến khi hệ thống.
372
372
- HộiHội Thảo Quốc Gia 2015 về Điện Tử, Truyền Thông và Công Nghệ Thông Tin (ECIT 2015)
Thảo Quốc Gia 2015 về Điện Tử, Truyền Thông và Công Nghệ Thông Tin (ECIT 2015)
B. Phần bộ nhớ net-config chứa nội cung chi tiết cho từng mạng. Bảng
Để cấu hình cho các module của bộ nhớ, chúng ta IV cung cấp các tham số cơ bản để cấu hình một mạng
cần hai bước : cấu hình hình dạng và cấu hình cho từng nội bộ trong tập tin mem-config.
module. Trước hết là phần cấu hình hình dạng. Bảng II Tham số Ý nghĩa
cho ta chi tiết cấu hình. Cũng như cấu hình cho nhân, [Network ] Tên mạng
phần này được thực hiện trong tập tin mem-config. DefaultInputBufferSize Kích thước vùng nhớ tạm
cho việc đọc dữ liệu
Tham số Ý nghĩa DefaultOutputBufferSize Kích thước vùng nhớ tạm
[CacheGeometry ] Tên hình dạng cho việc ghi dữ liệu
Set Số lượng set trong module đang xét DefaultBandwidth Băng thông
Assoc Số lượng Associative, hay số way
BlockSize Kích thước 1 block (line) Bảng IV: Cấu hình cơ bản cho mạng
Latency Độ trễ
Policy Chính sách thay thế
MSHR Số lượng truy cập cache tối đa Để cấu hình chi tiết cho mạng, chúng ta can thiệp vào
tại một thời điểm tập tin net-config. Tập tin này gồm các lệnh trong bảng
Port số lượng cổng IV và được bổ sung thêm các tham số trong bảng V
Bảng II: Cấu hình hình dạng bộ nhớ trong trường hợp mạng phức tạp.
Tham số Ý nghĩa
Phần hình dạng này cho phép chúng ta xác định những [Network..Node.] Tên của nút
Type Loại nút
tham số cơ bản nhất, chung nhất cho một mức cache hay [Network..Link.] Tên của liên kết
một loại module nào đó. Ví dụ như dòng đầu tiên có nội Source Nút nguồn của liên kết
dung "CacheGeometry L1" thì đây là các tham số chung Dest Nút đích của liên kết
Type Loại liên kết
cho tất cả các module trong CMP. Khi đó, các module
(một chiều hay hai chiều)
L1 trong CMP có cùng số set, assoc, cùng kích thước,
cùng chính sách thay thế ... Một điều lưu ý là tham số Bảng V: Cấu hình chi tiết cho mạng
Policy chỉ được nhận một trong ba giá trị: LRU, FIFO
hoặc Random. Như vậy, chúng ta đã có mọi tham số cần thiết để
Sau khi đã có những tham số chung cho các mức trong cấu hính ra một CMP cho riêng mình. Phần tiếp theo
bộ nhớ, bảng III cung cấp cho chúng ta các tham số cần sẽ cung cấp cho chúng ta phương tiện để đánh giá một
thiết để cấu hình hoàn chỉnh cho một module. thiết kế CMP có hiệu quả hay không.
Tham số Ý nghĩa
Type Loại module (cache, bộ nhớ chính) D. Đánh giá hiệu năng khi thực hiện mô phỏng bằng
Geometry Hình dạng Multi2Sim
LowNetwork Mạng bên dưới
LowNetworkNode Nút mạng bên dưới Để đánh giá hiệu quả của một chip nói chung và một
HighNetwork Mạng bên trên CMP nói riêng, chúng ta cần chạy thử một số chương
HighNetworkNode Nút mạng bên trên trình ứng dụng nào đó để có được kết quả thực tế
LowModules Các module phía dưới
BlockSize Kích thước 1 block
nhất. Trong nghiên cứu và cả trong công nghiệp, những
Latency Độ trễ chương trình chuyên dùng để kiểm tra hiệu quả của chip
Ports Số lượng cổng được gọi là benchmark. Có rất nhiều benchmark khác
DirectorySize Kích thước Directory nhau, phù hợp với các mục đích khác nhau. Chúng tôi
DirectoryAssoc Số way của Directory
chọn benchmark Splash-2 để kiểm tra hiệu quả khi thiết
AddressRange Khoảng địa chỉ có thể
lưu trong module đang xét kế CMP trên M2S. Splash-2 là một gói benchmark gồm
11 benchmark khác nhau. Tất cả chúng đều là các tập tin
Bảng III: Cấu hình các module của bộ nhớ thực thi nhằm giải quyết các vấn đề kinh điển trong lý
thuyết tính toán song song như: N-Body, LU, Cholesky
Factorization ... [1][?]
C. Phần mạng nội bộ
IV. THỬ NGHIỆM MULTI2SIM VÀO THIẾT KẾ CMP
Mạng nội bộ là mạng nối các module trong cùng một
mức cache hay giữa các mức cache với nhau. Để cấu A. Thiết kế
hình một mạng, chúng ta làm việc trên hai tập tin: mem- Trước tiên, chúng ta cần một sơ đồ cấu trúc cho CMP.
config chứa những thông tin cơ bản về mạng và tâp tin Một thiết kế được đề nghị trong hình 4.
373
373
- HộiHội Thảo Quốc Gia 2015 về Điện Tử, Truyền Thông và Công Nghệ Thông Tin (ECIT 2015)
Thảo Quốc Gia 2015 về Điện Tử, Truyền Thông và Công Nghệ Thông Tin (ECIT 2015)
Hình 7: Cấu hình cho các module L2
Các module của bộ nhớ chính được cấu hình tương tự
trong hình 8. Phần địa chỉ sử dụng phương pháp xen kẽ
với kích thước các khoảng xen kẽ là 64 bytes, bằng với
Hình 4: Thiết kế CMP
dung lượng của một blocksize trong bộ nhớ chính.
CMP mà chúng tôi đề nghị có 8 nhân, tương ứng với
đó là 8 module data-L1 được ký hiệu d0 đến d7 và 8
module inst-L1 được ký hiệu i0 đến i7. Mỗi nhóm gồm
4 cặp module L1 data - inst cùng chia sẻ một module
L2. Bên canh đó, bộ nhớ chính được chia thành 4 phần
(4 banks) bằng phương pháp xen kẽ (interleave). Những
phần này được liên kết với các module L2 bởi một mạng
nội bộ dạng vòng.
B. Cấu hình
Trước tiên, chúng ta cấu hình phần hình dạng cho các
mức cache, chi tiết như trong hình 5.
Hình 5: Cấu hình phần hình dạng cho các mức cache
Hình 6 cho chúng ta cấu hình của một cặp module
L1 data và L1 inst. Bảy cặp còn lại cấu hính hoàn toán
tương tự. Hình 8: Cấu hình cho các module bộ nhớ chính
Đến đây, phần cấu hình cho các module đã hoàn tất.
Tiếp theo là phần cấu hình cho các nhân. Việc cấu hình
các nhân là tương tự nhau nên chúng tôi chỉ trình bày
cấu hình cho một nhân trong hình 9.
Hình 6: Cấu hình cho các module L1 Cuối cùng, phần cấu hình cho mạng nội bộ được trình
bày trong hình 10. Cấu hình một mạng phải hoàn tất rất
Trong hình 7, các module L2 được cấu hình với dung nhiều chi tiết nhỏ về nút mạng và các liên kết, do khuôn
lượng lớn hơn nhiều so với các module L1. khổ bài báo có giới hạn nên chúng tôi chỉ trình bày tiêu
374
374
- Hội Thảo Quốc Gia 2015 về Điện Tử, Truyền Thông và Công Nghệ Thông Tin (ECIT 2015)
Hội Thảo Quốc Gia 2015 về Điện Tử, Truyền Thông và Công Nghệ Thông Tin (ECIT 2015)
Hình 11: Sự biến thiên của MissRatio khi thay đổi dung
Hình 9: Cấu hình cho các nhân lượng cache
cache. Đầu tiên, chúng ta cùng xem xét HitRatio trung
biểu một số phần.
bình tại các cache L1, ứng với 8 nhân của CMP.
(a) Tổng quan về mạng (b) Cấu hình nút
(c) cấu hình liên kết
Hình 10: Cấu hình cho mạng nội bộ Hình 12: HitRatio ở mức L1 tại các cache tương ứng với
8 nhân của chip CMP
Một cách trực quan, hình 13 cho chúng ta nhận thấy
C. Chạy mô phỏng và thống kê kết quả
ngay HitRatio ở các cache Inst, hay các cache chứa lệnh,
Đầu tiên, chúng tôi muốn tìm một mức dung lượng cao hơn hẳn so với ở các cache dữ liệu. Điều này được
L1, và L2 tối ưu nhất cho Splash-2. Hình 11 cho ta lý giải như sau: trong kiến trúc X86, mỗi lệnh đều có
thấy thống kê về tỷ lệ cache miss ở L1 theo thay ít nhất một đối số, trong đó chủ yếu là các lệnh có 2
đổi theo dung lượng cache L1 và L2. Dễ hiểu rằng đối số. Do đó, số lượng lệnh trong một chương trình ít
khi dung lượng cache L1 tăng lên thì tỷ lệ miss ở hơn nhiều, có khi chỉ bằng phân nửa số lượng địa chỉ
L1 sẽ giảm. Trục hoành là dung lượng của cache dữ liệu. Điều này dẫn đến cache dữ liệu nhanh đầy hơn,
L1/L2 tương ứng là: 8K/64K, 16K/128K, 32K/256K, số địa chỉ bị loại ra cũng nhiều hơn dẫn đến nhân phải
64K/512K, 128K/1024K, 256K/2048K. Từ kết quả trên truy xuất xuống bộ nhớ chính để lấy dữ liệu tại địa chỉ
hình 11, chúng ta thấy khi dung lượng L1 tăng lên đến đó trong tương lai khi cần.
64K thì tỷ lệ cache miss không giảm nữa mà đạt tới mức Tiếp theo, chúng ta cùng xem xét MissRatio tại các
bão hoà. Điều này chứng tỏ các ứng dụng trong Splash-2 mức cache theo các chương trình khác nhau. Những
có không gian địa chỉ làm việc nằm trong tầm 64 KB. chương trình khác nhau sẽ chứa những lệnh và dữ liệu
Do đó trong các bước mô phỏng tiếp theo, chúng tôi khác nhau, do đó, kết quả sẽ rất khác nhau giữa các
chọn sử dụng dung lượng cache L1 bằng 64 KB. chương trình. Chúng ta cùng xem hình 13 để thấy sự
Tiếp theo, chúng tôi chạy mô phỏng nhiều lần cho tất khác biệt này.
cả 11 chương trình benchmark trong Splash-2 với thiết Trong nhiều trường hợp, chúng ta có thể quan sát được
kế đã trình bày ở phần trước. Ứng với mỗi chương trình, dễ dàng MissRatio ở L2 là cao nhất, và L1-Inst là thấp
chúng tôi cho cả 8 nhân cùng chạy, mỗi nhân chạy một nhất. Benchmark thứ 9 - Raytrace là một ngoại lệ khi
tiểu trình giải quyết một phần của bài toán. Với mục tiêu MissRatio ở L1 rất cao. Lý do là chương trình Raytrace
xem xét hiệu quả của phân cấp bộ nhớ, chúng tôi quan làm việc trên một kích thước dữ liệu lớn và có mức
tâm đến các thông số HitRatio và MissRatio, chính là độ rời rạc cao hơn so với các chương trình khác trong
tỉ lệ truy xuất dữ liệu thành công và thất bại ở bộ nhớ Splash-2. Cache L2 có tỉ lệ MissRatio cao nhất cũng là
375
375
- Hội Thảo Quốc Gia 2015 về Điện Tử, Truyền Thông và Công Nghệ Thông Tin (ECIT 2015)
Hội Thảo Quốc Gia 2015 về Điện Tử, Truyền Thông và Công Nghệ Thông Tin (ECIT 2015)
D. Thảo luận về kết quả
Phần IV-C chỉ trình bày các kết quả một cách trực
quan, chúng ta sẽ thảo luận chi tiết hơn về kết quả. Tính
toán cụ thể cho ta các kết quả trong bảng VI.
Cache HitRatio
L1-Inst 98.5 %
L1-Data 90.8 %
L1-Average 94.7 %
L2 86.6 %
Bảng VI: HitRatio ở các mức cache
Hình 13: MissRatio ở các mức cache khi chạy 11
benchmark trong Splash-2
Từ bảng VI, chúng ta dễ dàng tính được tỉ lệ truy xuất
thất bại ở cả 2 mức cache là 0.7%, nghĩa là cache đã
điều dễ hiểu khi L1 là nơi chứa các lệnh và dữ liệu phổ hỗ trợ CMP trong việc truy xuất bộ nhớ ở 99.3% trường
biến nhất, những gì lưu ở L2 có mức độ phổ biến thấp hợp. Đây thật sự là một con số rất ấn tượng.
hơn nên khả năng tái truy xuất cũng thấp hơn, từ đó dẫn
đến MissRatio tăng.
V. KẾT LUẬN
Để phân tích sự cân bằng của Splash-2 trong việc sử
dụng nguồn lực trên chip, chúng tôi thực hiện thí nghiệm Nghiên cứu này đã trình bày có kết hợp thực nghiệm
như trên hình 14 và 15. Hai hình này thể hiện tương ứng việc thiết kế vi xử lý đa nhân sử dụng Multi2Sim. Chúng
phần trăm yêu cầu đọc và ghi từ các nhân trên chip. Kết tôi cũng đã sử dụng benchmark chuẩn Splash-2 để đánh
quả trên cả 2 hình cho thấy các tác vụ thực thi được giá thiết kế CMP và từ đó đánh giá một số đặc tính của
phân chia một cách cân bằng giữa các nhân xử lý. Riêng Splash-2 như dung lượng tối ưu của cache L1 và L2 để
nhân xử lý số 1 luôn có tỷ lệ truy xuất bộ nhớ cao vì thực thi Splash-2, sự phân chia tác vụ của Splash-2 lên
đây là nhân mặc định là nhân chủ, ngoài việc thực hiên các nhân trong hệ thống. Kết quả cho thấy sự phân bố
riêng tác vụ được phân, nhân này sẽ thực hiện việc quản tác vụ khá đều của Splash-2 lên 8 nhân của hệ thống
lý toàn bộ chương trình. và hệ thống tối ưu về hiệu suất ở dung lượng cache L1
bằng 64 KB.
VI. CÁM ƠN
Nghiên cứu này được tài trợ một phần kinh phí từ
đề tài cấp nhà nước theo hợp đồng số 01/2011/HD-
KHCN/ICDREC.
TÀI LIỆU
[1] IBM Research Laboratoty. “64-Bit CPUs: Alpha, SPARC, MIPS,
and POWER,” PC Magazine. February 21, 2002
Hình 14: Phân bố lệnh Read theo các nhân của CMP
[2] Sandeep Shukla et al. "A Brief History of Multiprocessors and
EDA". Design and Test of Computer. Vol 28, issue 03, pp: 96.
May/June 2011
[3] W. Wolf, “The future of multiprocessor systems-on-chips”. Proc.
41st Annu. Des. Autom. Conf. pp. 681–685. 2004
[4] D. E. Culler, J. P. Singh, and A. Gupta. Parallel Computer
Architecture: A Hardware/Software Approach. San Francisco,
CA: Morgan Kaufmann. 1999
[5] Nathan Blinker et al. The Gem5 Simulator. ACM SIGARCH
Computer Architecture News, 2011
[6] Rafael Ubal and David Kaeli et al. “The Multi2Sim Simulation
Framework: A CPU-GPU Model for Heterogeneous Computing”.
The 20st International Conference on Parallel Architectures and
Compilation Techniques (PACT). 2011
[7] Doug Burger and Todd M. Austin. "The SimpleScalar Tool
Hình 15: Phân bố lệnh Write theo các nhân của CMP Set, Version 2.0". University of Wisconsin-Madison Computer
Sciences Department Technical Report No. 1342. June, 1997
376
376
- Hội Thảo Quốc Gia 2015 về Điện Tử, Truyền Thông và Công Nghệ Thông Tin (ECIT 2015)
Hội Thảo Quốc Gia 2015 về Điện Tử, Truyền Thông và Công Nghệ Thông Tin (ECIT 2015)
[8] Christian Bienia, Sanjeev Kumar, Jaswidner Pal Singh and Kai Management Policies". In International Symposium on Microar-
Li. "The PARSEC Benchmark Suite: Characterization and Ar- chitecture (MICRO), Atlanta, Georgia. December 2010
chitectural Implications". Technical Report TR-811-08, Princeton [29] Ying Zheng, Brian T. Davis and Matthew Jordan. "Performance
University. January 2008 Evaluation of Exclusive Cache Hierarchies". Performance Anal-
[9] Major Bhadauria, Vince Weaver and Sally A. McKee. "A Char- ysis of Systems and Software, IEEE International Symposium on
acterization of the PARSEC Benchmark Suite for CMP De- - ISPASS. 2004
sign". Technical Report CSL-TR-2008-1052, Cornell University. [30] Norman P. Jouppi. "Cache Write Policies and Performance".
September 2008 Proc. 20th International Symposium on Computer Architecture
[10] Barrow-Williams, Nick, Christian Fensch, and Simon Moore. (ACM Computer Architecture News), pp 191-201. 1993
"A communication characterisation of Splash-2 and Parsec." [31] Gernot Heiser. "Cache write policy". Lecture notes in Advanced
Workload Characterization, 2009. IISWC 2009. IEEE Interna- Operating Systems course. UNSW 2002
tional Symposium on. IEEE, 2009 [32] Daniel J. Sorin, Mark D. Hill, David A. Wood. "A Primer on
[11] Steven Cameron Woo et al. "The SPLASH-2 Programs: Char- Memory Consistency and Cache Coherence". Morgan Claypool
acterization and Methodological Considerations". Proceedings Publishers. 2011
of the 22nd Annual International Symposium on Computer [33] Hesham Altwaijry, Diyab S. Alzahrani. "Improved-MOESI
Architecture. June 1995 Cache Coherence Protocol". Arabian Journal for Science and
[12] Maurice V. Wilkes. "Moore’S law and the future". Technical Engineering, Volume 39, Issue 4, pp 2739-2748. 2014.
report. 2002 [34] F. J. JIMÉNEZ et al. "Teaching the cache memory coherence
[13] Clements, Alan. "Principles of Computer Hardware". Oxford with the MESI protocol simulator". Spain.
University press. 2006 [35] K. Hwang and Z. Xu. "Scalable Parallel Computing: Tech-
[14] Toy, Wing and Zee, Benjamin. "Computer Hardware/Software nology, Architecture, Programming". McGraw-Hill, New York.
Architecture". Prentice Hall. 1986 1998.
[15] Hennessy, John and David A. Patterson. "Patterson, David.
Computer Architecture: A Quantitative Approach (Fifth ed.)".
Elsevier publishing house. 2012
[16] Rajeev Balasubramonian et al. "Memory Hierarchy Reconfigu-
ration for Energy and Performance in General Purpose Processor
Architectures". Proceeding MICRO 33 Proceedings of the 33rd
annual ACM/IEEE international symposium on Microarchitec-
ture. Pages 245-257. 2000
[17] Harvey G. Cragon. "Memory systems and pipelined processors,
Chapter 4.1: Cache Addressing, Virtual or Real". 1996
[18] Nader Khammassi and Jean-Christophe Le Lannn. "Design and
implimentation of a cache hierachy aware task scheduling for
parallel loops on multicore architectures". Computer Science and
Information Technology, pp 427-439. 2014
[19] Fang Zheng, Chitra Venkatramani, Rohit Wagle and Karsten
Schwan. "Cache Topology Aware Mapping of Stream Processing
Applications onto CMPs". IEEE 33rd International Conference
on Distributed Computing Systems. 2013
[20] Sukumar Ghosh. "Cache memory". Lecture notes in Computer
Organization course. 2015
[21] Mark D.Hill and Alan Jay Smith. "Evaluating Associativity in
CPU Caches". IEEE Transactions on Computers. Vol 38. 1989
[22] Paul Genua. "A Cache Primer". Freescale Secmiconductor. 2004
[23] Sangyeun Cho and Lory Al Moakar. "Augmented FIFO cache
replacement policies for low power embedded processor". Jour-
nal of Circuits, Systems, and Computers, Vol. 18, No. 6, pp
1081–1092. 2009
[24] Nan Guan, Xinping Yang, Mingsong Lv and Wang Yi. "FIFO
Cache Analysis for WCET Estimation: A Quantitative Ap-
proach". Proc. of DATE. 2013
[25] O’Neil, Elizabeth J. O’Neil, Patrick E. Weikum, Gerhard.
"The LRU-K Page Replacement Algorithm for Database Disk
Buffering". Proceedings of the ACM SIGMOD International
Conference on Management of Data, pp 297–306. 1993
[26] Nimrod Megiddo and Dharmendra S. Modha. "Outperforming
LRU with an Adaptive Replacement Cache Algorithm". Com-
puter journal. Published by the IEEE Computer Society. 2004
[27] Natalie Enright and Dana Vantrease. "To Include or Not To
Include: The CMP Cache Coherency Question". Final report
CS838
[28] Aamer Jaleel, Eric Borch, Malini Bhandaru, Simon C. Steely
Jr, and Joel Emer. "Achieving Non-Inclusive Cache Performance
With Inclusive Caches Temporal Locality Aware (TLA) Cache
377
377
nguon tai.lieu . vn