Những lợi thế của việc sử dụng các GPU trên TTL trong kiến ​​trúc máy tính giới thiệu là gì?


24

Tôi dạy khóa kiến ​​trúc máy tính một và duy nhất tại một trường cao đẳng nghệ thuật tự do. Khóa học là cần thiết cho ngành khoa học máy tính lớn và nhỏ. Chúng tôi không có kỹ thuật máy tính, kỹ thuật điện, các khóa học phần cứng khác, v.v. Mục tiêu chính của tôi trong khóa học là cho sinh viên hiểu tất cả các cách để làm việc với máy tính, mà tôi tin rằng họ học tốt nhất thông qua phòng thí nghiệm phần cứng và không chỉ thông qua sách giáo khoa ( Tổ chức và thiết kế máy tínhbởi Hennessy và Patterson). Mục tiêu thứ yếu của tôi là kích thích họ về kiến ​​trúc máy tính và tăng hứng thú với khoa học máy tính. Chuẩn bị chúng trực tiếp cho ngành công nghiệp không phải là một mục tiêu, mặc dù thúc đẩy họ nghiên cứu thêm kiến ​​trúc máy tính là. Các sinh viên thường không có bất kỳ kinh nghiệm xây dựng bất cứ điều gì hoặc tham gia một khóa học phòng thí nghiệm cấp đại học. Thông thường, 10-15 sinh viên học khóa học mỗi học kỳ.

Tôi đã giảng dạy khóa học từ năm 1998 theo cách tương tự như cách tôi được dạy kiến ​​trúc máy tính và thiết bị điện tử kỹ thuật số vào cuối những năm 1980 tại MIT: sử dụng chip DIP TTL trên bảng mạch điện. Trong bài tập phòng thí nghiệm phần cứng đầu tiên, sinh viên xây dựng một bộ cộng đầy đủ. Khoảng nửa học kỳ, họ bắt đầu xây dựng một máy tính đơn giản với bộ hướng dẫn 8 bit. Để giảm hệ thống dây điện, tôi cung cấp cho chúng một PCB với một số thiết bị điện tử (hai flip-flop, hai LS 181 ALU 4 bit được nối với nhau để hoạt động như một ALU 8 bit và bộ đệm ba trạng thái). Trong phòng thí nghiệm đầu tiên, họ lấy được tín hiệu điều khiển (rất đơn giản) cho hai định dạng hướng dẫn và xây dựng mạch, nhập hướng dẫn trên công tắc và đọc kết quả từ đèn. Ở phòng thí nghiệm thứ hai, họ thêm bộ đếm chương trình (2 LS163) và EPROM (trong đócâu hỏi ban đầu của tôi là về, trước khi nó chuyển sang cách tôi nên dạy kiến ​​trúc giới thiệu). Trong phòng thí nghiệm cuối cùng, họ thêm một hướng dẫn chi nhánh có điều kiện. Trong khi các sinh viên dành nhiều thời gian để nối dây và gỡ lỗi, tôi cảm thấy đó là nơi diễn ra nhiều việc học và sinh viên rời đi với ý thức thực sự hoàn thành.

Tuy nhiên, mọi người trên diễn đàn này đã nói với tôi rằng tôi nên chuyển sang sử dụng các loại GPU mà tôi chưa từng làm việc trước đây. Tôi là một kỹ sư phần mềm, không phải là kỹ sư máy tính và đã nghỉ học một thời gian, nhưng tôi có khả năng học hỏi. Tôi sẽ không thể kiếm được nhiều tiền ( có thể vài nghìn đô la) để thay thế các giảng viên kỹ thuật số hiện tại của chúng tôi. Chúng tôi có một phân tích logic duy nhất.

Đưa ra các mục tiêu và các ràng buộc của tôi, các EE của bạn có khuyên tôi nên tuân theo cách tiếp cận hiện tại của tôi về chuyển đổi sang dựa trên các GPU không? Nếu sau này, bạn có thể cho tôi bất kỳ gợi ý cho các tài liệu để giáo dục bản thân mình?

