Sunday, June 23, 2013

Máy tính mainframe là gì và người ta sử dụng nó như thế nào? - Tìm hiểu cơ bản về siêu máy tính, những cỗ máy phức tạp và mạnh mẽ

IBM_zEnterprise_mainframe_tim_hieu
Máy mainframe System zEC12 do IBM sản xuất

Mainframe là một loại máy tính thường được sử dụng bởi các công ty, tập đoàn cũng như những tổ chức chính phủ nhằm phục vụ cho các công việc cần xử lí lượng lớn dữ liệu, chẳng hạn như thống kê dữ liệu, lên kế hoạch sử dụng tài nguyên, xử lí giao dịch… Thuở ban đầu, chữ mainframe được người ta dùng để chỉ những thùng máy lớn chứa bộ xử lí và bộ nhớ của những máy tính cỡ lớn. Thế nhưng sau này, khi nhắc tới mainframe, người ta nghĩ đến một cỗ máy to lớn và mạnh mẽ hơn những máy tính cá nhân. Ngoài ra, mainframe còn có tên gọi khác là "Big Iron". Vậy loại máy tính này có những đặc điểm gì, mời các bạn cùng đọc qua bài viết này.

Lịch sử mainframe

Vào những năm 1950-1970, nhiều nhà sản xuất máy tính đã bắt đầu tham gia vào việc chế tạo mainframe. Nhóm các nhà sản xuất này được biết tới với cái tên "IBM và bảy chú lùn", bao gồm IBM và các hãng như Burroughts, UNIVAC, NCR, Control Data, Honeywell, General Electric và RCA. Sau đó, General Electric và RCA rời đi nên nhóm này được gọi là "IBM và BUNCH" (chữ cái đầu tiên của các hãng còn lại). IBM bắt đầu sự thống trị trên thị trường mainframe bằng series 700/7000 và rồi đến series 360. Kiến trúc mainframe này lại tiếp tục tiến hóa để trở thành zSeries, dòng máy mainframe chủ lực của IBM tính đến thời điểm hiện tại.

ibm_7090_computer
Trong ảnh là mainframe IBM 7079. Chiếc 7079 đầu tiên được lắp đặt vào tháng 11 năm 1959. Vào năm 1960, một chiếc mainframe như thế nào được bán với giá 2.900.000$, còn nếu thuê thì giá là 63.500$ mỗi tháng.

Đó là những công ty ở Mỹ, còn bên ngoài đất nước này, nhiều hãng cũng tham gia sản xuất mainframe, bao gồm Siemens và Telefunken ở Đức, ICL của Anh, Olivetti của Đức, Fujitsu, Hitachi, Oki, NEC ở Nhật. Liên Xô cũng có làm ra một số máy mainframe copy từ IBM trong thời kì chiến tranh lạnh, ngoài ra họ cũng có series mainframe BESM và Strela do chính mình thiết kế.

mainframe_Hitachi
Mainframe Hitachi HDS GX 8110


Những năm đầu của thập niên 1970, nhu cầu của thị trường đối với mainframe ngày càng thu hẹp, trong khi môi trường cạnh tranh đang rất khốc liệt. Lúc đó, RCA đã về chung với UNIVAC, General Electric thì rời đi. Đến những năm 1980, tới lượt Honeywell sát nhập vào Bull, còn UNIVAC thì trở thành một phần của Sperry. Tới năm 1986, Sperry gia nhập cùng với Burroughts để tạo ra Tập đoàn Unisys. Năm 1991, AT&T sở hữu một phần của NCR.

Cũng trong thời gian đó, các công ty nhận thấy rằng thiết kế microcomputer (PC, laptop, desktop hiện nay của chúng ta có thể xem là microcomputer, tuy nhiên cụm từ này không còn được dùng phổ biến) có thể được triển khai với chi phí thấp hơn so với mainframe, người dùng thì có quyền kiểm soát hệ thống của mình nhiều hơn trước. Họ có thể thiết lập các mạng lưới máy tính cá nhân để thực hiện công việc của mình, vậy thì dại gì mà không chia tay mainframe. Các terminal (máy tính trạm cuối) để dùng chung với mainframe dần dần bị thay thế bởi PC. Chính vì thế, việc lắp đặt các cỗ máy mainframe mới ngày càng trở nên ít hơn, chỉ còn lại chính phủ và các tổ chức dịch vụ tài chính là còn sử dụng loại máy tính này. Người ta thậm chí còn dự đoán rằng chiếc mainframe cuối cùng sẽ ngừng hoạt động vào năm 1996.

Thế nhưng đến những năm cuối thập niên 1990, nhiều công ty tìm ra một cách mới để tận dụng chiếc mainframe hiện có thể mình. Trong bối cảnh chi phí xây dựng các mạng máy tính ngày càng đắt đỏ và phức tạp hơn, xu hướng điện toán tập trung (tức tập trung vào một máy duy nhất) được củng cố. Đà tăng trưởng cực kì mạnh mẽ của thương mại điện tử cũng kéo theo sự phát triển của các hệ thống xử lí nền dựa vào phần mềm của mainframe cũng như xử lí cơ sở dữ liệu.

Ngoài ra, sự phát triển của hệ điều hành Linux cũng giúp mainframe dần lấy lại vị thế của mình. IBM sử dụng Linux cho các máy mainframe của họ từ năm 1999 và một chiếc mainframe duy nhất có thể chạy hàng trăm máy ảo Linux cùng lúc. Khả năng hỗ trợ tốt cho các phần mềm nguồn mở của Linux cũng giúp mainframe được ưa chuộng hơn. Cuối năm 2000, IBM giới thiệu kiến trúc 64-bit z/Architecture, đồng thời mua lại nhiều công ty phần mềm để rồi tích hợp những phần mềm đó vào trong mainframe của hãng.

Định nghĩa mainframe

