So sánh cách tính hiệu suất máy tính giữa MIPS và FLOPS

Loading Preview

Sorry, preview is currently unavailable. You can download the paper by clicking the button above.

Siêu máy tính là một máy tính có mức hiệu suất cao hơn so với một máy tính đa năng. Hiệu suất của siêu máy tính thường được đo bằng các phép toán dấu phẩy động mỗi giây [FLOPS] thay vì triệu lệnh mỗi giây [MIPS]. Kể từ năm 2017, có những siêu máy tính có thể hoạt động trên 1017 FLOPS [một trăm triệu tỷ FLOPS, 100 petaFLOPS hoặc 100 PFLOPS].

Để so sánh, một máy tính để bàn có hiệu suất trong khoảng từ hàng trăm gigaFLOPS đến hàng chục teraFLOPS.

Kể từ tháng 11 năm 2017, tất cả 500 siêu máy tính nhanh nhất thế giới đều chạy hệ điều hành dựa trên Linux. Nghiên cứu bổ sung đang được tiến hành ở Hoa Kỳ, Liên minh Châu Âu, Đài Loan, Ấn Độ, Nhật Bản và Trung Quốc để chế tạo siêu máy tính exascale nhanh hơn, mạnh hơn và vượt trội hơn về mặt công nghệ.

Siêu máy tính đóng một vai trò quan trọng trong lĩnh vực khoa học tính toán và được sử dụng cho một loạt các nhiệm vụ tính toán chuyên sâu trong các lĩnh vực khác nhau, bao gồm cơ học lượng tử, dự báo thời tiết, nghiên cứu khí hậu, thăm dò dầu khí, mô hình phân tử [tính toán các cấu trúc và đặc tính của các hợp chất hóa học, đại phân tử sinh học, polyme và tinh thể] và mô phỏng vật lý [chẳng hạn như mô phỏng những khoảnh khắc ban đầu của vũ trụ, khí động học của máy bay và tàu vũ trụ, sự phát nổ của vũ khí hạt nhân và phản ứng tổng hợp hạt nhân]. Chúng rất cần thiết trong lĩnh vực phân tích mật mã.

Siêu máy tính được giới thiệu vào những năm 1960, và trong vài thập kỷ, siêu máy tính nhanh nhất được sản xuất bởi Seymour Cray tại Control Data Corporation [CDC], Cray Research và các công ty tiếp theo mang tên ông hoặc monogram. Những chiếc máy đầu tiên như vậy là những thiết kế thông thường được tinh chỉnh cao, chạy nhanh hơn những chiếc máy cùng thời với mục đích chung hơn. Qua thập kỷ, số lượng song song ngày càng tăng, với một đến bốn bộ xử lý là điển hình. Vào những năm 1970, các bộ xử lý vectơ hoạt động trên các mảng dữ liệu lớn đã chiếm ưu thế. Một ví dụ đáng chú ý là Cray-1 rất thành công năm 1976. Máy tính vector vẫn là thiết kế chủ đạo trong những năm 1990. Kể từ đó cho đến ngày nay, các siêu máy tính song song ồ ạt với hàng chục nghìn bộ vi xử lý đã trở thành tiêu chuẩn.

Mỹ từ lâu đã dẫn đầu trong lĩnh vực siêu máy tính, đầu tiên là nhờ sự thống trị gần như không gián đoạn của Cray trong lĩnh vực này, và sau đó là thông qua một loạt các công ty công nghệ. Nhật Bản đã đạt được những bước tiến lớn trong lĩnh vực này trong những năm 1980 và 90, với việc Trung Quốc ngày càng trở nên tích cực hơn trong lĩnh vực này. Tính đến tháng 6 năm 2020, siêu máy tính nhanh nhất trong danh sách TOP500 siêu máy tính là Fugaku, ở Nhật Bản, với điểm chuẩn LINPACK là 415,5 PFLOPS, tiếp theo là Summit, ở mức 148,8 PFLOPS, ít hơn khoảng 2,8 lần so với Fugaku. Hoa Kỳ có bốn trong số 10 hàng đầu; Trung Quốc và Ý mỗi nước có hai, Thụy Sĩ có một. Vào tháng 6 năm 2018, tất cả các siêu máy tính kết hợp trong danh sách TOP500 đã phá vỡ mốc 1 exaFLOPS.