Theo yêu cầu, đây là một liên kết đến các giáo trình và bài tập trong phòng thí nghiệm .

Ngoài ra, có, nó là một khóa học logic kỹ thuật số quá. Khi tôi vào đại học, các sinh viên được yêu cầu học một học kỳ về kiến ​​trúc máy tính và logic kỹ thuật số, và tôi đã kết hợp chúng thành một học kỳ duy nhất. Tất nhiên, đó là một tuyên bố về quá khứ, không phải là tương lai.


Bạn có thể đăng hoặc liên kết đến chương trình giảng dạy của bạn / giáo trình?
Kevin Vermeer

Tôi có thể đề nghị bạn xem xét một phương pháp thay thế? Làm thế nào về việc sử dụng vi điều khiển như Arduinos trong phòng thí nghiệm của bạn?
JonnyBoats

7
@JonnyBoats: ... làm thế nào mà phù hợp? Cô ấy đang nói về việc xây dựng máy tính từ cổng phần cứng.
darron

Để trả lời câu hỏi của bạn - hầu như không ai xây dựng cổng phần cứng, họ mua chip với cổng đã được triển khai. Với các GPU, người ta không xây dựng các cổng trong phần cứng, họ thiết lập chúng trong phần mềm.
JonnyBoats

1
@JonnyBoats: Các GPU đang xây dựng các thiết kế kỹ thuật số từ các cổng phần cứng (LUT là các cổng lập trình). Các cổng tồn tại dưới dạng phần cứng và thiết kế của bạn hoạt động theo cách hoàn toàn vật lý. Với TTL, bạn không phải là "cổng xây dựng" theo tiêu chuẩn đó ... chúng là cổng được xây dựng sẵn. Sự khác biệt duy nhất là các chức năng cổng có thể lập trình được, định tuyến có thể lập trình (nhưng vẫn là vật lý) và có nhiều thứ lớn hơn trong số chúng. Tôi vẫn không thấy cách Arduino phù hợp trong một khóa học về thiết kế logic kỹ thuật số. (Trừ khi bạn có ý định cho cô ấy thay đổi mục đích của khóa học?)
darron

Câu trả lời:


16

Đưa ra các mục tiêu của lớp học, tôi nghĩ rằng cách tiếp cận TTL là tốt, và tôi nói điều này như là một "anh chàng đồ họa". FPGA là một biển logic và bạn có thể làm tất cả mọi thứ thú vị với chúng, nhưng chỉ có rất nhiều thứ có thể làm được trong một học kỳ.

Nhìn vào giáo trình của bạn, lớp học của bạn là sự pha trộn giữa thiết kế logic và các khóa học "cấu trúc máy" mà tôi đã học trong chương trình đại học. (Thêm vào đó, nó dành cho chuyên ngành CS. Tôi hoàn toàn dành cho chuyên ngành CS phải đối mặt với phần cứng thực sự - để chúng thoát khỏi việc viết mã có vẻ như là một bước lùi.) Ở cấp độ giới thiệu này, nơi bạn sẽ tìm hiểu về cách hướng dẫn lắp ráp bị phá vỡ, tôi thấy không có lợi ích thực sự khi sinh viên làm những điều trong mã so với bằng tay. Làm HDL có nghĩa là học HDL, học cách viết HDL tổng hợp và học IDE. Đây là một khái niệm phức tạp hơn nhiều và trừu tượng hóa. Thêm vào đó bạn phải đối phó với các vấn đề phần mềm.

Nói chung, quan điểm của một khóa học sử dụng các GPU là để thực hành tạo logic rất hữu ích - hữu ích để nói chuyện với các thiết bị ngoại vi, comms nối tiếp, RAM, trình tạo video, v.v ... Đây là kiến ​​thức có giá trị, nhưng có vẻ như rất nhiều phạm vi của khóa học của bạn. Các lớp nâng cao hơn trong kiến ​​trúc máy tính có sinh viên thực hiện các CPU tinh vi trong các GPU, nhưng một lần nữa, điều này dường như nằm ngoài phạm vi khóa học của bạn.