Hiện nay, mainframe được định nghĩa là những cỗ máy tính có các thành phân bên trong độc lập nhưng có khả năng phối hợp tốt để cung cấp độ tin cậy ở mức cao. Nó có khả năng lấy vào một lượng dữ liệu khổng lồ, tính toán, xử lí và xuất ra kết quả cũng khổng lồ không kém. Mainframe đòi hỏi phải có một sự tương thích ngược chặt chẽ với các phần mềm cũ bởi những công ty, tổ chức lớn sử dụng những phần mềm có tính chuyên biệt cao nên và rất tốn kém nếu phải viết lại. Ngoài ra, mainframe được thiết kế để có thể chạy liên tục (uninterrupt) trong một thời gian rất dài. Đây cũng chính là yếu tố quan trọng nhất của mainframe bởi nó vốn được dùng cho những mục đích mà chỉ cần vài phút hệ thống bị sập là một "thảm họa" sẽ xảy ra, hoặc nếu hệ thống ngừng chạy dù chỉ trong thời gian ngắn thì chi phí để khôi phục hoạt động là cực kì đắt đỏ.

Việc cập nhật phần mềm trên máy mainframe thường đòi hỏi thiết lập lại hệ điều hành hoặc một phần của nó. Còn tính chất chạy không ngừng nghỉ của mainframe chỉ có được khi sử dụng những kiến trúc hệ điều hành ảo hóa như z/OS hay Parallel Sysplex của IBM, XPLC của Unisys. Các kiến trúc ảo hóa này cho phép một hệ thống đảm đương nhiệm vụ của hệ thống khác trong quá trình người ta cập nhật, nâng cấp hay sửa chữa.

Để có thể tận dụng hết thế mạnh về khả năng xử lí và hoạt động liên tục của mainframe cần đến những kĩ sư được đào tạo chuyên nghiệp và bài bản. Việc bảo trì, lắp đặt mainframe không đơn giản như ráp một bộ máy để bàn ở nhà. Nếu không cẩn thận và làm cho hệ thống bị hư hỏng một phần nào đó thì tất cả lợi thế của mainframe đối với cơ quan, tổ chức sẽ bị mất đi hoàn toàn.

Ngoài ra, mainframe còn có tính bảo mật cao hơn nhiều so với những loại máy tính khác hiện nay. Các tổ chức nghiên cứu của Mỹ đánh giá những mainframe như IBM zSeries, Unisys Dorado, Unisys Libra là các hệ thống an toàn nhất thế giới bởi số nguy cơ bảo mật của chúng chỉ có đếm trên đầu ngón tay, trong khi các máy Windows, Linux và Unix thì có đến hàng nghìn lỗ hổng có thể bị khai thác. Nói tóm lại, ở thế giới của mainframe không hề tồn tại virus hay malware, chính vì thế mà nhiều chính phủ vẫn tin dùng nó để xử lí và lưu trữ dữ liệu.

IBM_z10
IBM z10, một dòng mainframe được dùng phổ biến hiện nay

Ban đầu, người ta xài các thẻ, băng giấy và băng từ để chuyển dữ liệu cũng như để lập trình cho mainframe. Khi đó, máy hoạt động như một công cụ xử lí hàng loạt nhằm hỗ trợ cho công việc văn phòng. Các terminal được dùng kèm với mainframe để chạy ứng dụng chứ không phải để phát triển phần mềm. Đến khoảng năm 1970, bàn phím, màn hình xuất hiện để cung cấp một giao diện cho phép người dùng nhập liệu cũng như theo dõi kết quả.

card_IBM
Một thẻ (card) dùng để lưu trữ dữ liệu của các mainframe xưa cũ

3278-IBM_Terminal
3278, một chiếc terminal phổ biến dùng để truy cập và sử dụng mainframe do IBM sản xuất

Sau đó, mainframe hoạt động như một máy tính "timesharing" để hỗ trợ hàng trăm người dùng cùng truy cập vào mainframe để chạy các thao tác xử lí hàng loạt. Đến năm 1980, nhiều máy mianframe hỗ trợ các terminal đồ họa (không phải giao diện đồ họa người dùng - GUI - như trên PC). Từ sau năm 2000 trở đi, hầu hết những mainframe hiện đại đã phần nào hoặc hoàn toàn loại bỏ các terminal cổ điển, thay vào đó người dùng cuối sẽ giao tiếp với máy thông qua giao diện nền web hoặc các console. Và để kết nối vào mainframe, người dùng không bắt buộc phải ngồi kế bên nó. Các PC và Terminal có thể truy cập vào mainframe từ xa.


Những phần cứng cấu tạo nên mainframe

So_do_cau_truc_mainframeCấu tạo đơn giản của một chiếc mainframe

Một chiếc mainframe tiêu biểu sở hữu các bộ xử lí (PU), bộ nhớ RAM, các kênh dữ liệu vào ra (I/O channel), các bộ điều khiển (control unit) và thiết bị ngoại vi (peripheral devices). Trong đó, PU chính là bộ não của mainframe, nó là đơn vị có nhiệm vụ thực thi các chỉ dẫn. Một máy mainframe có thể chứa nhiều bộ xử lí, chẳng hạn như: bộ xử lí trung tâm (Central Processor, viết tắt là CP hay CPU), bộ xử lí mã hóa và giải mã (CPACF), bộ xử lí tải Linux (IFL), có cái dùng để thực thi mã Java (zAAP), cái khác nữa thì xài cho việc tăng tốc xử lí cơ sở dữ liệu(zIIP). CP và RAM sẽ được đặt trong một thùng máy lớn gọi là Central Processor Complex (CPC).

Ví dụ, nếu mua một chiếc mainframe z10 của IBM sản xuất, bạn sẽ có trong đó 12 CPU, 12 IFL, 12 bộ ICF, 6 bộ zAAP và 6 bộ zIIP. Bộ nhớ của RAM của z10 có thể đạt tối đa 384GB tùy mục đích sử dụng.

