Chương 1: GIỚI THIỆU 1.1 Tổng quan Trong hơn nhiều thập niên qua, phương pháp thiết kế đồng bộ chiếm ưu thế trong ngành vi mạch điện tử, các kỹ sư thiết kế phải đối mặt với hàng loạt thử thách. Như được nhấn mạnh của các chuyên gia hàng đầu về công nghệ bán dẫn trong tài liệu “Lộ trình công nghệ bán dẫn quốc tế (ITRS)”, các thử thách đó liên quan đến tác động của sự biến đổi gia tăng, công suất, nhiệt, tỉ lệ lỗi kể cả lỗi mềm, vấn đề mở rộng qui mô, vì các chip hiện nay đang nhắm tới mục tiêu hàng tỉ transistor và cấu trúc đa lõi [1]. Trong khi mô hình đồng bộ đã chiếm ưu thế trong vài thập kỷ qua thì thiết kế bất đồng bộ hoặc là thành phần lai giữa đồng bộ và bất đồng bộ cung cấp tiềm năng cho hệ thống phần cứng phân tán theo hướng đối tượng, hệ thống này hỗ trợ thành phần module, thành phần mở rộng, hoạt động theo yêu cầu mà không cần sự quản lý năng lượng thiết bị rộng rãi và thiết kế chịu được sự thay đổi. Như được nhấn mạnh bởi ITRS, mô hình bất đồng bộ được xem là thành phần quan trọng để giải quyết các thử thách trên.
Thiết kế bất đồng bộ thì không mới, nó đã mang lại nhiều lợi ích cho nhiều công ty điện tử hàng đầu thế giới. Vào cuối năm 1990 và đầu năm 2000, Philips Semiconductors đã thành công về thương mại với các bộ vi điều khiển bất đồng bộ 80C51. Một phiên bản nâng cao của nó là SmartMX được sử dụng rộng rãi trên 75 quốc gia kể cả Châu âu và Mỹ. Năm 2011, Fulcrum Microsystems được Intel mua lại bộ startup bất đồng bộ để sản xuất dòng chip mạng tốc độ cao, các chuyên gia phân tích coi đây là nỗ lực để cạnh tranh với sản phẩm của Cisco.
Dòng chip chuyển mạch FM5000/FM6000 hỗ trợ Ethernet 40 gigabit bao gồm một Crossbar switch tốc độ cao hoàn toàn bất đồng bộ, cung cấp độ rộng băng thông cao, trễ thấp và hỗ trợ liên kết hệ thống linh hoạt. Một ví dụ khác về sự thương mại hóa sản phẩm bất đồng bộ là họ Speedster 22i của FPGA được sản xuất bởi Achronix Semiconductor. Đây là ứng dụng của FPGA hiệu suất cao, được sản xuất bằng công nghệ 22nm, chip này có thể hoạt động ở tần số 1. Một ví dụ thú vị khác là TrueNorth, được phát hành vào tháng 8 năm 2014, đây là chip lớn nhất từng được phát triển tại IBM, với 5,4 tỷ transistor.
Dòng 1 Luận văn tốt nghiệp Thạc Sĩ GVHD: PGS.TS Hoàng Trang chip này tích hợp 4096 lõi thần kinh trên một chip đơn, cấu hình 1 triệu nơ-ron và 256 triệu khớp thần kinh. Quy mô tích hợp này đặt ra một thách thức về thiết kế vật lý phức tạp, đã được đáp ứng thành công bằng cách sử dụng mạng kết nối và các yếu tố xử lý hoàn toàn bất đồng bộ. Trong thực tế đã có một vài thử nghiệm công nghiệp với thiết kế bất đồng bộ, mặc dù các thử nghiệm này khá thành công nhưng không xuất hiện trong các sản phẩm thương mại chẳng hạn như bộ lọc FIR của IBM được thực hiện dưới hình thức lai giữa hỗn hợp đồng bộ và bất đồng bộ. Kết quả thử nghiệm cho thấy giảm được 50% trễ trường hợp xấu nhất và cải thiện được thông lượng.
Ngoài các mục tiêu thiết kế cổ điển, một số ứng dụng mới xuất hiện mà thiết kế bất đồng bộ đã sẵn sàng tạo ra tác động, điển hình nhất là trong việc tích hợp nhiều thành phần có các miền định thời riêng biệt vào trong một thành phần thì bất đồng bộ nhất thiết xảy ra cụ thể trong các bộ vi xử lý nhiều lõi, SoC, hệ thống GALS. Ngoài ra, nhiều ứng dụng khác mới xuất hiện khác hệ thống năng lượng cực thấp và thu hoạch năng lượng, các bộ xử lý tín hiệu số thời gian liên tục, điều khiển trong môi trường khắc nghiệt, mô hình điện toán thay thế. Trong các mạch bất đồng bộ, khái niệm cơ bản về định thời chính là độ trễ. Mọi thành phần thiết kế số được sử dụng trong thiết kế đều có độ trễ vốn có.
Toàn bộ hành vi của mạch thường được mô hình hóa bằng các mô hình trễ để định thời. Các mô hình này có tính đến độ trễ của cổng, dây hoặc cả hai. Khoảng cách ngày càng tăng giữa các mô hình trễ của dây và trễ của cổng khi chúng ta chuyển sang các công nghệ DSM (Deep Sub-Micron). Việc khoảng cách ngày càng tăng đã tạo thêm động lực cho các phương pháp thiết kế mà không phụ thuộc vào định thời.
Trong trường hợp không có xung nhịp, các mạch bất đồng bộ được thiết kế không có giả định về độ trễ. Nguyên tắc chung là đảm bảo rằng mạch hoạt động chính xác trong điều kiện độ trễ cổng và dây khác nhau. Tùy thuộc vào giả định thời gian trễ của dây và cổng, các thiết kế mạch bất đồng bộ được phân thành hai nhóm mô hình chính là mô hình mạch có trễ bị giới hạn và mô hình mạch gần như không nhạy với trễ [2].1 Mô hình mạch có trễ bị giới hạn Trong nhóm mô hình này, giả định trễ qua cổng và dây bị giới hạn, điều đó có nghĩa là mỗi cổng và dây sẽ được gán một giá trị giới hạn của các giá trị trễ, mô hình 2 Luận văn tốt nghiệp Thạc Sĩ GVHD: PGS.TS Hoàng Trang giả định cho tất cả mọi hoạt động, giá trị trễ chỉ rơi vào trong giới hạn đó, các trễ này được đưa vào dựa trên tình huống xấu nhất để tránh điều kiện nguy hiểm (hazard conditions). Do đó, các mô hình có trễ bị giới hạn thường được thực hiện thông qua luồng dữ liệu được điều khiển bởi các ràng buộc định thời cục bộ cho trường hợp xấu nhất.
Tín hiệu req phải được trì hoãn một khoảng thời gian đủ dài cho tới khi tất cả tín hiệu hợp lệ và ổn định. Nhìn chung, tất cả các mô hình có trễ bị giới hạn hoạt động theo kiểu đồng bộ và cho hiệu quả mã hóa tốt nhưng yêu cầu phải phân tích định thời trường hợp xấu nhất.2 Mô hình gần như không nhạy với độ trễ QDI (Quasi Delay Insensitive) Các mạch QDI cho phép trễ cổng và dây tùy ý nhưng nó áp đặt một giả định về isochronic của nhánh để tránh hazard và glitch không mong muốn. Giả định này nằm bên trong các thành phần cơ bản của mạch như bộ cộng, độ lệch thời gian được tạo ra bởi độ trễ của dây ít hơn nhiều so với độ trễ cổng, vì thế độ trễ cho tất cả các đầu cuối của các dây nhánh là tương tự nhau. Thông thường, các giả định về isochronic của nhánh đạt được ở thiết kế cấp cổng của các thành phần cơ bản.
Điều quan trọng cần lưu ý là ở cấp độ kết nối thành phần, độ trễ dây không cần tuân thủ giả định này, vì dữ liệu đầu vào có thể được kiểm soát bằng các mạch phát hiện hoàn thành. Do đó, các mạch QDI cần rất ít việc phân tích định thời và có thể đạt được hiệu suất trung bình thay vì hiệu suất trong trường hợp xấu nhất như các mô hình trễ bị giới hạn. Trong việc triển khai, các mạch QDI thông thường sử dụng sơ đồ mã hóa nhiều dây để truyền dữ liệu.2 minh họa cho sơ đồ mã hóa dual-rail, điều đó có nghĩa là sử dụng hai dây để mã hóa cho một bit nhị phân. Dữ liệu chính nó tự nhận dạng nó hợp lệ hay không nên dây tín hiệu Req được bỏ qua [3].
Trong thiết kế mạch QDI, hầu hết các phương pháp tiếp cận ban đầu chỉ sử dụng cổng phần tử C và mạch Boolean để có được độ nhạy trễ lý tưởng. DIMS (Delay Insensitive Minterm Synthesis) [1] là một ví dụ điển hình. Ngược lại, Null Convention Logic (NCL) xác định trước 27 cổng giữ trạng thái trễ cơ bản cho thiết kế mạch, do đó, NCL cung cấp khả năng tối ưu hóa tốt hơn [4]. Ví dụ, cổng AND hai ngõ vào sẽ yêu cầu 56 transistor bán dẫn, 5 cổng và trễ qua 2 cấp cổng nếu được triển khai trong DIMS, 3 Luận văn tốt nghiệp Thạc Sĩ GVHD: PGS.TS Hoàng Trang trong khi đó, chỉ cần 31 transistor bán dẫn, 2 cổng và trễ qua 1 cấp cổng nếu được triển khai trong NCL [5].
Bên cạnh các cách tiếp cận giống như DIMS, một nhóm phương pháp khác được sử dụng để thiết kế các mạch QDI dựa trên ngôn ngữ lập trình Hoare’s CSP (Communicating Sequential Processes). Tangram [6], và Balsa [7] là những cách tiếp cận như vậy. Những nhóm tiếp cận này là các ngôn ngữ dựa trên CSP dành cho thiết kế bất đồng bộ và cung cấp các công cụ chuyên dụng để tổng hợp các thiết kế thành netlist của các thành phần bắt tay. Thành phần bắt tay là sự triển khai mạch của một cấu trúc ngôn ngữ, chẳng hạn như lập trình tự và lặp lại [8], được tạo ra để mô tả mạch bất đồng bộ.
Về ngôn ngữ thiết kế, Tangram, Haste và Balsa, dựa trên CSP, là các ngôn ngữ lập trình đồng thời thuật toán cấp cao, hoàn toàn khác với các ngôn ngữ phần cứng hiện tại như VHDL và Verilog. Hơn nữa, các cách tiếp cận này thường không thể tạo ra các mạch bất đồng bộ hiệu suất cao, vì chúng sử dụng phép dịch theo hướng cú pháp để tổng hợp các mạch trực tiếp từ mô tả chức năng [9]. Do đó, Null Convention Logic là một trong những phương pháp được quan tâm nhất cho đến nay. Sự phát triển của NCL từ việc thực thi và kiểm tra các mạch NCL trên Field Programmable Gate Array (FPGA) [10-14].
Một số thư viện cấu trúc Complementary Mental Oxide Semiconductor (CMOS) [13-16] và các công cụ tự động “gate mapping” [17,18] đã được phát triển cho NCL. Thêm vào đó, các kỹ thuật DFT (Design For Test) [19] cho mạch NCL đã được khám phá ra. Ngoài ra, kỹ thuật thiết kế cổng NCL mới được nghiên cứu đã cho hiệu suất vượt trội so với phương pháp thiết kế NCL bằng CMOS tĩnh và bán tĩnh truyền thống [20]. Tuy nhiên, việc tổng hợp các thiết kế bất đồng bộ dựa trên NCL vẫn còn là vấn đề gây khó khăn lớn đối với các nhà nghiên cứu do thiếu các thư viện bất đồng bộ NCL.
Vì thế, việc nghiên cứu giải pháp để tạo ra thư viện bất đồng bộ NCL vừa đơn giản, dễ hiểu và gần giống với phương pháp đồng bộ nhất là việc rất cần thiết.