Ít nhất tôi sẽ dành một bài giảng cho các GPU. Chạy qua một vài bản demo với bảng dev và hiển thị cho họ quy trình làm việc. Kể từ khi bạn đang ở Mills, có lẽ bạn có thể liên hệ với các folks tại Berkeley người chạy CS 150 / 152 và đi xem cách họ làm việc.


Tôi có thể nói rằng vào đầu những năm 90, CS150 đã được dạy về cơ bản theo cách OP mô tả khóa học của cô tại MIT - chủ yếu là cổng 74xx, đỉnh cao là xây dựng CPU 8 bit (hoặc 4 bit?) Đơn giản. Chúng tôi đã có một dự án ngắn gọn sử dụng công nghệ đồ họa được thiết kế trong một công cụ chụp sơ đồ (không có HDL). Có vẻ như giáo trình hiện tại chủ yếu dựa trên HDL.
Photon

Điểm hay là lớp học là sự pha trộn giữa thiết kế logic và cấu trúc máy. Khi tôi thêm vào mô tả câu hỏi, đã từng có hai khóa học riêng biệt, mà tôi kết hợp thành một. cảm ơn rất nhiều về sự giúp đỡ của bạn. Tôi sẽ nghiên cứu về các GPU và ít nhất là thêm một bài giảng về chúng. Tại UCB, Dave Patterson đã tạo ra một cách tiếp cận mới cho kiến ​​trúc giới thiệu ở cấp độ cao hơn nhiều. Tôi đang để mắt đến nó nhưng không có kế hoạch tạo ra sự thay đổi lớn như vậy.
Ellen Spertus

Tôi đã xem xét sự phức tạp của môi trường FPGA và có lẽ tôi không thực sự không đồng ý rằng nó có thể là quá nhiều cho một khóa học giới thiệu. Nó chỉ có vẻ như là một sự xấu hổ thực sự khi không dạy với quy trình công việc hiện đại. Bản thân tôi đã chơi với TTL và mãi đến khi tôi vào được các GPU, tôi mới bắt đầu thực sự hiểu máy tính hoạt động như thế nào (tương đối đơn giản). Các khóa học có vẻ tốt hơn so với những gì tôi đã làm việc với, vì vậy có lẽ cô ấy có được các khái niệm tốt hơn. Tuy nhiên, từ góc độ của chip logic TTL, bộ xử lý "thực" trông rất xa. Sau các GPU, nó có thể hình thành được.
darron

"Làm thế nào máy tính hoạt động" Tôi có nghĩa là làm thế nào để thực sự xây dựng chúng, không phải là một khái niệm "đồng hồ và flops" mờ ... tất nhiên là đủ cho TTL. (và một lần nữa, vẻ ngoài khóa học của mình như nó có thể dạy này cũng ... vấn đề của tôi là giảng dạy các khái niệm về phần cứng mà có ứng dụng hầu như không có thực, thay vì giảng dạy về phần cứng mà là thực sự được sử dụng)
Darron

@darron, về cơ bản là đã lỗi thời, nhưng về mặt khái niệm thì rõ ràng - không có ngôn ngữ hoặc IDE để làm phức tạp mọi thứ, chỉ có sơ đồ và hệ thống dây nối tiếp điểm. Nó trở nên lộn xộn khi kích thước từ của bạn tăng lên, nhưng công cụ 8 bit không quá tệ. Nếu lớp học đi xa hơn, hoặc nếu có một lớp học tiếp theo, thì các GPU sẽ có ý nghĩa, nhưng tôi nghĩ đó là một sự phức tạp không cần thiết do vật liệu được bảo hiểm.
mng

6

Tôi rất đồng ý với Photon. Có rất nhiều lợi thế khi sử dụng các GPU. Dưới đây là một vài điểm thú vị để xem xét:

1) Nền tảng dễ dàng để thử thiết kế cổng rất nhanh chóng, không mất nhiều giờ hoặc có khả năng làm việc nhiều ngày. FPGA cho phép các thiết kế kỹ thuật số rất phức tạp khá dễ dàng. (RẤT NHIỀU lý thuyết, ít bận rộn hơn)

2) Các phần quan trọng trong công việc của học sinh có thể được thực hiện trong mô phỏng bên ngoài phòng thí nghiệm.

3) Môi trường phần mềm là miễn phí (thường bao gồm cả trình giả lập).

4) Có nhiều nền tảng FPGA tương đối rẻ xung quanh. Giá cả học tập sẽ giúp. Một cái gì đó như Terasic DE0-Nano có giá 59 đô la cho một bộ hoàn chỉnh (và nó trông khá tốt). $ 50-60 có vẻ là phạm vi trên mỗi bảng bạn đang xem.

5) Có rất nhiều thứ thực sự thú vị để làm với các GPU. Có những trang như OpenCores cung cấp hàng trăm mô-đun dựng sẵn để sử dụng với các GPU. Có FPGA4Fun , có rất nhiều hướng dẫn và dự án. Để giải trí đơn thuần, Arcade Arcade được dành riêng để xây dựng các trò chơi với các GPU. Tùy thuộc vào những gì bạn thiết lập xung quanh các bo mạch đồ họa, điều này có thể tạo nên một lớp học thực sự thú vị.

6) Một số bảng có các lớp thiết kế kỹ thuật số dường như đã sẵn sàng cho chúng: Giới thiệu về Thiết kế kỹ thuật số (cảnh báo: tải xuống lớn) bằng cách sử dụng bảng dựa trên Xilinx Spartan 3E hơi cũ. (Mặc dù dựa trên ActiveHDL, cá nhân tôi thích VHDL hoặc Verilog chuẩn hơn) Các nhà cung cấp đồ họa lớn cũng có các chương trình đại học: Chương trình Đại học Xilinx , Chương trình Đại học Altera , Chương trình Đại học Lattice .

7) Quy trình làm việc gần hơn với cách thức làm việc thiết kế chuyên nghiệp diễn ra trong những ngày này. Kiến thức làm việc trong phát triển FPGA là một kỹ năng thị trường ngay lập tức.


Cảm ơn rất nhiều. Tôi chắc chắn sẽ thử những thứ này. FWIW, nếu tôi có một học kỳ thứ hai của phòng thí nghiệm phần cứng, tôi chắc chắn sẽ làm các công cụ đồ họa hoặc Arduino với chúng.
Ellen Spertus

5

Tôi nghĩ rằng ngày nay nếu bạn đang xử lý mọi thứ ở cấp độ cổng, bạn không làm việc trong lĩnh vực "kiến trúc máy tính", bạn thực sự chỉ đang làm điện tử kỹ thuật số cơ bản. Nhưng ngoài ra, bạn không thể dạy mọi thứ cần biết từ điện tử kỹ thuật số cấp cổng cho đến các thuật toán lưu trữ, kiến ​​trúc điện toán song song, SIMD, mạng, v.v. trong một học kỳ.

Vì vậy, nó thực sự đi xuống với những gì bạn muốn dạy. Nếu bạn muốn tập trung vào thiết bị điện tử kỹ thuật số cấp độ cổng, thì làm việc với chip cấp độ cổng sẽ giúp sinh viên có thể làm việc với họ và giúp họ hiểu rõ hơn về vật liệu đó. Nhưng nếu bạn muốn dạy kiến ​​trúc máy tính, có lẽ họ cần phải làm việc ở mức độ trừu tượng cao hơn nhiều so với cổng AND và OR.

