Xem mẫu

  1. 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
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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
  7. 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
  8. 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
  9. 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