Khải Trần: công nghệ chip máy tính tiến về đâu?

Lời tòa soạn

Khải Trần làm tiến sĩ về cơ sở dữ liệu (xem tech talk) ở đại học UW-Madison. Nhóm cơ sở dữ liệu của UW-Madison là một trong những nhóm tốt nhất nước Mỹ, trong nhóm còn có một người Việt nổi tiếng khác là giáo sư Đoàn An Hải.

Sau khi tốt nghiệp, anh Khải làm ở Oracle, AWS (trong nhóm làm RedShift) và bây giờ là LinkedIn. Anh ấy chuyên về xây dựng hạ tầng để thu thập và sử dụng dữ liệu lớn. Đây là công nghệ mà nhiều doanh nghiệp lớn ở Việt Nam đang cần. Sắp tới, trong một buổi seminar do Grokking Việt Nam tổ chức, anh Khải sẽ chia sẻ anh đã một tay xây dựng hạ tầng đo lường dữ liệu thời gian thực cho LinkedIn như thế nào (đăng ký ở đây).

Anh Khải hay viết, nhưng ngại làm blog nên chỉ đăng trên Facebook. Tôi nói anh viết gì hay thì gửi tôi đăng trên blog kiếm bông hồng, anh gửi cho bài này, viết sau khi đi nghe bài nhận giả Turing của David Patterson ở hội thảo AtScale.

David Patterson có nhiều đóng góp tạo ra kiến trúc vi xử lý RISC. Hầu hết chip máy tính mới đều sử dụng kiến trúc này, nhưng con x86 nổi tiếng của Intel lại dùng kiến trúc CISC. Ổng là giáo sư ở Berkeley gần 40 năm. Berkely là một trường rất nhỏ ở bắc California, nhỏ đến nỗi phải có chỗ đậu xe riêng cho các giáo sư đoạt giải Nobel.

Có lẽ xin hoài không được chỗ đậu xe, David nghỉ dạy năm 2016, đang thất nghiệp tính đi bốc vác (fun fact: David từng giữ kỷ lục cử tạ của bang California), may sao được Google nhận vào phong cho làm Kỹ Sư Ngoại Hạng (Distinguished Engineer). Vào Google hơn một năm thì được giải Turing (nhận cùng với John Hennessy, chủ tịch Alphabet, không biết hai ông này có ông nào quê ở Hà Giang không).

Trong bài của anh Khải dưới đây có nói về các kỹ thuật tối ưu để làm cho chip chạy nhanh hơn. Chính vì những kỹ thuật này mà chúng ta có Meltdown và Spectre. Tôi hay nói làm security rất dễ nếu không lo đến chi phí, vì nếu không lo chi phí thì đâu có vấn đề security đâu :).

---

Bài viết này diễn giải sự phát triển của kiến trúc máy tính từ Turing Award talk của David Patterson “A New Golden Age for Computer Architecture” mà tôi hy vọng người đọc không cần nhiều chuyên môn vẫn hiểu được.

Tôi không phải là chuyên gia trong lĩnh vực này, nhưng tôi luôn tò mò về kiến trúc máy tính vì ngay từ khi sờ vào cái máy tính lần đầu tôi đã có một câu hỏi mà tôi nhất định phải tìm ra câu trả lời là nó hoạt động như thế nào. Vì thế tôi sẽ diễn giải lại bài nói chuyện này theo cách hiểu của tôi, bạn nào thấy phần nào chưa đúng thì nhận xét chỉnh lại giúp tôi nhé.

Thời kỳ sơ khai


Máy Turing Là mô hình toán học của máy tính được phát minh bởi Alan Turing, trước khi có sự ra đời của bất cứ một chiếc máy tính cụ thể nào. Về cơ bản đây là chiếc máy có trạng thái là một băng nhớ, có thể xử lý đầu vào là một chuỗi các ký tự từ phải sang trái, với mỗi ký tự sẽ nó sẽ dựa trên một luật dịch chuyển cho sẵn để dịch đầu đọc sang các ô nhớ bên cạnh và thay đổi giá trị của ô nhớ hiện tại. Và nó cứ chạy như vậy cho đến khi gặp trạng thái chấp nhận, hoặc từ chối, hoặc chạy mãi mãi không bao giờ dừng cả. Nói phức tạp vậy nhưng có thể coi mỗi bước dịch chuyển là một phép tính toán và cả quá trình chạy đó sẽ mô hình hoá một thuật toán.

Và chiếc máy phức tạp như vậy là sự khởi đầu của cả thế giới tính toán ngày nay. Với sự đóng góp to lớn đó, người ta đã lấy tên ông là tên giải thưởng danh giá nhất dành cho những người làm nghiên cứu về khoa học máy tính (tương đương với giải Nobel ở các ngành khoa học khác), gọi là giải Turing Award.