I/O channel là những đường di chuyển và điều khiển dữ liệu giữa thiết bị nhập, xuất dữ liệu với bộ nhớ. Những thiết bị ngoại vi như đầu băng từ, ổ đĩa, đầu đọc thẻ, máy in... được kết nối với mainframe thông qua các channel này. Và bởi vì các thiết bị ngoại vi này chậm hơn CPU, CPU có thể sẽ tốn thời gian chờ dữ liệu từ chúng chuyển sang. Chính vì thế mà người ta mới tạo ra các bộ điều khiển Control Unit, chính là peripheral processor mà bạn đã đọc thấy ở trên, chuyên đảm nhận các tác vụ với thiết bị ngoại vi.

Còn cổng kết nối thì sao? Như bạn đã biết, thiết bị ngoại vi kết nối với máy tính của chúng ta qua cổng USB, trên Mac có FireWire, Thunderbolt, trên server là SCSI. Tương tự như thế, các kết nối trên mainframe là OSA, ESCON và FICON. Những kênh OSA Express dùng cho mạng LAN thông thường, mạng theo dạng token (vòng tròn). Trong khi đó, ESCON và FICON thì dùng cho cáp quang với tốc độ truyền tải cực cao.

Mainframe chủ yếu sử dụng giao diện dòng lệnh để giao tiếp với người dùng, cũng như Terminal trong Linux hay Command Prompt trong Windows. Đối với hệ điều hành zOS của IBM dành cho mainframe, giao diện dòng lệnh này được gọi là console. Tất nhiên là nó cũng có giao diện đồ họa người dùng nữa và theo IBM, họ đã đổ 100 triệu USD vào nghiên cứu giao diện đồ họa để giúp việc sử dụng mainframe trở nên đơn giản hơn.

Connect_to_mainframe
Giao diện khi kết nối vào mainframe

Console
Giao diện để thực thi lệnh trên mainframe

zos2
Anh kĩ sư IBM này đang sử dụng laptop của mình để truy cập vào mainframe chạy zOS và khai thác giao diện đồ họa người dùng bên trong hệ thống

Tính chất của mainframe

Những chiếc mainframe hiện đại cho phép chúng ta chạy nhiều "thực thể" (instance) hệ điều hành cùng lúc. Kĩ thuật ảo hóa này gần cho phép OS hoạt động cứ như là đang chạy trên một máy tính riêng biệt và sau này nó chính là Hypervisor dùng trên các server. Hiện nay kĩ thuật ảo hóa đã phổ biến hơn và có mặt ngay cả trong chiếc PC nhỏ xíu của chúng ta, thế nhưng mức độ và sức mạnh thì không thể nào bằng mainframe được. Có hai mức độ ảo hóa thường xuất hiện trên mainframe, bao gồm logical partition (mỗi phân vùng sẽ chứa một hệ điều hành) và virtual machine (nhiều máy ảo chạy trên một hệ điều hành).

Phần cứng của mainframe có thể được dễ dàng thêm hoặc thay thế mà không làm hệ thống bị ngừng hoạt động, điều mà nhiều server hiện nay không thể có được. Như đã nói ở trên, mainframe dùng trong những ứng dụng mà mỗi khi hệ thống ngừng là một "thảm họa" xảy ra, do đó nó không được phép dừng lại ngay cả khi nâng cấp phần cứng. Thông thường, mỗi tổ chức sẽ dùng hai máy mainframe, một cái đặt ở cơ sở hoạt động chính, cái còn lại đặt ở trung tâm dữ liệu có tác dụng sao lưu. Cỗ máy thứ hai này có thể được sử dụng ở trạng thái kích hoạt hoàn toàn, kích hoạt một phần hoặc chỉ đơn giản là nằm ở chế độ chờ để lỡ chiếc mainframe chính có gặp trục trặc hay bị thiên tai ảnh hưởng thì vẫn còn một cái để duy trì hoạt động của công ty. Các hệ thống lưu trữ mạng cũng được xài kèm với mainframe và được phân tán ở nhiều địa điểm khác nhau để đảm bảo tính an toàn.

Mainframe được thiết kế để đảm được một khối lượng rất lớn dữ liệu vào ra. Với mainframe thì việc xử lí những tập tin với dung lượng hàng gigabyte hoặc terabyte là chuyện thường ngày ở huyện mà thôi. Kể từ giữa thập niên 1960, mainframe nhận được sự hỗ trợ của nhiều bộ xử lí phụ, được gọi là channel hoặc peripheral processor. Các máy phụ này sẽ quản lí thiết bị nhập và xuất dữ liệu nhằm giúp CPU chính của mainframe tập trung hoàn toàn vào việc xử lí và chứa dữ liệu lên bộ nhớ. So với một PC thông thường, mainframe có thể dung lượng lưu trữ gấp hàng trăm hoặc hàng nghìn lần và có thể truy cập chúng nhanh hơn nhiều.

Thị trường mainframe

Các máy của IBM hiện đang chiếm lĩnh đến 90% thị trường mainframe. Phần còn lại chia đều cho hệ thống ClearPath của Unisys, các máy của Hitachi, NonStop của HP (mua lại từ hãng Tandem Computers), BS2000 và ICL VME của Fujitsu. Nhiều máy do Fujitsu, Hitachi và NEC vẫn còn đang được bán ở thị trường Nhật.

Về vi xử lí trung tâm (CP, hay CPU) dùng trong mainframe, Fujitsu và Hitachi vẫn tiếp tục sử dụng bộ xử lí dựa trên chuẩn S/390 tùy biến, ngoài ra còn có thêm các CPU như POWER, SPARC, MIPS và Xeon cho những máy tầm thấp. Bull thì sử dụng một hệ thống pha trộn giữa chip Intel Xeon với chip do mình phát triển. NEC và Bull cũng có những máu dùng chip Intel Xeon kết hợp với Intel Itanium. IBM, đúng với vị trí anh cả trong thị trường này, đã chi rất nhiều tiền vào nghiên cứu và phát triển các CPU riêng của mình, chẳng hạn như con chip dùng trong mainframe z10 ra mắt hồi năm 2008 với bốn nhân xung nhịp 4,4GHz.

Unisys-ClearPath_Libra_4100_Series_Photo1
Một chiếc mainframe Libra 4100 của hãng Unisys

Khác biệt giữa mainframe và siêu máy tính

