Bạn thực sự có thể phá vỡ một FPGA bằng cách lập trình sai?


26

Bạn thực sự có thể phá vỡ một FPGA bằng cách lập trình nó không chính xác?

Tôi thực sự là một người làm phần mềm. Không có gì bí mật rằng nếu phần mềm của bạn sai, bạn có thể phá hủy tất cả các loại dữ liệu quan trọng và thậm chí có thể làm hỏng toàn bộ máy. Nhưng thực sự rất khó để làm hỏng máy tính chỉ bằng cách lập trình nó.

(Có rất nhiều tin đồn về hướng dẫn Halt-And-Catch-Fire hoặc có thể khởi động lại phần sụn hệ thống để gạch bo mạch chủ hoặc lập trình các giá trị không chính xác vào card đồ họa để xào màn hình của bạn. Nhưng tất cả những điều này có vẻ chính xác : tin đồn. Và tất cả về phần cứng đã lỗi thời. Có vẻ như thực sự, rất khó để phá vỡ các thiết bị máy tính hiện đại với lập trình xấu.)

Với một đồ họa, bạn (ít nhất là trên danh nghĩa) nối các mạch riêng lẻ lại với nhau. Có vẻ như hoàn toàn hợp lý rằng thiệt hại vật lý có thể xảy ra trong trường hợp có lỗi.

Ví dụ: bạn có thể viết một số VHDL yêu cầu hai đầu ra được gắn với nhau. Nếu họ đưa ra các mức logic khác nhau, tôi tưởng tượng rằng nó có thể sẽ chiên thứ gì đó. (Tôi hy vọng rằng công cụ tổng hợp của bạn sẽ hét vào bạn để không làm điều này ... nhưng tôi không biết liệu các công cụ đó có thực sự thực hiện mức độ kiểm tra lỗi đó không.)

Dường như cũng có thể vô tình chọn sai mô hình của FPGA trong công cụ tổng hợp, và do đó cuối cùng cố gắng lập trình chip của bạn với một dòng bit dành cho một số mô hình hoàn toàn khác. Tôi không biết điều đó sẽ làm gì, nhưng tôi nghi ngờ nó sẽ "tệ".

Đối với vấn đề đó, bạn chắc chắn có thể kết nối chip FPGA với phần còn lại của mạch không chính xác. Ví dụ, nếu bạn làm xáo trộn các số pin, bạn có thể kết thúc với bảng cố gắng lái một pin I / O mà chính bản thân FPGA cũng đang cố gắng lái. Các chân I / O thường có bất kỳ "bảo vệ" nào trước lỗi đó không? Hay con chip sẽ chỉ chiên?


3
Một số đồ họa có các tính năng bảo mật chỉ cho phép tải dòng bit được mã hóa và ký từ bộ nhớ ngoài. Các phím được giữ trong FPGA và chỉ lập trình một lần. Nếu bạn vô tình kích hoạt một tính năng như vậy hoặc làm mất các phím, thì về cơ bản bạn đã có một "cục gạch".
filo

2
"Nhưng thực sự rất khó để làm hỏng máy tính chỉ bằng cách lập trình nó." bạn nghĩ vậy? Đã có lúc người lái phải điều khiển đầu đĩa cứng - có nghĩa là virus có thể phát sinh nhật vui vẻ trên đĩa cứng của bạn. BIOS điều khiển quạt - cho phép nó gây ra thiệt hại do quá nóng (có thể có một số bảo vệ được tích hợp, nhưng nếu bạn làm nóng nó đủ nhanh thì không thể lưu được). BIOS thậm chí có thể quyết định thử đưa 20V vào CPU của bạn .... Phần mềm có thể dễ dàng chịu trách nhiệm cho việc làm hỏng máy tính nếu bạn biết nên sử dụng phần mềm nào.
UKMonkey



