CPU CPU, làm thế nào để tìm tốc độ tối đa?


14

Tôi chỉ đang đi vào các GPU và nếu tôi hiểu chính xác, bạn đang kết nối các cổng logic với nhau bằng mã. Vì vậy, nếu tôi thiết kế CPU trong Verilog, nó sẽ kết nối một số cổng logic với nhau và hoạt động, nhưng làm cách nào để biết CPU DIY của tôi có thể chạy nhanh như thế nào? Nó phụ thuộc vào cái gì?


12
@KingDuken Tôi tò mò về sự thay thế cho Verilog để thiết kế một cái gì đó giống như CPU ​​mà bạn có trong đầu (không phải VHDL tôi đoán :))?
Eugene Sh.

1
@KingDuken Đó không phải là vấn đề tôi gặp phải, tôi đã tạo CPU và kiến ​​trúc của nó trên bảng mạch và muốn chuyển nó sang một bản đồ họa. Câu hỏi của tôi là, làm thế nào tôi có thể tính toán đồng hồ tần số tối đa cho CPU của tôi sẽ là bao nhiêu, giới hạn của nó là gì?

4
Bạn có thể muốn google "phân tích thời gian tĩnh"
Photon

14
@KingDuken Là một người đã thiết kế hai CPU, nó không thực sự tốn thời gian. Bạn có thể có một bộ xử lý làm việc trong 1-2 tháng, nếu bạn biết bạn đang làm gì.
110971