Như mình đã nói ở trên, mainframe là cỗ máy được tạo ra để xử lí một lượng lớn dữ liệu, trong khi siêu máy tính tập trung vào một lượng nhỏ dữ liệu nhưng các phép tính thì cực kì phức tạp. Siêu máy tính tập trung vào tốc độ xử lí một vấn đề nào đó và chính vì thế, nó thường dùng cho các mục đích nghiên cứu khoa học. Một số khác biệt chính giữa siêu máy tính và mainframe như sau:

1) Tốc độ mainframe được đo bằng MIPS, tức bao nhiêu triệu chỉ dẫn mà máy có thể được thực hiện trong một giây. Trong khi đó, siêu máy tính thì đo bằng FLOPS, tức bao nhiêu phép tính dấu chấm động có thể xử lí mội giây. Nói về khả năng tính toán, supercomputer mạnh hơn mainframe.

2) Mainframe được xây dựng để xử lí "giao dịch" một cách ổn định, và giao dịch ở đây cũng giống như khái niệm được hiểu trong thế giới donah nghiệp. Nó bao gồm những việc như cập nhật cơ sở dữ liệu về lượng hàng còn trong kho, đặt vé máy bay, chuyển khoản,… Với mỗi "giao dịch", các thao tác mà máy có thể thực hiện đó là đọc và ghi dữ liệu vào đĩa, gọi các hàm/tính năng của hệ điều hành, di chuyển dữ liệu từ hệ thống này sang hệ thống khác.

Để biết thêm về siêu máy tính, mời các bạn đọc bài viết Tìm hiểu cơ bản về siêu máy tính, những cỗ máy phức tạp và mạnh mẽ. Nhiều tin tức về siêu máy tính cũng có thể xem qua tag siêu máy tính.

Vậy còn mainframe và server thì sao?

Có thể bạn sẽ nghĩ ngay rằng mainframe nghe cũng giống server đấy chứ. Thực chất, chúng ta cũng có thể xem mainframe là một dạng máy chủ bởi nó cũng có khả năng đóng vai trò làm "hub" cho nhiều máy khác hoặc terminal truy cập vào. Nhiều server có thể cùng nhau tạo thành một mạng lưới (server farm) và sức mạnh tính toán của hệ thống này chính là sự tổng hợp từ tất cả mọi server thành phần. Thế nhưng, nhược điểm của server farm đó là độ ổn định không cao, không thể nào sánh được với mainframe, đi kèm theo đó còn là chi phí bảo dưỡng cao, nhất là với những tổ chức có quy mô lớn. Chưa hết, hiệu quả sử dụng năng lượng của nhiều server nhỏ gộp lại không bằng được một chiếc mainframe duy nhất.

data-center-21
Đây là một server farm, bao gồm nhiều server đặt trong một tòa nhà gọi là data center




Tìm hiểu cơ bản về siêu máy tính, những cỗ máy phức tạp và mạnh mẽ


ibm-blue-gene-p-supercomputer
Một phần nhỏ của siêu máy tính Blue Gene/P của IBM

Trong thời gian gần đây chắc hẳn các bạn cũng được nghe nói nhiều về cụm từ siêu máy tính, hay supercomputer. Đây là một loại máy tính rất khác với những chiếc desktop, laptop mà bạn sử dụng hằng ngày. Nó có kích thước to hơn, sức mạnh vượt trội hơn rất nhiều lần so với các máy tính cá nhân. Cũng chính vì thế mà siêu máy tính không bao giờ được dùng để soạn văn bản, chơi game pikachu mà người ta áp dụng nó vào việc nghiên cứu khoa học, xử lí, tính toán phức tạp. Vậy siêu máy tính là gì, cấu tạo nó ra sao và người ta dùng nó vào việc gì?

Lịch sử siêu máy tính

Cụm từ siêu máy tính (supercomputer) lần đầu tiên xuất hiện trong một bài báo của tờ New York World vào năm 1929 dùng để chỉ các bảng tính khổng lồ mà IBM thiết lập ở Đại học Columbia. Những 1960, kiến trúc siêu máy tính được một kĩ sư người Mỹ tên là Seymour Cray làm việc cho tổ chức Control Data Corporation (CDC) thiết kế và chiếc CDC 6600 ra mắt năm 1964 được xem là supercomputer đầu tiên của thế giới. Seymour Cray được tôn vinh là cha đẻ của siêu máy tính.

Sau đó một thời gian, Cray muốn rời CDC cùng với một số đồng nghiệp nhưng bị CEO William Norris của công ty này từ chối vì Cray đang làm việc trên một dự án cho Hải quân Mỹ. Mãi đến năm 1972 Cray mới thực hiện được ý định này và ông đã lập ra công ty riêng mang tên Cray Research. Sau này Cray Research đổi tên thành Cray Inc. và đây là một trong những hãng cung cấp siêu máy tính hàng đầu thế giới ở thời điểm hiện tại.

Tại công ty riêng của mình, vào năm 1976, Cray đã công bố chiếc supercomputer Cray-1 vớiCPU 80MHz và nó là một trong những siêu máy tính được người ta biết đến nhiều nhất. Tới năm 1985, Cray-2 ra mắt với 8 vi xử lí. Hệ thống này được làm mát bằng chất lỏng và chất flourinert do 3M sản xuất. Cỗ máy này có tốc độ tính toán 1,9 gigaflops và nó chính là siêu máy tính nhanh nhết thế giới đến tận những năm 1990.

EPFL_CRAY-I_1_clean
Siêu máy tính Cray-1 với thiết kế hình trụ, đảm bảo khoảng cách giữa vi xử lí với các thành phần khác trong hệ thống là đều nhau