2
@UKMonkey Tùy thuộc vào cách thiết lập hệ thống của bạn, tôi khá chắc chắn rằng bạn có thể làm tan chảy bất kỳ CPU nào với đủ nỗ lực. Hầu hết các máy tính - AFAIK bất cứ thứ gì không được làm mát hoàn toàn thụ động - sẽ có cách để điều khiển hệ thống làm mát. Bạn có thể vô hiệu hóa điều chỉnh nhiệt, một dòng phòng thủ khác, thông qua BIOS, ngụ ý rằng nó có thể được thực hiện theo chương trình bởi kernel. Trong trường hợp cụ thể đó, nó phải có chủ ý, nhưng nó rất chắc chắn có thể.
Vụ kiện của Quỹ Monica

Câu trả lời:


31

Dường như cũng có thể vô tình chọn sai mô hình của FPGA trong công cụ tổng hợp, và do đó cuối cùng cố gắng lập trình chip của bạn với một dòng bit dành cho một số mô hình hoàn toàn khác.

Thông thường, phần mềm lập trình sẽ truy vấn phần được lập trình cho số phần của nó và từ chối lập trình theo dòng bit có nghĩa là cho một mô hình khác của FPGA.

Bản thân bộ phận cũng thường từ chối khởi động nếu được lập trình với một dòng bit không chính xác độ dài chính xác (và rất hiếm khi các dòng bit cho các chip khác nhau có cùng độ dài).

bạn chắc chắn có thể kết nối chip FPGA với phần còn lại của mạch không chính xác. Ví dụ, nếu bạn làm xáo trộn các số pin, bạn có thể kết thúc với bảng cố gắng lái một pin I / O mà chính bản thân FPGA cũng đang cố gắng lái.

Đây là cách có khả năng nhất để làm hỏng một FPGA với lập trình sai.

Một cách khác có thể là lập trình một thiết kế rất tốn tài nguyên và chạy nó ở tần số cao (để tiêu thụ nhiều năng lượng), và sau đó chạy nó trên một đồ họa mà không cần tản nhiệt thích hợp.

Các chân I / O thường có bất kỳ "bảo vệ" nào trước lỗi đó không? Hay con chip sẽ chỉ chiên?

Các chân đầu ra sẽ "thường" tồn tại trong tình trạng ngắn mạch trong vài giây hoặc thậm chí vài phút. Nhưng không có gì được đảm bảo.


1
Hấp dẫn. Có phải thông thường cho các GPU cần làm mát tích cực? Ồ, tôi cho rằng đó là toàn bộ câu hỏi theo đúng nghĩa của nó. (Và tôi đoán câu trả lời phụ thuộc vào nhiều thứ - chẳng hạn như bạn đã mua một chiếc 15.000 bảng Anh hay 15.000 bảng Anh!)
Toán

4
@MathologistsOrchid, Không nhất thiết phải làm mát hoạt động, nhưng tản nhiệt và không khí cưỡng bức là khá phổ biến. Các nhà cung cấp đồ họa thường cung cấp một bảng tính rất phức tạp để giúp xác định (dựa trên bộ phận, thiết kế, tần số xung nhịp, v.v.) mức độ tản nhiệt lớn và cần một cái quạt lớn như thế nào.
Photon

3
@MathologistsOrchid Tôi đã sử dụng một FPGA làm bộ đếm tần số để đo sóng vuông lên tới 250 MHz. Nó yêu cầu làm mát khi tôi đo đồng hồ 220 MHz, nhưng thay vì thiết lập chế độ làm mát phù hợp, tôi chỉ đảm bảo không đo quá 5 giây. Nó tiêu thụ 5 W @ 220Mhz và IC khoảng 2 cm ^ 2. Trời rất nóng rất nhanh.
Harry Svensson

@HarrySvensson Điều đó có vẻ như là một lượng nhiệt điên cuồng cho bộ đếm tần số.
dùng253751