Chuyển trạng thái Trong chiếc máy Turing có bước dịch chuyển và đổi trạng thái. Khi đưa vào thiết kế thực tế, người ta cần các thiết bị vật lý có thể chuyển đổi trạng thái giữa 0 và 1. Lúc đầu người ta dùng các bóng đèn điện tử (vacuum tube), 0 là tắt, 1 là sáng. Chiếc máy tính đầu tiên nặng 50 tấn, chiếm diện tích 180m2 và chứa 18000 cái bóng đèn. Sau này khi công nghệ máy tính ra đời thì mỗi cái bóng đèn đó được thay bằng một chiếc transitor nhỏ xíu. Tất cả các transitors đó được đặt trong một cái khuôn nhỏ gọi là chip.

Thời của luật Moore


Khi công nghệ vật liệu bán dẫn phát triển thì kích thước của mỗi transistor sẽ được thu nhỏ lại, điều này dẫn đến hai hệ quả sau:

  1. Người ta có thể nhét được càng nhiều transistor vào một con chip hơn, và có thể thực hiện các thiết kế giúp nâng cao hiệu năng của chip.
  2. Khoảng cách giữa các transistors gần hơn thì tốc độ chuyển mạch (clock cycle) nhanh hơn.

Tốc độ tăng số transistors trong một chip theo thời gian tuân theo một trong những quy luật nổi tiếng nhất trong máy tính là luật Moore: số lượng transistors trong một chip sẽ tăng lên gấp đôi cứ sau 18 tháng. Đây là tốc độ tăng của hàm mũ, từ năm 1970 các chips chỉ có khoảng 10 nghìn transistors mà đến những năm 2010 thì con số này đã lên tới 10 tỉ.

Vậy có nhiều transistors như vậy người ta sẽ làm được gì? Muốn trả lời câu hỏi này trước hết phải hiểu hai khái niệm là tập lệnh (ISA instruction set architecture) và ILP - instruction level parallelism (tôi không biết dịch sang Tiếng Việt như nào cho xuôi, vậy sẽ để nguyên gốc Tiếng Anh).

  • Tập lệnh: Mỗi một loại chip chỉ có thể thực hiện được một số lệnh (instructions) nhất định, ví dụ như cộng hai số nguyên, đọc một số nguyên từ bộ nhớ vào chip... Tổng hợp tất cả các lệnh mà chip có thể chạy được gọi là tập lệnh. Trước khi đưa ra thiết kế vật lý cho bất cứ loại chip nào thì người ta phải nghĩ đến tập lệnh mà chip đó sẽ thực hiện trước tiên. Nói một cách khác, tập lệnh là ngôn ngữ để một con chip có thể giao tiếp với thế giới bên ngoài. 
  • ILP: Như đã đề cập trên, máy tính hoạt động theo những xung nhịp để chuyển trạng thái, gọi là các chu kỳ (cycle). ILP sẽ xác định xem có bao nhiêu lệnh cơ bản được chip có thể thực hiện trong một chu kỳ. Tốc độ của một con chip sẽ phụ thuộc cả vào xung nhịp đồng hồ (clock cycle) và ILP. Vậy ILP bằng bao nhiêu cho đủ? Câu trả lời dễ tưởng tượng nhất là một: cứ mỗi chu kỳ thì chạy một lệnh.

Nhưng mà một lệnh trong máy tính thì được thực hiện bởi nhiều bước khác nhau như: tải lệnh, đọc dữ liệu, thực hiện phép tính, ghi dữ liệu, gọi lệnh tiếp theo - đại khái là như vậy. Nếu gộp chúng vào hết một chu kỳ thì thời gian thực hiện chu kỳ sẽ tăng lên và làm máy tính chậm đi.

Để giữ IPL bằng một và giảm clock cycle thì đầu tiên người ta dùng một kỹ thuật đơn giản là pipelined - chia lệnh ra theo nhiều bước nhỏ và chạy các lệnh gối lên nhau. Pipleline có nghĩa là đường ống, giống như một cái ống có, giả sử, năm phần, thì lệnh 1 ở đầu đường ống lệnh và lệnh 5 ở cuối, sau một chu kỳ thì lệnh 2 sẽ được đẩy lên đầu và lệnh 6 sẽ được nhét vào cuối. Và vì vậy pipelined giúp tăng tốc độ đồng hồ mà vẫn giữ nguyên ILP.

Pipelined là kỹ thuật cơ bản nhất và khi chip có thêm nhiều transistors thì người ta nghĩ ra nhiều kỹ thuật phức tạp hơn như superpipelined - chia nhỏ thêm nữa các bước cơ bản để tiếp tục tăng tốc độ đồng hồ, hay superscalar - cho phép thực hiện nhiều lệnh tại cùng một bước trong đường ống (ILP > 1), hay dự đoán sớm việc rẽ nhánh - branch prediction (chi tiết hơn là khi rẽ nhánh mình sẽ không biết lệnh tiếp theo thực hiện cho đến khi thực hiện xong bước tính toán, vì thế hoặc là chờ, hoặc là đoán mò trước, nếu sai thì chạy lại. Branch prediction sẽ giúp cho việc đoán mò này chuẩn xác hơn, ví dụ như rẽ nhánh ở các vòng lặp). Các kỹ thuật này vừa giúp tăng tốc độ đồng hồ, vừa tăng ILP.