Nếu như những chiếc siêu máy tính của năm 1980 chỉ dùng vài CPU thì đến năm 1990, siêu máy tính đã được trang bị hàng nghìn bộ vi xử lí và chúng bắt đầu xuất hiện nhiều ở Mỹ, Nhật. Kể từ đây, tốc độ tính toán của loại máy tính này bắt đầu tăng vọt một cách nhanh chóng. Ví dụ như chiếc siêu máy tính dùng trong hầm gió của Fujitsu sử dụng 166 vi xử lí vector* với tốc độ 1,7 gigaflops mỗi chip vào năm 1994. Hai năm sau đó, đến lượt máy Hitachi SR2201 với tốc độ 600 gigaflops có được nhờ 2048 bộ xử lí cũng đã làm cho cả thế giới kinh ngạc. Intel cũng có siêu máy tính Paragon của mình với khoảng 1000 đến 4000 chip i860 và nó từng đạt danh hiệu nhanh nhất thế giới vào năm 1993.

*Vi xử lí vector là CPU được tích hợp các bộ chỉ dẫn đặc biệt để có thể hoạt động trong mảng dữ liệu 1 chiều. CPU vector có thể tăng đáng kể hiệu năng ở một số tác vụ nhất định, đặc biệt là trong lĩnh vực giả lập số hoặc và thực thi các tác vụ giống nhau. CPU vector phổ biến trong những năm 1970-1980 nhưng ngày nay nó đã gần như biến mất hoàn toàn.

Đến ngày hôm nay, siêu máy tính dần xuất hiện nhiều hơn và nó cũng có mặt trên nhiều quốc gia hơn. Hệ điều hành, kiến trúc cũng như phần cứng dùng trong siêu máy tính cũng theo đó thay đổi rất nhiều so với vài chục năm trước.

Titan_supercomputer
Một số tủ thuộc Titan, siêu máy tính mạnh nhất tính đến thời điểm viết bài này

Kiến trúc và phần cứng siêu máy tính

A. Kiến trúc
Cách thức người ta thiết kế siêu máy tính đã thay đổi rất nhiều trong thời gian gần đây. Những chiếc supercomputer thuở đầu của Seymour Cray hoạt động dựa trên kĩ thuật tính toán song song và thiết kế nhỏ gọn để có thể đạt được hiệu năng tính toán cao.

Nói thêm về điện toán song song (parellel computing), đây là khái niệm dùng để chỉ việc sử dụng một số lượng lớn CPU để thực hiện một bộ các phép tính nào đó. Tất cả các phép tính sẽ được thực thi song song nhau. Có hai cách mà người ta thường áp dụng:

1. Sử dụng một mạng lưới nhiều máy tính phân tán ở nhiều nơi để xử lí số liệu (grid computing), và phân tán ở đây có nghĩa là khoảng cách địa lý của chúng tương đối xa nhau. Thường thì khi một chiếc máy tính trong mạng lưới được chạy lên, nó sẽ ngay lập tức trở thành một phần của hệ thống tính toán song song, và càng nhiều máy tính tham gia thì tốc độ xử lí sẽ nhanh hơn. Có một máy chính (Control Node) nằm ở giữa làm nhiệm vụ điều khiển và phân bổ tác vụ cho các máy con. Còn có hai cách nhỏ thuộc dạng này, chúng ta sẽ tìm hiểu thêm ở bên dưới.

grid-computing-1

2. Sử dụng một lượng lớn CPU đặt gần nhau, và người ta gọi đây là computer cluster và đây là kiểu điện toán tập trung. Những CPU này thường nằm trong nhiều máy tính giống nhau, lân cận nhau (gọi là các node, node card hay computer node) và chúng được kết nối nhằm tạo ra một hệ thống lớn hơn, hoàn chỉnh hơn. Người ta xem cả hệ thống như một siêu máy tính duy nhất. Với biện pháp này, các nhà thiết kế cần đảm bảo rằng tốc độ cũng như tính linh hoạt nội liên kết giữa các máy tính phải đủ đáp ứng yêu cầu công việc. Theo số liệu từ TOP500, số siêu máy tính cluster hiện chiếm đến 82,2% thị phần siêu máy tính toàn cầu. Siêu máy tính IBM Blue Gene/Q sử dụng dạng cluster.

cluster_kien_truc
Từ các vi xử lí, các nhà sản xuất/cung ứng siêu máy tính sẽ tích hợp nó lên một chiếc "computer card" với RAM và có thể có thêm nhiều linh kiện khác để tạo ra một chiếc máy tính gần hoàn chỉnh. Nhiều computer card gắn vào một khay, sau đó các khay lại tiếp được bỏ trong những tủ chứa (rack). Nhiều rack sẽ cấu thành một hệ thống siêu máy tính hoàn chỉnh

Ngoài ra còn có siêu máy tính dạng Massively Parallel Processors (MPP), tức là một máy tính bự nhưng có hàng nghìn CPU và thanh RAM trong đó. Chúng được nối với nhau theo một chuẩn mạng đặc biệt tốc độ siêu cao chứ không xài các thứ phổ thông như cluster. Ngoài ra, mỗi CPU sẽ có bộ nhớ riêng của nó và một bản sao hệ điều hành/ứng dụng riêng. MPP hiện chiếm 17,8% thị phần siêu máy tính, theo TOP500. Siêu máy tính IBM Blue Gene/L (đứng thứ 5 thế giới vào năm 2009) được thiết kế dạng MPP.

MPP


B. Phần cứng
Như đã nói ở trên, vào những năm 1970 thì siêu máy tính chỉ dùng một số ít bộ xử mà thôi. Nhưng đến những năm 1990, số CPU của nó đã lên đến hàng nghìn và ở thời điểm hiện tại, số CPU vài chục nghìn là chuyện hết sức bình thường đối với một siêu máy tính.

Ở các siêu máy tính dạng cluster, người ta thường ghép nhiều "nút" (node) nhỏ lại với nhau để tạo ra một hệ thống lớn như hình bạn đã thấy ở ngay bên trên. Mỗi một nút như thế có thể xem là một chiếc máy tính gần như hoàn chỉnh với một hoặc nhiều CPU, GPU, nhiều thanh RAM, quạt tản nhiệt và một số thành phần khác nữa. Các nút sẽ được kết nối với nhau theo nhiều cách, có thể là dùng cáp đồng bình thường, cũng có thể là chuyển sang dùng cáp quang để đảm bảo băng thông tốt hơn. Sức mạnh của siêu máy tính sẽ là sức mạnh tổng hợp từ tất cả các node lại với nhau.