1
@HarrySvensson Thật điên rồ khi phải mất 5 watt.
dùng253751

20

Với một vài trường hợp ngoại lệ được lưu ý, các công cụ thường không cung cấp cho bạn quyền truy cập vào các nguyên thủy silicon thực tế, do đó, một kỹ sư người dùng cuối khó có thể tải một thiết kế không hợp lệ về điện * vào một GPU dựa trên SRAM, ngoại trừ có thể vô tình phát hiện ra một công cụ lỗi.

Các GPU dựa trên Flash có thể hình dung được khả năng lập trình lại của chúng bị hỏng bởi một số tải không hợp lệ. Các OTP FPGA hoàn toàn bị "làm hỏng" bởi ngay cả một tải cấu hình hợp lệ , vì nó không bao giờ có thể thay đổi.

Cuối cùng, những gì gần nhất với những gì bạn dường như muốn hỏi, và với ví dụ HCF của bạn, sẽ là một cấu hình tạo ra ứng suất nhiệt không thể chịu đựng được . Tiêu thụ năng lượng được điều khiển trực tiếp bởi tốc độ xung nhịp và âm lượng * hoạt động của logic được sử dụng, vì vậy nếu bạn có thể lừa các công cụ vô dụng để chuyển đổi hầu hết các flip flop trên chip ở xung nhịp tối đa (có nhiều cách ...) thì bạn có thể sản xuất một lò sưởi khá hiệu quả sẽ vượt quá hầu hết các hệ thống làm mát cho sử dụng thông thường. Sau đó, nó chỉ là một câu hỏi nếu một cái gì đó bảo vệ tắt nó trước khi nấu. Và tất nhiên, có các mô hình ước tính công suất trong các công cụ, có khả năng dự đoán hợp lý nếu bạn không nói dối với họ về tín hiệu đồng hồ được cung cấp.

(* Có một loại vấn đề điện không phải là lỗi mà bạn có thể gây ra bằng cách nói dối với các công cụ, điều đó không nhất thiết phải phá hủy về mặt vật lý, nhưng vẫn đáng ngạc nhiên. Nếu bạn cho một chiếc đồng hồ khác với bạn nói hoặc đơn giản là không ổn định, bạn có thể vi phạm thời gian thiết lập địa chỉ trên các ô RAM khối đồng bộ và thực hiện một số thao tác rút ngắn chúng và làm hỏng nội dung của chúng - vì vậy, ví dụ bạn có thể thấy nội dung của một thứ được chỉ định ROM trong thiết kế chỉ thực sự thay đổi khi chạy thử để đọc nó với một chiếc đồng hồ xấu. Nhưng tôi không tin rằng điều này là hủy hoại về thể chất)


2
Bạn có thể xâu chuỗi mọi flop cùng với một biến tần ở giữa và tạo ra rất nhiều nhiệt. Có bất kỳ đồ họa nào có mạch bảo vệ để điều chỉnh xung nhịp nếu chúng quá nóng không? Cây đồng hồ thường nằm ngoài tầm kiểm soát của họ.
Ben Jackson

@BenJackson: Không phải cây đồng hồ có dây cứng hơn hay ít hơn, với mỗi Thành phần Logic có thể chọn trong số một vài cây khác nhau? Bản thân nguồn đồng hồ có thể nằm ngoài tầm kiểm soát của họ, nhưng họ có thể tắt bộ đệm cây đồng hồ nếu quá nóng. Hoặc tôi đoán họ có thể tắt nguồn cung.
Michael

5

Điều có khả năng nhất là vi phạm xếp hạng hiện tại trên GPIO bằng cách lái mã pin đã được điều khiển. Một số đồ họa có các giới hạn hiện tại có thể giải quyết hoặc trình điều khiển đầu ra có thể thay đổi, do đó, điều này có thể giúp / làm tổn thương bạn nếu bạn không thực hiện đúng bản đồ cổng của mình. Dù sao thì bạn cũng nên kiểm tra lại danh sách cổng của mình trước khi lập trình vì các lỗi như tráo đổi chân có thể mất hàng giờ để giải quyết, tốt nhất là bạn nên vượt qua lỗi và biết chính xác phần sụn dự định sẽ làm gì. (trừ khi bạn thích cảm giác hồi hộp khi tìm lỗi)