Ít nhất, bạn có thể nợ chính mình để học HDL và thực hiện một hoặc hai thiết kế dựa trên nền tảng đồ họa, để bạn (như chuyên gia giáo dục ở đây) có thể đánh giá những kỹ năng đó sẽ phù hợp với mục tiêu của bạn như thế nào đối với học sinh. Tôi hy vọng rằng các câu trả lời khác sẽ cung cấp rất nhiều gợi ý cho các vật liệu thấp và không tốn chi phí sẽ cho phép bạn tăng tốc độ trên thiết kế đồ họa trong một thời gian ngắn. (Gợi ý: Xilinx và Altera đều cung cấp các công cụ thiết kế và mô phỏng phần mềm miễn phí, cùng với hàng tấn ghi chú ứng dụng và các tài liệu giảng dạy khác).


Tôi không đồng ý rằng lớp học không dạy kiến ​​trúc máy tính. Các sinh viên học cách thực hiện một ISA, đây chắc chắn là một phần của kiến ​​trúc máy tính và tôi cũng dạy về đường ống dẫn và bộ nhớ cache. Tôi đồng ý rằng có nhiều kiến ​​trúc hơn những gì tôi dạy trong một khóa học. Tôi đã tham gia một vài khóa kiến ​​trúc khác khi còn là sinh viên, đã thực hiện nghiên cứu học thuật và công nghiệp về kiến ​​trúc, v.v. Tôi đánh giá cao sự khuyến khích để xem xét các HDL và FPGA.
Ellen Spertus

5

Tuy nhiên, một lợi ích của việc sử dụng TTL là đối với các mạch rất cơ bản, các chi tiết của HDL sẽ che giấu mạch thực tế và hầu hết các sinh viên chỉ đơn giản dành phần lớn thời gian để viết và học HDL. Tôi nghĩ rằng TTL là phần đầu tiên và sau đó là FPGA cho phần kiến ​​trúc sẽ tốt hơn, vì thực sự khó tạo ra một hệ thống lập trình được với TTL.


+1 HDL ẩn mạch. Có một vài cách khác nhau để viết bộ ghép kênh trong HDL, và hầu hết trong số chúng có rất ít hoặc không liên quan gì đến cách các cổng được sắp xếp để tạo ra một mux.
ajs410

Đây là điểm mấu chốt - quá dễ để viết mã cho một đồ họa mà không thực sự hiểu ở mức cơ bản về cách thức hoạt động của nó. Bây giờ, có nhiều cách để tránh điều này, ví dụ IDE của Altera bao gồm chế độ nhập sơ đồ có thể giúp bạn tập trung vào thiết kế cấp cổng, nhưng bằng cách này, bạn cũng không thể khai thác được sức mạnh của các GPU, vì vậy sẽ có thực sự là bất kỳ điểm trong chuyển đổi?
Jules

1

Tôi đánh giá đầy đủ tầm quan trọng của một số trải nghiệm thực tế với lắp ráp mạch vật lý, tôi nghĩ cũng cần phải nhận ra rằng bạn không thể bao quát các thực hành điện toán hiện đại mà không có một mức độ nào đó giống như "mô phỏng" hoặc trừu tượng quá nhiều, vì vậy tốt nhất bạn có thể làm là cố gắng thực hiện một số công việc ở mỗi cấp độ trước khi thêm vào sự trừu tượng đủ để làm cho việc thử mức độ phức tạp tiếp theo trở nên hợp lý. Ví dụ, khóa học MIT mà bạn giới thiệu, tại một thời điểm, bắt đầu thực hiện mô phỏng phần mềm của máy RISC 32 bit chạy trên đỉnh của chip & mô-đun 8-bit được lập trình vi mô. Vào thời điểm đó, tôi cho rằng sẽ hiệu quả hơn khi chỉ thực hiện một cỗ máy như vậy trong một đồ họa (điều mà tôi nghi ngờ là chúng có thể đã được thực hiện kể từ đó).