Ketnoi
Kết nối dây nhợ trong siêu máy tính Titan

Trong các hệ thống siêu máy tính, người ta cũng cần đến ổ lưu trữ, và các ổ HDD, SSD này không nằm trong máy (device attached storage - DAS) như trên PC. Thay vào đó, chúng thường được bố trí trong một tủ riêng (storage area network - SAN), có kết nối mạng riêng và dung lượng cũng rất "khủng".

Giờ đây, ngoài CPU đơn thuần, người ta còn sử dụng thêm các GPGPU (general purpose graphic processor unit) để tăng cường sức mạnh cho siêu máy tính. Từ trước đến nay chúng ta biết GPU được sử dụng để dựng hình ảnh, xử lí những thứ liên quan đến đồ họa, nhưng ngoài ra chúng còn có thể xử lí số liệu và làm một số công việc tương tự như CPU. Hiện nay giá thành của các GPGPU đã giảm, hiệu suất lại tăng cao nên ngày càng nhiều siêu máy tính "nhờ vả" vào linh kiện này để tăng sức mạnh nhưng vẫn đảm bảo chi phí không bị đội lên quá nhiều. Siêu máy tính mạnh nhất thế giới (tính đến 23/5/2013) mang tên Titan đặt ở Mỹ cũng dùng 18.688 GPU NVIDIA Tesla K20 bên cạnh 18.688 CPU AMD Opteron 16 nhân, như vậy tổng số nhân CPU của máy là 299.008, một con số khổng lồ so với máy tính chỉ 2 hay 4 nhân.

Titan_computercard
Một node của siêu máy tính Titan, trong này có 4 CPU AMD Opteron 16 nhân và 4 GPU NVIDIA Tesla K20 (kiến trúc xây dựng là Kepler). RAM mỗi node là 32GB, cộng với 6GB bộ nhớ GDDR5 của card đồ họa nữa. Tổng cộng có 710 Terabyte bộ nhớ trong Titan.


Thực chất việc sử dụng GPGPU để tăng cường cho CPU vẫn còn là một vấn đề đang được các nhà khoa học bàn cãi. Nhiều người cho rằng việc bổ sung GPGPU đúng là có giúp siêu máy tính trở nên mạnh hơn và ghi được điểm benchmark cao hơn, tuy nhiên khi đưa vào thực tế thì người ta phải bỏ rất rất nhiều công sức tính chỉnh phần mềm để có thể vắt sạch sức mạnh của kiến trúc kết hợp này.

cray_xe6_xk6_schematic 
Cấu trúc của hãng Cray dùng trong Titan là sự kết hợp của cả hai loại Cray XK6 và XE6, trong đó XK6 có hai card NVIDIA đi kèm với RAM bên cạnh CPU AMD Opteron 64


Châu Âu cũng đang phát triển một dự án siêu máy tính dùng CPU Tegra 3 v2 GPU GeForce. Cụ thể, cỗ máy này xử dụng 256 bộ vi xử lí bốn nhân NVIDIA Tegra 3, 256 bộ xử lí đồ họa GeForce 520MX và 1TB bộ nhớ RAM DDR3 để hoạt động. Với cấu hình như thế này, máy có thể tính được 38 teraflops trong một giây nhưng chỉ tốn 1W điện cho mỗi 7,5 gigaflops. NVIDIA gọi đây là siêu máy tính đầu tiên sử dụng CPU của ARM kết hợp với GPU của hãng. Dự án nghiên cứu, hợp tác xây dựng siêu máy tính ở Châu Âu mang tên Mont-Blanc hứa hẹn sản phẩm này sẽ hoạt động với hiệu suất cao hơn từ bốn đến mười lần các đối thủ siêu máy tính khác vào năm 2014.
CUDA-ARM-Development-Kit

So_Do_PRACE

Tản nhiệt, tiêu thụ năng lượng

Qua nhiều thập kỉ, một trong những vấn đề chính với siêu máy tính dạng tập trung đó là việc tiêu thụ năng lượng và tản nhiệt. Mỗi một chiếc siêu máy tính ăn một lượng điển khổng lồ, và phần lớn trong số đó bị chuyển hóa thành nhiệt năng. Khi hệ thống bị quá nhiệt có thể khiến hiệu suất giảm đi trầm trọng, tuổi thọ các linh kiện cũng bị rút ngắn đáng kể. Các nhà khoa học đã nghiên cứu nhiều phương án để giải quyết vấn đề này, chẳng hạn như bơm chất làm mát Flourinert, làm mát bằng chất lỏng, bằng không khí, bằng hệ thống lai giữa chất lỏng với không khí. Đặc biệt hệ thống lai này được sử dụng phổ biến trong các siêu máy tính được cấu thành từ nhiều tủ chứa. Ngoài ra, một số siêu máy tính còn sử dụng vi xử lí năng lượng thấp để đương đầu với vấn đề nhiệt độ cao như chiếc Blue Gene của IBM. Chiếc IBM Aquasar còn đặc biệt hơn nữa khi nó sử dụng nước nóng để tản nhiệt và dòng nước đó cũng được dùng để làm ấm cho cả tòa nhà trong mùa lạnh.

he_thong_lam_mat_titan
Hệ thống tản nhiệt bằng nước của Titan

Nói thêm về lượng điện sử dụng bởi supercomputer, chúng ta có thể lấy dí dụ như chiếc Tianhe-1A của Trung Quốc có công suất 4,04 megawatt, tức là cơ quan chủ quản phải chi ra 400 USD/giờ cho tiện điện và tính cả năm là 3,5 triệu USD. Do đó, vấn đề chi phí khi vận hàng siêu máy tính cũng là một bài toán phức tạp.