2
@KingDuken Sự thật thú vị: Sun / Oracle đã phát hành mã nguồn Verilog cho bộ xử lý UltraSPARC T1 và T2 của họ. Tôi tình cờ đã thấy một vài người trong người, và tất cả họ đều làm việc. FYI, họ thậm chí đã giành chiến thắng Specint_rate2006! : D Điều đó cho thấy rõ ràng việc thiết kế CPU trong Verilog hoặc các HDL khác là không thể. Tôi đã tự mình thực hiện một vài lần như một sở thích và thực sự không có gì là không thể (một khi bạn
mò mẫm

Câu trả lời:


29

Tốc độ của một thiết kế bị giới hạn bởi một số điều. Cái lớn nhất rất có thể là độ trễ lan truyền thông qua logic tổ hợp trong thiết kế của bạn, được gọi là đường dẫn quan trọng . Nếu bạn sử dụng một đồ họa nhanh và viết HDL rất cẩn thận, có lẽ bạn có thể đạt 700 MHz trên một cái gì đó như Virtex Ultrascale +. Trên một đồ họa cấp thấp hơn, ví dụ như Spartan 6, một con số hợp lý có lẽ giống với 250 MHz. Điều này đòi hỏi phải có đường ống ở mọi nơi để bạn có lượng logic tổ hợp tối thiểu tuyệt đối giữa các thành phần trạng thái (mức tối thiểu hóa logic), lượng quạt thấp (giảm thiểu tải trên các phần tử logic) và không có tổ chuột bị tắc nghẽn (đường dẫn định tuyến hiệu quả).

Logic cấu trúc của các GPU khác nhau sẽ có các tham số thời gian khác nhau. Nhanh hơn, các GPU đắt tiền hơn sẽ có độ trễ nhỏ hơn và kết quả là có thể đạt được tần số xung nhịp cao hơn với cùng một thiết kế hoặc chạy một thiết kế hoặc thiết kế phức tạp hơn với ít đường ống hơn ở cùng tần số. Hiệu suất trong một quy trình cụ thể có thể tương tự nhau - ví dụ, Kintex Ultrascale và Virtex Ultrascale được thực hiện trên cùng một quy trình và có độ trễ của ô và định tuyến tương tự. Không thể nói thiết kế đã cho sẽ nhanh đến mức nào nếu không chạy nó qua chuỗi công cụ và xem xét các báo cáo thời gian từ phân tích thời gian tĩnh.

Khi thực hiện chạy toolchain để xác định tốc độ xung nhịp tối đa, hãy nhớ rằng các công cụ này được điều khiển theo thời gian: chúng sẽ cố gắng đáp ứng các ràng buộc về thời gian đã chỉ định. Nếu không có ràng buộc thời gian được chỉ định, kết quả có thể rất kém vì các công cụ sẽ không cố gắng tối ưu hóa thiết kế cho tốc độ. Nói chung, các công cụ sẽ phải được chạy nhiều lần với các ràng buộc về thời gian đồng hồ khác nhau để tìm tần số xung nhịp tối đa có thể đạt được.

Nếu bạn có thể tối ưu hóa thiết kế của mình để đường dẫn quan trọng không bị giới hạn, thì bạn sẽ gặp phải những hạn chế trong việc tạo và phân phối đồng hồ (PLL, DCM, bộ đệm đồng hồ và lưới đồng hồ toàn cầu). Những giới hạn này có thể được tìm thấy trong các bảng dữ liệu một phần, nhưng việc đến gần chúng với một thiết kế không tầm thường là khó khăn. Tôi đã chạy mọi thứ trên Virtex Ultrascale ở 500 MHz, nhưng đây chỉ là một số bộ đếm để cung cấp tín hiệu kích hoạt cho các thành phần khác.


22

Bạn tổng hợp thiết kế của mình trong công nghệ đích (một loại đồ họa cụ thể) và để các công cụ phân tích thời gian tĩnh cho bạn biết thời gian xung nhịp tối thiểu là bao nhiêu.

Hoặc, bạn thêm các ràng buộc cho thiết kế ở vị trí đầu tiên, và sau đó các công cụ sẽ cho bạn biết liệu chúng có được đáp ứng hay không.


Điều gì sẽ gây ra những hạn chế không được đáp ứng? Điều gì giới hạn thời gian đồng hồ? Là nó phụ thuộc vào việc sử dụng FPGA I hoặc là nó giống nhau cho cả gia đình của FPGA? (Hoặc có thể cho mỗi FPGA trong sự tồn tại?)

3
Nó phụ thuộc vào tốc độ của FPGA và mức độ logic tổ hợp giữa các FF trong thiết kế của bạn.
Dave Tweed

9
@ appmaker1353, bạn đã thử đọc biểu dữ liệu cho một bản đồ họa chưa? Đánh giá tốc độ là một trong những tham số quan trọng nhất được gọi ra trong biểu dữ liệu.
Photon

2
Tốc độ sẽ bị giới hạn bởi đường dẫn thời gian dài nhất, đây sẽ là độ trễ lan truyền dài nhất thông qua logic và định tuyến giữa hai yếu tố trạng thái (flip flop, RAM, v.v.). Các loại GPU khác nhau sẽ có các tham số thời gian khác nhau và do đó một thiết kế sẽ đạt được tốc độ khác nhau trên các loại GPU khác nhau. Có một số phần của FPGA bị giới hạn tần số - các thành phần phân phối đồng hồ và PLL thường có giới hạn, nhưng thật khó để viết HDL gần với các thiết kế không tầm thường.
alex.forencich

3
Ngoài ra, bạn luôn cần thêm các ràng buộc thời gian. Vị trí và định tuyến đưa các ràng buộc vào xem xét và làm việc để cố gắng đáp ứng chúng. Nếu bạn không thêm bất kỳ ràng buộc nào, các công cụ sẽ không cố gắng nhiều và bạn sẽ không nhận được một con số rất lạc quan.
alex.forencich

13

Tốc độ mà CPU của bạn sẽ chạy sẽ dựa trên độ trễ flop-to-flop dài nhất trong thiết kế tổng hợp của bạn. Độ trễ flop-to-flop sẽ bao gồm clock-to-Q, định tuyến, logic / LUT và thời gian thiết lập flop. Chúng được thêm vào cùng nhau tạo thành đường dẫn quan trọng về thời gian của bạn, mà bạn có thể kiểm tra trong đầu ra báo cáo thời gian bằng công cụ địa điểm và tuyến đường.

Có toàn bộ các quy tắc thiết kế dành cho việc tạo ra các kiến ​​trúc nhằm giảm thiểu độ trễ này để tận dụng tối đa quy trình nhất định - đường ống, thực hiện song song, thực hiện đầu cơ, v.v. Đó là một nhiệm vụ hấp dẫn, liên quan đến việc vắt kiệt hiệu năng cuối cùng của một GPU (hoặc cho vấn đề đó, ASIC.)

Điều đó nói rằng, các nhà cung cấp đồ họa sẽ cung cấp các loại tốc độ khác nhau cho các bộ phận của họ, tương ứng với tốc độ MHz tối đa. Ví dụ, -2 Xilinx Artix là một phần '250 MHz' đại khái mặc dù nó có khả năng tốc độ xung nhịp cao hơn cho các thiết kế có đường ống cao.

Khi bạn tương tác với công cụ tổng hợp và vị trí định tuyến của FPGA, bạn sẽ cần đưa ra các ràng buộc cho thiết kế của mình. Chúng cho biết công cụ lưu chuyển độ trễ flop-to-flop mục tiêu mà bạn đang cố gắng đạt được. Trong Quartus (Altera) và Vivado (Xilinx), các ràng buộc này sử dụng một cú pháp gọi là SDC, viết tắt của Synopsys Design Ràng buộc. SDC ban đầu đến từ thế giới ASIC và cũng đã được ngành công nghiệp FPGA chấp nhận. Tìm hiểu SDC - nó sẽ giúp bạn có được kết quả như mong muốn.

Altera và Xilinx có các cộng đồng trực tuyến để được trợ giúp về cách sử dụng cú pháp SDC và nhiều chủ đề khác.

Tất cả đã nói, nếu bạn quan tâm đến tốc độ, bạn nên xem xét một GPU có macro cứng CPU, chẳng hạn như Zynq.


-2

CPU sẽ không chạy nhanh hơn đồng hồ toàn cầu, do đó sẽ đặt giới hạn trên về tốc độ nó có thể chạy. Thông thường thông tin về tốc độ xung nhịp tối đa được liệt kê trong bảng dữ liệu FGPA.

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.