Năm 1960, UNIVAC đã chế tạo Máy tính Nghiên cứu Nguyên tử Livermore [LARC], ngày nay được coi là một trong những siêu máy tính đầu tiên, cho Trung tâm Nghiên cứu và Phát triển Hải quân Hoa Kỳ. Nó vẫn sử dụng bộ nhớ trống tốc độ cao, thay vì công nghệ ổ đĩa mới xuất hiện. Ngoài ra, trong số những siêu máy tính đầu tiên là IBM 7030 Stretch. IBM 7030 được IBM chế tạo cho Phòng thí nghiệm Quốc gia Los Alamos, nơi vào năm 1955 đã yêu cầu một máy tính nhanh hơn 100 lần so với bất kỳ máy tính nào hiện có. IBM 7030 đã sử dụng các bóng bán dẫn, bộ nhớ lõi từ, các lệnh pipelined, dữ liệu được tải trước thông qua bộ điều khiển bộ nhớ và bao gồm các ổ đĩa truy cập ngẫu nhiên tiên phong. IBM 7030 được hoàn thành vào năm 1961 và mặc dù không đáp ứng được thách thức về hiệu suất tăng gấp trăm lần, nó đã được Phòng thí nghiệm Quốc gia Los Alamos mua lại. Khách hàng ở Anh và Pháp cũng đã mua chiếc máy tính này và nó trở thành cơ sở cho IBM 7950 Harvest, một siêu máy tính được chế tạo để phân tích mật mã.

Dự án siêu máy tính tiên phong thứ ba vào đầu những năm 1960 là Atlas tại Đại học Manchester, được xây dựng bởi một nhóm do Tom Kilburn dẫn đầu. Ông đã thiết kế Atlas có không gian bộ nhớ lên đến một triệu từ 48 bit, nhưng vì bộ nhớ từ tính với dung lượng như vậy là không thể đáp ứng được, bộ nhớ lõi thực tế của Atlas chỉ có 16.000 từ, với một trống cung cấp bộ nhớ cho 96.000 từ nữa. từ. Hệ điều hành Atlas đã hoán đổi dữ liệu dưới dạng các trang giữa lõi từ và trống. Hệ điều hành Atlas cũng giới thiệu tính năng chia sẻ thời gian cho siêu máy tính, để có thể thực thi nhiều chương trình trên siêu máy tính cùng một lúc. Atlas là một liên doanh giữa Ferranti và Đại học Manchester và được thiết kế để hoạt động với tốc độ xử lý đạt tới một micro giây cho mỗi lệnh, khoảng một triệu lệnh mỗi giây.

Năm Siêu máy tính Rmax
[TFlop / s] Địa điểm
Năm 2020

Fujitsu Fugaku

442.010,0

Kobe, Nhật Bản

2018

Hội nghị thượng đỉnh IBM

148.600,0

Oak Ridge, Hoa Kỳ

2018

IBM / Nvidia / Mellanox Sierra

94.640,0

Livermore, Hoa Kỳ

2016

Sunway TaihuLight

93.014,6

Vô Tích, Trung Quốc

2013

NUDT Tianhe-2

61.444,5

Quảng Châu, Trung Quốc

2019

Dell Frontera

23.516,4

Austin, Hoa Kỳ

2012

Cray / HPE Piz Daint

21.230,0

Lugano, Thụy Sĩ

2015

Cray / HPE Trinity

20.158,7

New Mexico, Hoa Kỳ

2018

Fujitsu ABCI

19.880,0

Tokyo, Nhật Bản

2018

Lenovo SuperMUC-NG

19.476,6

Garching, Đức

Làm sao để có thể đo đạc, đánh giá hiệu suất [performance] và định ra được những yếu tố quyết định đến hiệu suất của 1 máy tính ? Lý do chính để khảo sát về hiệu suất là vì hiệu suất của phần cứng máy tính thường là yếu tố mấu chốt quyết định đến tính hiệu quả trong hoạt động của1 một hệ thống bao gồm cả phần cứng lẫn phần mềm. Hiệu suất luôn là một thuộc tính quan trọng trong việc lựa chọn, mua bán các máy tính được cả người bán lẫn người mua quan tâm! Hiệu suất càng được các nhà thiết kế máy tính [trong đó có chúng ta] quan tâm.

Việc đánh giá hiệu suất máy tính không hề đơn giản. Hiệu suất không chỉ có được do các cải tiến phần cứng mà cũng có thể nhờ vào các phần mềm thông minh hay cả hai. Tùy góc độ ứng dụng khác nhau, hiệu suất hoàn toàn có thể được đánh giá theo những phương cách, những chỉ số khác nhau. Ở góc độ nhà thiết kế máy tính [phần cứng/phần mềm], chúng ta cần nắm rõ: Các vấn đề liên quan đến việc đánh giá hiệu suất máy tính, hoạt động của các thành phần khác nhau [phần cứng/phần mềm] và ảnh hưởng của chúng đến hiệu suất. Trong mỗi ứng dụng cụ thể, xác định phương pháp đánh giá hiệu suất phù hợp.

Định nghĩa hiệu suất: trước hết chúng ta xem xét hai khái niệm liên quan § Thời gian đáp ứng [response time] hay thời gian thực thi [execution time], là thời gian từ khi bắt đầu đến khi kết thúc chương trình. Thời gian này bao gồm: thời gian truy cập đĩa, thời gian truy cập bộ nhớ, thời gian thực thi CPU,… § Throughput: là tổng số các chương trình thực thi xong trong một đơn vị thời gian.

Trước tiên, chúng ta đánh giá hiệu suất thông qua thời gian thực thi. Cực đại hóa hiệu suất đồng nghĩa với tối thiểu hóa thời gian thực thi. Quan hệ giữa hiệu suất và thời gian thực thi ở máy tính X sẽ là:

Ta nói máy tính X có hiệu suất cao hơn máy tính Y n lần đồng nghĩa với máy tính X nhanh hơn máy tính Y n lần.

Thí dụ: nếu máy tính A thực thi chương trình mất 10s và máy tính B thực thi cùng chương trình mất15s, A nhanh hơn B bao nhiêu lần? Ta biết rằng A nhanh hơn B n lần nếu:

Do đó: 15/10=1.5.==> Vậy máy tính A nhanh hơn máy tính B 1.5 lần

Đo đạc hiệu suất

Thời gian được sử dụng làm thước đo cho hiệu suất máy tính. Tuy nhiên thời gian ở đây được định nghĩa theo nhiều cách khác nhau, tùy theo mục đích đo đạc như: thời gian theo xung nhịp [clock], thời gian thực thi [execution time], thời gian trôi qua [elapsed time]. Thời gian thực thi chương trình bao gồm thời gian thực thi bởi CPU lẫn các thiết bị khác [bộ nhớ, đĩa cứng,v.v…]. Để đơn giản, chúng ta chỉ giới hạn xem xét đối với CPU mà thôi. Có thể đo đạc hiệu suất qua thời gian thực thi theo chu kỳ xung nhịp [clock cycle] và thời gian chu kỳ xung nhịp [clock cycle time] như sau:

Thí dụ: thời gian thực thi chương trình trên máy tính A, tần số 4 GHz, là 10s. Chúng ta muốn thiết kế máy tính B có thể thực thi chương trình trên trong 6s. Để đạt được điều này, cần phải tăng tần số xung nhịp của máy B và vì vậy số chu kỳ xung nhịp thực thi chương trình bị tăng lên 1,2 lần. Hãy xác định tần số xung nhịp của máy B?

Đầu tiên, tính số chu kỳ xung nhịp cần để thực hiện chương trình trên máy A, ta có:

Thời gian thực thi trên máy B được tính như sau:

Do đó, cần tăng gấp đôi tần số xung nhịp của máy B so với máy A để chương trình thực thi trong 6s.

Ngoài ra, ta có thể tính thời gian thực thi chương trình dựa vào chỉ số CPI [clock cycle per instruction]: số chu kỳ xung nhịp trung bình cần thiết để thực thi một câu lệnh. Khi đó số chu kỳ xung nhịp có thể được tính:

Số chu kỳ xung nhịp = [số lệnh của chương trình] × CPI

Thí dụ: xét 2 máy tính A và B có cùng kiến trúc tập lệnh. Máy A có chu kỳ xung nhịp là 250 ps và đạt được CPI là 2,0 khi chạy chương trình P. Máy B có chu kỳ xung nhịp là 500 ps và đạt được CPI bằng 1,2 khi chạy chương trình P. Máy nào thực thi chương trình P nhanh hơn và nhanh hơn bao nhiêu lần ?

Do 2 máy có cùng kiến trúc tập lệnh nên số lệnh thực thi của chương trình P trên 2 máy này bằng nhau. Giả sử gọi số lệnh này là I. Ta có: Số chu kỳ xung nhịpA = I × 2.0 Số chu kỳ xung nhịpB = I × 1.2 Do đó, thời gian thực thi trên mỗi máy: Thời gian thực thiA = Số chu kỳ xung nhịpA × thời gian chu kỳ xung nhịpA

= I × 2.0 × 250 ps = 500 × I ps

Thời gian thực thiB = I × 1.2 × 500 ps = 600 × I ps Như vậy, máy tính A nhanh hơn là:

Dựa trên chỉ số CPI, ta có công thức tính thời gian thực thi: Thời gian thực thi = số lệnh × CPI × thời gian chu kỳ xung nhịp hay:

Trong trường hợp tập lệnh được phân chia thành nhiều nhóm lệnh, khi đó hiệu suất có thể tính toán theo nhóm lệnh như sau:

Thí dụ: xét 1 máy tính có đặc điểm tập lệnh như sau:

Khi biên dịch cùng 1 chương trình nguồn bằng 2 trình biên dịch khác nhau, ta được 2 đoạn mã lệnh như sau:

Đoạn mã nào thực hiện nhiều câu lệnh hơn ? chạy nhanh hơn ? Tính CPI cho từng đoạn mã lệnh ?

Đoạn mã 1 thực hiện: 2 + 1 + 2 = 5 lệnh, trong khi đoạn mã 2 thực hiện là: 4 + 1 + 1 = 6 lệnh. Như vậy, đoạn mã 2 thực hiện nhiều lệnh hơn. Để tính số chu kỳ xung nhịp cho mỗi đoạn mã dựa vào công thức:

Do đó:

Vì thế đoạn mã 2 thực hiện nhanh hơn. CPI của mỗi đoạn được tính như sau:

Một chỉ số khác cũng được dùng để đánh giá hiệu suất, đó là MIPS [million instructions per second] được xác định như sau:

Video liên quan

Chủ Đề