Để đo hiệu suất sử dụng năng lượng của siêu máy tính, người ta sử dụng con số FLOPS trên Watt và chỉ số này càng cao càng tốt, tức là với mỗi Watt điện thì siêu máy tính tính toán được nhiều phép tính hơn. Năm 2008, chiếc Roadrunner của IBM đạt 376 MFLOPS/W. Năm 2010, chiếc Blue Gene/Q đạt 1684 MFLOPS/W. Năm 2011, chiếc Blue Gene đặt tại New York thì đạt 2097 MFLOPS/W. Còn FLOPS là gì thì mình sẽ nói đến ở phần bên dưới.

Hệ điều hành

Từ đầu thế kỉ 20, hệ điều hành sử dụng trong siêu máy tính cũng đã ghi nhận nhiều sự chuyển biến, tương tự như cách mà kiến trúc supercomputer thay đổi. Những OS đầu tiên được tùy chỉnh cho từng siêu máy tính một để tăng tốc độ, tuy nhiên điều đó rất tốn thời gian, công sức và tiền bạc. Do đó, trong xu hướng hiện nay, người ra sẽ dùng những OS chung như Linux cho siêu máy tính chứ không còn xài UNIX như những năm 90 nữa. Bạn có thể nhìn vào biểu đồ ngay bên dưới là thấy ngay xu hướng chuyển dịch này.

Operating_systems_used_on_top_500_supercomputerssvg

Trong số 500 siêu máy tính nhanh nhất thế giới, Linux là hệ điều hành chiếm số lượng lớn nhất và việc áp dụng OS nguồn mở này ngày càng được ưa chuộng. Ở thời điểm viết bài, Linux đang chiếm đến 93,8% thị phần siêu máy tính. UNIX cũng là hệ điều hành được sử dụng trên nhiều siêu máy tính nhưng không phổ biến như Linux và nó đang nắm trong tay 4% thị phần. Windows và BSD cũng có mặt, tuy nhiên số lượng không đáng kể bởi chúng không đáng tin cậy như Linux và UNIX, ngoài ra còn có ảnh hưởng bởi chi phí bản quyền nữa. OS X của Apple trước đây từng được dùng cho siêu máy tính nhưng chủ yếu là trong các supercomputer dạng phân tán.

Công cụ phần mềm

Vì kiến trúc tính toán song song của siêu máy tính, người ta thường phải áp dụng các kĩ thuật lập trình đặc biệt để khai thác hết sức mạnh của nó. Những công cụ dùng cho việc này là các hàm API như MPI, PVM, VTL, ngoài ra còn có các giải pháp phần mềm nguồn mở như EBowulf. Trong hầu hết các trường hợp, môi trường PVM và MPI sẽ dùng cho các hệ thống dạng cluster, còn OpenMP dùng cho hệ thống có bộ nhớ chia sẻ. Các thuật toán cũng cần được tối ưu hóa rất nhiều bởi vì siêu máy tính không chỉ chạy trên một mà trên rất rất nhiều CPU, GPU, chưa kể là từng tủ siêu máy tính lại nằm riêng với nhau. Các nhà khoa học cũng phải tính tới việc giảm thiểu đến mức thấp nhất có thể thời gian rỗi của CPU khi đợi dữ liệu từ node khác chuyển sang. Với các siêu máy tính dùng GPGPU, người ta có thêm các mô hình CUDA của NVIDIA để tăng cường hiệu suất máy.

Siêu máy tính phân tán

Nãy giờ chúng ta nói hơi nhiều về siêu máy tính tập trung rồi, giờ thì quay sang siêu máy tính phân tán một chút nhé. Ở dạng phân tán, có hai cách thức để tận dụng nhiều máy tính nhỏ, đó là Phương pháp cơ hội (opportunistic) và Phương pháp cận cơ hội (quasi-opportunistic).

A. Phương pháp cơ hội

Đây là một dạng của điện toán grid. Trong phương pháp này, một số lượng lớn máy tính riêng lẻ sẽ tình nguyện phối hợp cùng nhau thành một mạng lưới lớn để thực thi các tác vụ tính toán cũng khổng lồ không kém. Grid computing đã từng giải quyết được nhiều vấn đề cần đến điện toán song song, nhưng nó cũng có hạn chế là không tính được một số tác vụ cổ điển như mô phỏng dòng chảy.

Mạng lưới siêu máy tính nhanh nhất tính đến tháng 3/2012 đó là Folding@Home (do đại học Standford phát triển). Nó có sức mạnh 8,1 petaflops và sử dụng các vi xử lí x86. Trong số đó, 5,8 petaflops được "cống hiến" từ các máy tính với nhiều loại GPU khác nhau, 1,7 petaflops thì đến từ các máy chơi game PlayStation 3, số còn lại là do nhiều CPU đóng góp. Hồi năm 2011, thế giới có grid BOINC với sức mạnh 5,5 petaflops góp từ 480.000 máy tính. Còn trong năm ngoái, Simon Cox đã làm ra một chiếc siêu máy tính với 64 chiếc Raspberry Pi's. Hệ thống này mang tên Iridis-Pi và có chi phí chỉ 2500 Bảng Anh và có bộ nhớ 1TB (16GB thẻ SD cho mỗi chiếc Raspberry Pi).

B. Phương pháp cận cơ hội

Điện toán quasi-opportunistic cũng tương tự như điện toán opportunistic, tuy nhiên nó có chất lượng dịch vụ cao hơn nhờ việc tăng cường kiểm soát các tác vụ mà mỗi máy đơn lẻ sẽ làm. Nó cũng điều khiển chặt chẽ quá trình sử dụng tài nguyên phân tán. Kèm theo đó còn có một hệ thống thông minh giúp đảm bảo mức độ hiện diện cũng như mức độ ổn định của các máy thành viên. Để phương pháp cận cơ hội phát huy hiệu quả, các máy tính sẽ cần phải có một "hợp đồng phân bổ tài nguyên" kết hợp với nhiều hình thức liên lạc, chống lỗi phức tạp.

Đo đạc hiệu năng

A. Khả năng vs Dung lượng