Bản thân HDL thường không cho phép bạn kết nối hai đầu ra với cùng một dây và sẽ ngừng tổng hợp và khiến bạn sửa lỗi nếu bạn có mã thực hiện điều đó.

Một nơi có thể gây ra vấn đề là các cổng hai chiều, nhưng bạn nên có các điện trở giới hạn hiện tại trên các cổng đó.


ReR kết nối hai đầu ra với cùng một dây : Bạn không thể kết nối đầu ra của hai bộ đệm ba trạng thái với nhau nếu bạn hứa công cụ tổng hợp sẽ không bao giờ bật cả hai cùng một lúc? Công cụ có thể kiểm tra bạn giữ lời hứa của mình ngay cả khi logic điều khiển cho phép kích hoạt tính năng bộ đệm của bộ đệm có thể rất phức tạp không?
Edgar Bonet

@EdgarBonet yup bạn có thể gây ra xung đột theo cách này. Không có yêu cầu buộc đầu ra hợp lý cho phép loại trừ lẫn nhau, nếu một số logic (có thể bao gồm logic trạng thái và / hoặc phần cứng / phần mềm bên ngoài cho FPGA) khiến hai OE xung đột hoạt động, không có gì ngăn cản được trừ khi logic cho các OE đã được mã hóa rõ ràng để ngăn chặn điều đó.
Rodney

@EdgarBonet Bạn có thể, nhưng thông thường các dây dẫn bên ngoài với FPGA khi bạn cần trình điều khiển / thu phát và những dây này được tìm thấy trên GPIO. Tôi chưa bao giờ thiết kế với threestate trong một FPGA và tôi không nghĩ phần cứng trong một FPGA hỗ trợ ba trạng thái. Bạn có thể bật hai bộ đệm cùng một lúc, thiết kế vật lý sẽ ngăn bạn đốt cháy chúng.
Điện áp tăng vọt

4

Như với vi điều khiển, bạn luôn có thể vượt quá tổng dòng tối đa trên mỗi ngân hàng IO bằng cách rút một dòng tối đa (hoặc nhiều hơn) từ mỗi pin. Trừ khi FPGA có bảo vệ tích hợp chống lại tình huống như vậy, điều này có thể dẫn đến thiệt hại.

Một khả năng khác là tạo ra một vòng lặp tổ hợp theo định kỳ siêu ổn định hoặc dao động ở tần số cao hơn nhiều so với kết cấu đồ họa được thiết kế để xử lý (vài GHz). Điều đó sẽ gây ra sự quá nhiệt cục bộ có thể gây ra thiệt hại vật lý trước khi bảo vệ nhiệt trên chip hoạt động. Đó là, giả sử có một sự bảo vệ như vậy: nếu nhiệt độ quá cao không dẫn đến tắt máy, bạn có thể chỉ cần đưa ra một mạch rất ngốn điện và để cho nó chạy với làm mát không đủ.

Cấu hình lại động cũng có thể làm việc xung quanh các biện pháp bảo vệ chống lại cấu hình không hợp lệ của các nguyên hàm bên trong có thể được thi hành bởi các công cụ phát triển trong trường hợp cấu hình tĩnh. Ví dụ: bạn có thể định cấu hình PLL theo cách vượt quá tần số bên trong tối đa của nó hoặc cung cấp cùng một dòng kết nối bằng hai nguồn hoặc buộc một pin từ ngân hàng IO điện áp cao sử dụng bộ thu phát điện áp thấp như LVDS .

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.