Để giải quyết vấn đề này, sự cám dỗ của tôi sẽ là cố gắng bao gồm cả giai đoạn chip & dây từ sớm và giai đoạn FPGA sau đó trong khóa học. Vì bạn đã có bộ dụng cụ bánh mì, bạn chỉ có thể giữ các phòng thí nghiệm đầu tiên trên đó, và sử dụng một bảng đồ họa hoặc có thể là một mô-đun đồ họa có thể điều khiển được cho các phòng thí nghiệm sau này. Việc xây dựng một cỗ máy lai trong đó có thể phụ thuộc vào một số bộ xử lý tuần hoàn ngoài của bộ vi xử lý, nhưng sẽ cảm thấy rất giả tạo - chỉ cần chuyển đổi công nghệ hoàn toàn ở điểm mà độ phức tạp vượt quá một miếng bánh mì có thể là thực tế nhất.

Bạn sẽ có thể cung cấp các bảng mạch độc lập hiện có với giá dưới 100 đô la / e với giá giáo dục.

Một tùy chọn khác, có thể là xây dựng riêng của bạn như là một phần của lớp, có thể xây dựng giao diện tải nối tiếp FPGA như là phần đầu tiên của dự án. Một lợi thế tốt của điều này là chi phí sẽ đủ thấp để các sinh viên có thể giữ bảng của họ thay vì phải chuyển chúng vào cuối nhiệm kỳ, điều này hy vọng sẽ dẫn đến sự quan tâm và nhận thức liên tục giữa một số ít.


Cảm ơn rất nhiều. Tôi đã nhận thức được sự thay đổi tại MIT. Trên thực tế, tôi đã bắt đầu tại tổ chức hiện tại của mình với bộ dụng cụ phòng thí nghiệm cũ 6,004 / 6.111 mà MIT không còn cần thiết nữa. Tuy nhiên, sinh viên của tôi không phải là sinh viên MIT và không thể tiếp thu nhiều trong một học kỳ, vì vậy tôi phải chọn lọc. (Trên thực tế, tôi đã tìm thấy ở MIT rằng hầu hết các sinh viên không thể tiếp thu nhiều như họ đã ném vào họ, nhưng đó là một cuộc thảo luận khác.) Chi phí thấp hơn của các bảng đồ họa chắc chắn là hấp dẫn.
Ellen Spertus

1

Tôi nghĩ rằng cách tiếp cận đúng đắn sẽ là bắt đầu với việc xây dựng một vài cổng ra khỏi rơle, dễ nhìn và dễ hiểu nhưng rõ ràng là quá chậm và thiếu năng lượng cho các ứng dụng hiện đại. Sau đó cho thấy các bóng bán dẫn có thể được sử dụng để làm điều tương tự gọn hơn, nhanh hơn và hiệu quả hơn và các cổng đóng gói [ví dụ "quad nand"] có thể làm điều đó thậm chí còn tốt hơn. Khi bạn đã đạt đến điểm đó, tôi khuyên bạn nên trình bày cách xây dựng một thứ như bộ ghép kênh và chốt ra khỏi cổng, và sau đó làm thế nào một số cấu trúc lớn hơn có thể được tạo ra từ các bộ ghép kênh, chốt, v.v. để xây dựng một máy tính ngày nay bằng cách hàn vật lý với nhau hàng ngàn bóng bán dẫn rời rạc, nhưng hoạt động bên trong của máy tính rất giống với các bóng bán dẫn ngoại trừ mọi thứ đều nhỏ hơn nhiều.

Một lợi ích lớn mà tôi nghĩ rằng sinh viên sẽ nhận được từ loại hướng dẫn này là sự hiểu biết tại sao nhiều thứ hoạt động như họ làm. Ví dụ: nếu một người đang "mô phỏng" một tập lệnh mà không cần thực hiện bất kỳ thực tế vật lý nào, thì sẽ không cần phải có lệnh "tải bộ nhớ" trong ba chu kỳ trong khi hầu hết các lệnh khác đều thực hiện một chu kỳ. Một số điều có thể được hiểu mà không đi xuống mức bóng bán dẫn, nhưng một số không thể (ví dụ: tầm quan trọng của đầu vào đồng bộ so với không đồng bộ).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.