Siêu máy tính được thiết kế để nhắm việc tính toán các phép tính phức tạp, tức là capability computing. Điều này có nghĩa là siêu máy tính được sử dụng để đưa khả năng tính toán lên mức tối đa, từ đó giải quyết một vấn đề trong thời gian ngắn nhất có thể. Các phép tính này rất đặc biệt và nó khó đến nỗi những máy tính bình thường không thể đảm đương được, ví dụ mô phỏng vụ nổ hạt nhân, dự báo thời tiết, nghiên cứu lượng tử...

Còn nếu muốn xử lí một dung lượng lớn dữ liệu, người ta không dùng supercomputer mà dùng một loại máy tính gọi là mainframe. Mainframe có thể đảm được dữ liệu đầu vào khổng lồ nhưng các phép tính mà nó chạy không phức tạp như siêu máy tính. Mainframe có thể dùng để giải quyết nhiều vấn đề nhỏ cùng lúc. Chúng ta sẽ có một bài về mainframe riêng, hẹn các bạn khi đó để nói thêm về loại máy tính này.

B. Đo đạc hiệu năng siêu máy tính

Nếu như ở PC, laptop, tablet, smartphone người ta sẽ tiến hành benchmark để biết được sức mạnh của máy thì trên siêu máy tính cũng y như thế. Tuy nhiên, khả năng tính toán của siêu máy tính được đo bằng FLOPS (FLoating Point Operations Per Second - phép tính dấu chấm động thực hiện trong mỗi giây), trong khi máy tính bình thường thì đo bằng MIPS (instructions per second - số chỉ dẫn được thực hiện trong mỗi giây). FLOPS có thể được thêm một số tiếp đầu ngữ trong hệ đo lường SI như tera- (TFLOPS, tức 10^12 FLOPS, đọc là teraflops), peta (10^15 FLOPS).

Hiện nay các siêu máy tính hàng đầu thế giới đều đã bước sang ngưỡng Petaflops, ví dụ như chiếc IBM Roadrunner năm 2008 là 1,105 Petaflops, Fujitsu K năm 2011 đạt mức 10,51 Petaflops, còn chiếc Cray Titan mạnh nhất hiện nay là 17.59 Petaflops. Người ta dự đoán là chỉ sau khoảng 10 năm nữa, siêu máy tính sẽ sớm bước sang hàng Exaflops (10^18 FLOPS) vì công nghệ của CPU và GPGPU đang tăng trưởng vượt bậc, giá thành lại rẻ đi và hiệu năng tiêu thụ điện ngày càng được nâng cao.

Vậy những con số FLOPS ở đâu ra? Nó được đo bằng một phần mềm tên là Linpack. Tuy nhiên cũng cần phải nói thêm rằng không một con số đứng riêng lẻ nào có thể phản ánh toàn bộ hiệu năng của máy tính nói chung và siêu máy tính nói riêng. Có hai con số được thể hiện khi nói tới siêu máy tính: hiệu năng tính toán dấu chấm động lý thuyết của vi xử lí (kí hiệu Rpeak) và hiệu năng xử lí đầu vào (Rmax). Rpeak gần như không thể nào đạt được trong đời thực, trong khi Rmax là hoàn toàn có thể đạt đến khi siêu máy tính chạy. Tất cả những con số FLOPS bạn thấy ở trên đều là Rmax.

C. Danh sách TOP500

Kể từ năm 1993, những siêu máy tính nhanh nhất thế giới được liệt kê vào một danh sách gọi là TOP500 dựa theo điểm số benchmark của nó. TOP500 có trang web riêng của họ ở địa chỉhttp://top500.org và nó cung cấp cho chúng ta rất nhiều thông tin hữu ích. Bên cạnh việc xem danh sách những supercomputer hàng đầu thế giới, bạn có thể xem thống kê về việc phân bổ hệ điều hành trong thế giới siêu máy tính như thế nào, số lượng siêu máy tính mỗi nước, kiến trúc siêu máy tính (MPP hay cluster)… Thực chất thì danh sách này không hề được đánh giá là chính xác tuyệt đối và không thiên vị, tuy nhiên nó là một trong những nguồn phổ biến nhất mà người ta thường lấy khi so sánh sức mạnh siêu máy tính ở một thời điểm nào đó.

Tên các siêu máy tính mạnh nhất thế giới từ năm 2008 đến nay theo TOP500
thu_hang_sieu_may_tinh

Ứng dụng của siêu máy tính

Một số ứng dụng của siêu máy tính trong thời buổi hiện nay:
  • Dự báo thời tiết, nghiên cứu khí động học, nghiên cứu sự biến đổi khí hậu, mô phỏng động đất
  • Phân tích xác suất, dựng mô hình phóng xạ
  • Mô phỏng vụ nổ hạt nhân trong không gian 3D
  • Lượng tử học, phân tử học, sinh học tế bào, nghiên cứu sự gấp khúc của protein
  • Mô phỏng não người
  • Nghiên cứu và dựng mô hình của các hiện tượng vật lý
  • Nghiên cứu và mô phỏng trí tuệ nhân tạo
  • Tái tạo vụ nổ Bigbang (do siêu máy tính ở trung tâm Texas Advanced Computing Center thực hiện), nghiên cứu về vật chất tối
  • Nghiên cứu thiên văn học
  • Dựng mô hình lây lan của dịch bệnh
  • Chơi cờ vua! (siêu máy tính Deep Blue của IBM từng đánh bại đại kiện tướng Garry Kasparov vào năm 1997)
NOAA_Supercomputer
Ảnh mô phỏng do siêu máy tính của Cơ quan Khí tượng và Hải dương Mỹ (NOAA) dựng ra bằng siêu máy tính của họ


Một số hãng sản xuất và cung cấp siêu máy tính


Bạn có thể thấy là IBM, HP và Cray là ba công ty dẫn đầu trên lĩnh vực siêu máy tính hiện nay. Dell, Intel, NEC, Lenovo, Acer, Fujitsu, Oracle cũng có tham gia vào lĩnh vực này.
Sieu_may_tinh_nha_cung_cap



Các nước có siêu máy tính


cac_nuoc_co_sieu_may_tinh


Nguồn: Wikipedia (1), (2), (3), TOP500NOAA

(Theo Tinh Tế)

No comments:

Post a Comment