Sâu xa là thế, bây giờ quay lại chuyện lịch sử là chip máy tính phát triển ở thời kỳ của luật Moore này như thế nào. Thì có hai trường phái thiết kế tập lệnh chính lúc đó: CISC và RISC.

CISC - complex instruction set computing: Là trường phái thiết kế ISA gồm rất nhiều lệnh khác nhau từ đơn giản gọn nhé đến phức tạp, dài dòng. Tức là tập lệnh là một mớ hổ đốn gì cũng có và sẵn sàng để phục vụ người lập trình luôn.

RISC - reduced instruction set computing: Là trường phái thiết kế ISA gồm một số hữu hạn các lệnh đơn giản, nhỏ gọn, và có cấu trúc nhất quán. Những thao tác phức tạp cần được chuyển đổi qua các lệnh đơn giản. RISC sẽ rất phù hợp với các kỹ thuật cải tiến nói trên.

Vậy CISC hay RISC sẽ lên ngôi? Về lý thuyết thì RISC có nhiều ưu điểm hơn CISC nhưng thực tế thì CISC lại đang thống trị thế giới PC ngày nay bởi sự may mắn của Intel.

Intel dùng CISC từ thời xa rất xa, khi các kỹ thuật cải tiến trên còn chưa ra đời vì số transistors trong một chip còn khá nhỏ. Và Intel may mắn được IBM chọn làm chip cho thế hệ PC đầu tiên thành công vượt bậc, khi mà Motorola bị chậm chân chút ít. Vì tính kế thừa, các phần mềm lúc đầu được viết cho chip của Intel nên sau này các thế hệ chip mới vẫn phải theo kiến trúc cũ. Vậy làm thế nào để Intel tận dụng được các công nghệ cải tiến trên? Họ đưa ra thêm một bước trung gian để chuyển đổi các lệnh trong tập lệnh CISC thành các lệnh RISC. Tức là chip của Intel vỏ là CISC còn ruột là RISC.

Thời hậu luật Moore


Là thời điểm này, ngay bây giờ. Luật Moore thật tốt, nhưng thật tiếc là nó không thể kéo dài mãi mãi vì hai lý do sau:

  1. Giới hạn vật lý: Kích thước các transistors không thể thu hẹp mãi được vì khoảng cách tới hạn không thể vượt qua là khoảng cách giữa các phân tử. Hiện tại kích thước của các transistors đã đến mức một vài nanomet, khó có thể thu nhỏ thêm.
  2. Điện năng tiêu thụ: Công suất tiêu thụ năng lượng của chip sẽ tỉ lệ nghịch với bình phương của kích thước transistors, tức là giảm kích thước transistors đi một nửa thì công suất tiêu thụ sẽ tăng lên gấp bốn. Đây là một vấn đề đau đầu và đau đầu hơn nữa là năng lượng này chủ yếu chuyển sang dạng nhiệt, làm chip nóng lên nhanh chóng. Vì thế mà bạn thường nghe người ta đề cập đến chuyện xây trung tâm dữ liệu ở đáy đại dương hay ở Bắc cực.

Khi luật Moore bị chặn lại thì đâu sẽ là hướng đi tiếp theo cho công nghệ chip? Tôi đương nhiên là không biết, có đoán cũng chỉ là đoán mò như ngày xưa đoán mò về AI. Còn theo Patterson thì đó sẽ là domain-specific chips, tức là các chips chuyên dụng như chips chuyên để huấn luyện deep neural networks. Tôi thấy ông ấy có vẻ hơi marketing cho Google, ăn cây nào rào cây đấy thôi, nhưng cũng có vẻ hợp lý. Chả thế mà gần đây cổ phiếu của NVIDIA và AMD cứ lên ầm ầm.

Nhắc đến chuyện chip chuyên dụng này tôi lại nhớ đến dự án cũ thời tôi làm ở Oracle Labs, nơi người ta muốn chế tạo ra một con chip chuyên dụng cho database và viết phần mềm riêng cho nó, tức là làm từ A đến Z. Và một điều thú vị tôi học được từ dự án này là khi thiết kế chip người ta chỉ có thể chọn hai trong ba yêu cầu sau:

  1. Tính đa năng: chip chạy cái gì cũng được
  2. Hiệu năng cao
  3. Công suất tiêu thụ năng lượng thấp.

Nếu chọn 1 và 2 thì bạn có chip máy tính, server, nếu chọn 1 và 3 thì bạn có chip điện thoại, nêu chọn 2 và 3 thì bạn có các chip chuyên dụng, giống như chip của dự án trên, hay GPU, hay các chip chuyên dụng cho deep learning khác...

Nếu tương lai không phải là các chip chuyên dụng như vậy thì có thể một số bạn sẽ đoán là quantum computing? Tôi thì không biết nhiều về nó, nhưng tôi thấy nó hơi viển vông, cũng giống như cách một số bạn tự tin là dùng blockchain như một chìa khoá vạn năng thần kỳ để mở mọi cánh cửa.

Post a Comment

Previous Post Next Post

Labels Max-Results No.

Boxed(True/False)