Làm thế nào một FPGA có thể tốt hơn CPU?


55

Tôi nghe nói về những người sử dụng các GPU để cải thiện hiệu suất của các hệ thống làm những việc như khai thác bitcoin, giao dịch điện tử và gấp protein.

Làm thế nào một FPGA có thể cạnh tranh với CPU về hiệu năng khi CPU thường chạy ít nhất là một thứ tự cường độ nhanh hơn (về tốc độ xung nhịp)?


13
Các FPGA làm mọi thứ cùng một lúc.
Ignacio Vazquez-Abrams

Câu trả lời:


48

CPU là thiết bị xử lý tuần tự. Họ chia một thuật toán thành một chuỗi các hoạt động và thực hiện từng thuật toán một.

Các GPU là (hoặc, có thể được cấu hình là) các thiết bị xử lý song song. Toàn bộ thuật toán có thể được thực thi trong một tích tắc của đồng hồ, hoặc trong trường hợp xấu nhất, số lần chạm đồng hồ ít hơn nhiều so với việc sử dụng bộ xử lý tuần tự. Một trong những chi phí cho độ phức tạp logic tăng lên thường là giới hạn thấp hơn mà tại đó thiết bị có thể được bấm giờ.

Ghi nhớ những điều trên, các GPU có thể vượt trội hơn so với CPU đang thực hiện một số tác vụ nhất định vì chúng có thể thực hiện cùng một nhiệm vụ trong ít tích tắc đồng hồ hơn, mặc dù ở tốc độ xung nhịp thấp hơn. Lợi ích có thể đạt được phụ thuộc rất nhiều vào thuật toán, nhưng ít nhất một thứ tự cường độ không phải là không điển hình đối với một cái gì đó như FFT.

Hơn nữa, vì bạn có thể xây dựng nhiều đơn vị thực thi song song thành một FPGA, nếu bạn có khối lượng dữ liệu lớn mà bạn muốn chuyển qua cùng một thuật toán, bạn có thể phân phối dữ liệu qua các đơn vị thực hiện song song và có được các đơn hàng có cường độ cao hơn hơn có thể đạt được với ngay cả một CPU đa lõi.

Cái giá bạn phải trả cho những lợi thế là điện năng tiêu thụ và $$$.


2
+1; Tuy nhiên, các GPU không năng động như CPU, đó là lý do tại sao CPU thường phù hợp hơn với PC
Nick Williams

17
"Cái giá bạn phải trả cho những lợi thế là tiêu thụ năng lượng và $$$." - Điều này thường đúng, nhưng bạn có thể đánh bại một máy Intel Xeon cao cấp trị giá 1000 đô la với Xilinx Spartan-6 cấp thấp cho nhiều thuật toán. Nhưng điều đó thường tốn rất nhiều thời gian kỹ thuật và bạn có thể kết thúc với một thiết kế rất tùy chỉnh chỉ hoạt động cho một ứng dụng và khó thay đổi. Vì vậy, sự đánh đổi không chỉ là sức mạnh và tiền bạc, mà là thời gian phát triển thuật toán, khả năng sử dụng lại và tính linh hoạt. (Mặc dù bạn có thể tranh luận về thời gian == tiền.)
wjl

đánh dấu, về câu cuối cùng của bạn, không phải là công suất thấp hơn nhiều so với CPU? Có một loạt các thiết bị cho cả CPU và FPGA, nhưng nếu chúng ta nhìn vào những thiết bị được sử dụng cho những thứ như khai thác bitcoin, thì không phải CPU được sử dụng cho những nhiệm vụ đó ngốn nhiều năng lượng hơn so với các GPU sẽ đã sử dụng?
David Gardner

4
@David: Khi nói về khai thác Bitcoin, số liệu liên quan là số băm trên mỗi watt. Markt đang nói về tiêu thụ năng lượng tổng thể. Đó là, một GPU đã cho có thể tiêu thụ gấp 3 lần năng lượng của CPU thông thường, nhưng nhanh hơn gấp 3 lần khi khai thác Bitcoin; vì vậy đối với Bitcoin đó là một chiến thắng.
Billy ONeal

2
@Billy: số lượng băm trên mỗi watt · giây, không phải trên mỗi watt.
Paŭlo Ebermann

34

Markt có điều này gần như đúng, nhưng tôi sẽ ném 2 xu của mình vào đây:

Hãy tưởng tượng rằng tôi đã nói với bạn rằng tôi muốn viết một chương trình đảo ngược thứ tự các bit bên trong một số nguyên 32 bit. Một cái gì đó như thế này:

int reverseBits(int input) {
    output = 0;
    for(int i = 0;i < 32;i++) {
        // Check if the lowest bit is set
        if(input & 1 != 0) {
            output = output | 1; // set the lowest bit to match in the output!
        }

        input = input >> 1;
        output = output << 1;
    }
    return output;
}

Bây giờ việc triển khai của tôi không thanh lịch, nhưng tôi chắc chắn rằng bạn đồng ý rằng sẽ có một số hoạt động liên quan đến việc này và có thể là một số vòng lặp. Điều này có nghĩa là trong CPU, bạn đã dành hơn 1 chu kỳ để thực hiện thao tác này.

Trong một đồ họa, bạn có thể đơn giản nối dây này thành một cặp chốt. Bạn nhận được dữ liệu của mình vào một số thanh ghi, sau đó bạn nối nó vào thanh ghi khác theo thứ tự bit ngược. Điều này có nghĩa là hoạt động sẽ hoàn thành trong một chu kỳ xung nhịp duy nhất trong FPGA. Do đó, trong một chu kỳ duy nhất, FPGS đã hoàn thành một hoạt động khiến CPU mục đích chung của bạn mất hàng ngàn chu kỳ để hoàn thành! Ngoài ra, bạn có thể kết nối song song vài trăm thanh ghi này. Vì vậy, nếu bạn có thể di chuyển vài trăm số vào FPGA, trong một chu kỳ duy nhất, nó sẽ hoàn thành hàng ngàn thao tác đó hàng trăm lần, tất cả trong 1 chu kỳ xung nhịp của FPGA.

Có rất nhiều điều mà CPU có mục đích chung có thể làm, nhưng như một hạn chế, chúng tôi thiết lập các hướng dẫn đơn giản và tổng quát mà nhất thiết phải mở rộng thành danh sách các hướng dẫn đơn giản để hoàn thành một số tác vụ. Vì vậy, tôi có thể làm cho CPU có mục đích chung có một lệnh như "thứ tự bit đảo ngược cho thanh ghi 32 bit" và cung cấp cho CPU khả năng tương tự như FPGA mà chúng ta vừa xây dựng, nhưng có vô số hướng dẫn hữu ích như vậy, và vì vậy chúng tôi chỉ đưa vào những cái đảm bảo chi phí trong các CPU phổ biến.

Các GPU, CPLD và ASIC đều cung cấp cho bạn quyền truy cập vào phần cứng thô, cho phép bạn xác định các hoạt động điên rồ như "giải mã các byte được mã hóa AES256 bằng khóa" hoặc "giải mã khung hình của video h.264". Chúng có độ trễ hơn một chu kỳ xung nhịp trong một đồ họa, nhưng chúng có thể được thực hiện theo cách hiệu quả hơn nhiều so với việc viết ra hoạt động trong hàng triệu dòng mã lắp ráp mục đích chung. Điều này cũng có lợi ích là làm cho FPGA / ASIC có mục đích cố định cho nhiều hoạt động trong số này hoạt động hiệu quả hơn vì chúng không phải thực hiện nhiều công việc ngoại lai!

Tính song song là phần khác được đánh dấu chỉ ra, và mặc dù điều đó cũng quan trọng, nhưng điều chính là khi một GPU song song một thứ vốn đã đắt trong CPU theo các chu kỳ cần thiết để thực hiện thao tác. Khi bạn bắt đầu nói "Tôi có thể thực hiện trong 10 chu kỳ FPGA, một nhiệm vụ phải thực hiện 100.000 chu kỳ CPU của tôi và tôi có thể thực hiện nhiệm vụ này song song 4 mục một lần", bạn có thể dễ dàng thấy tại sao một FPGA có thể là một công việc khó khăn nhanh hơn CPU!

Vậy tại sao chúng ta không sử dụng các GPU, CPLD và ASIC cho mọi thứ? Bởi vì nói chung nó là một con chip hoàn toàn không làm gì ngoài một thao tác. Điều này có nghĩa là mặc dù bạn có thể có được một quy trình để chạy nhiều đơn hàng cường độ nhanh hơn trong FPGA / ASIC của mình, bạn không thể thay đổi nó sau này khi thao tác đó không còn hữu ích. Lý do bạn không thể (nói chung) thay đổi một khi một mạch là vì hệ thống dây điện cho giao diện đã được sửa chữa và thông thường, mạch không bao gồm các thành phần cho phép bạn lập trình lại sơ đồ thành một cấu hình hữu ích hơn. Có một số nhà nghiên cứu đang cố gắng xây dựng các mô-đun hybrid-CPU lai, trong đó có một phần của CPU có khả năng được tua lại / lập trình lại như một đồ họa, cho phép bạn "tải" một phần hiệu quả của CPU,


2
Đối với ví dụ về đảo ngược bit (và tất cả các tác vụ trao đổi / lựa chọn bit khác), nó không thực sự mất 1 chu kỳ xung nhịp, phải mất 0. Trong ví dụ của bạn, phải mất 1 chu kỳ đồng hồ để lưu trữ dữ liệu trong một chốt , không phải là hoạt động tương tự. Phải mất 1 chu kỳ đồng hồ cho dù bạn đảo ngược các bit hay không. Hoạt động đảo ngược các bit là 0 chu kỳ xung nhịp; không có phí, chỉ khác định tuyến. Sự khác biệt không chỉ là ngữ nghĩa, đặc biệt là khi bạn bắt đầu thêm mọi thứ. Ví dụ, mất bao lâu để chuyển một từ 32 bit xuống 3 bit, sau đó hoán đổi mọi ngòi nổ khác, sau đó đảo ngược nó?
wjl

1
"mô-đun lai CPU-CPU" - những thứ này đã có mặt trên thị trường trong một thời gian dài (xem xilinx.com/products/silicon-devices/soc/zynq-7000/index.htmlm cho một phiên bản thành công hiện đại), nhưng thậm chí không có hỗ trợ đặc biệt, kết hợp phần mềm & HDL thường được thực hiện bằng cách triển khai CPU mềm bên trong đồ họa trên vải.
wjl

@wjl Bạn nói đúng về mặt kỹ thuật, không cần chu kỳ để tự thực hiện thao tác. Tôi sẽ lập luận rằng ví dụ của bạn chỉ khác về mặt ngữ nghĩa, chủ yếu là do thực hiện ba thao tác đó chuyển dịch một cách hợp lý thành một mẫu bit cố định (nghĩa là tôi bắt đầu với b1b2b3b4 và tôi kết thúc bằng b3b1b4b2). Đây là loại quan điểm của tôi trong toàn bộ câu trả lời. Tôi đã cố gắng chỉ ra rằng việc mô tả một hoạt động như một chuỗi các bước thường chỉ cần thiết khi bạn có một bộ lệnh / sắp xếp cổng cố định.
Kit Scuzz

@wjl: Cách mà david-gardenner đặt câu hỏi, dường như anh ta đang nói "CPU" tương đương với CPU hoặc CPU x86 / x86_64 có xung nhịp cao, được tối ưu hóa và CPU. Có nhiều "CPU" mềm nhưng tôi không có cái nào được thiết kế để ngồi trong một chiếc FPGA có thể có xung nhịp như i7, chúng cũng không được tối ưu hóa hay có khả năng. Đối với các giống lai, tôi có ý nghĩa nhiều hơn như thế này: newsroom.intel.com/docs/DOC-1512 dường như không tồn tại
Kit Scuzz

1
Zynq thực sự không quá tệ đối với bộ xử lý (ARM Cortex-A9 - điều tương tự chạy máy tính bảng, v.v.), nhưng tôi đồng ý rằng sẽ tuyệt vời hơn khi có một GPU tích hợp với tốc độ cao x86_64. =)
wjl

25

Tất cả các câu trả lời phổ biến khác được trình bày ở đây đều nói về sự khác biệt theo nghĩa đen giữa các GPU và CPU. Họ chỉ ra bản chất song song của FPGA so với bản chất tuần tự của CPU hoặc đưa ra ví dụ về lý do tại sao một số thuật toán nhất định có thể hoạt động tốt trên một FPGA. Tất cả những điều đó là tốt và đúng, nhưng tôi muốn đề xuất tuy nhiên có một sự khác biệt cơ bản hơn giữa CPU và FPGA.

Mẫu số chung giữa một FPGA và CPU là gì? Đó là cả hai đều được xây dựng trên đầu silicon. Và trong một số trường hợp nghĩa đen là các quá trình silicon giống nhau.

Sự khác biệt cơ bản là sự trừu tượng mà chúng ta chồng chất lên trên lớp silicon đó. Một người không thể hiểu chi tiết đầy đủ về một thiết kế CPU hiện đại duy nhất từ ​​silicon đến IC đóng gói. Vì vậy, là một phần của quy trình kỹ thuật, chúng tôi chia vấn đề phức tạp đó thành những vấn đề nhỏ hơn có thể quản lý được mà con người có thể quấn đầu.

Xem xét những gì nó cần để biến silicon đó thành một CPU hoạt động. Đây là một cái nhìn hơi đơn giản về các lớp trừu tượng cần thiết cho mục tiêu đó:

  1. Đầu tiên chúng tôi có các kỹ sư biết cách tạo ra các bóng bán dẫn từ silicon. Họ biết cách thiết kế các bóng bán dẫn nhỏ nhấm nháp năng lượng và chuyển đổi với tốc độ 10 hoặc thậm chí 100 gigahertz, và họ biết cách thiết kế các bóng bán dẫn mạnh mẽ có thể truyền tín hiệu có đủ năng lượng để gửi chúng ra khỏi gói IC và qua PCB đến một con chip khác.

  2. Sau đó, chúng tôi có các nhà thiết kế logic kỹ thuật số, những người biết cách đặt các bóng bán dẫn đó lại với nhau đến các thư viện với hàng trăm ô logic khác nhau. Cổng logic, dép xỏ ngón, mux và bộ cộng, để đặt tên cho một số. Tất cả trong một loạt các cấu hình.

  3. Tiếp theo, chúng tôi có nhiều nhóm kỹ sư khác nhau biết cách kết hợp các khối kỹ thuật số (và đôi khi tương tự) này lại với nhau để tạo thành các khối chức năng cấp cao hơn như bộ thu phát tốc độ cao, bộ điều khiển bộ nhớ, bộ dự báo nhánh, ALU, v.v.

  4. Sau đó, chúng tôi có các nhà thiết kế CPU để kiến ​​trúc sư thiết kế CPU cao cấp bằng cách kết hợp các đơn vị chức năng đó thành một hệ thống hoàn chỉnh.

Và nó không dừng lại ở đó. Tại thời điểm này, chúng ta có một CPU hoạt động chạy mã lắp ráp nhưng đó không phải là ngôn ngữ mà hầu hết các lập trình viên viết cho đến ngày nay.

  1. Chúng ta có thể có một trình biên dịch C để biên dịch thành mã lắp ráp (có thể thông qua một số biểu diễn trung gian)
  2. Chúng ta có thể thêm một sự trừu tượng hóa khác trên đỉnh C để có được một ngôn ngữ hướng đối tượng
  3. Chúng tôi thậm chí có thể viết một máy ảo lên trên C hoặc C ++ để chúng tôi có thể diễn giải những thứ như mã byte Java

Và các lớp trừu tượng có thể tiếp tục từ đó. Điểm quan trọng ở đây là các lớp trừu tượng đó kết hợp với nhau để tạo ra một hệ thống dựa trên CPU có quy mô lớn và chi phí một phần rất nhỏ của thiết kế silicon tùy chỉnh.

TUY NHIÊN, điểm quan trọng được thực hiện ở đây là mỗi sự trừu tượng cũng mang một chi phí. Nhà thiết kế bóng bán dẫn không xây dựng bóng bán dẫn hoàn hảo cho mọi trường hợp sử dụng. Ông xây dựng một thư viện hợp lý, và vì vậy đôi khi một bóng bán dẫn được sử dụng tiêu thụ nhiều năng lượng hơn hoặc một ít silicon hơn là thực sự cần thiết cho công việc trong tay. Và tương tự, các nhà thiết kế logic không xây dựng mọi ô logic có thể. Họ có thể xây dựng một cổng NAND 4 đầu vào và một cổng NAND 8 đầu vào nhưng điều gì xảy ra khi một kỹ sư khác cần 6 NAND đầu vào? Anh ta sử dụng một cổng NAND 8 đầu vào và liên kết với 2 đầu vào không sử dụng dẫn đến mất tài nguyên silicon và mất năng lượng. Và do đó, nó đi lên chuỗi trừu tượng. Mỗi lớp cho chúng ta một cách để xử lý sự phức tạp,

Bây giờ so sánh những trừu tượng đó với những gì cần thiết cho một FPGA. Về cơ bản, các tóm tắt về FPGA dừng ở vị trí số 2 trong danh sách trên. FPGA cho phép các nhà phát triển làm việc ở lớp logic kỹ thuật số. Nó hơi phức tạp hơn thế bởi vì CPU được 'mã hóa cứng' ở lớp này và các GPU phải được cấu hình trong thời gian chạy (mà, BTW, là lý do tại sao CPU thường chạy ở tần số cao hơn nhiều), nhưng sự thật quan trọng quan trọng là ở xa vài bản tóm tắt cho các bản đồ họa so với CPU.

Vì vậy, tại sao một FPGA có thể nhanh hơn CPU? Về bản chất, đó là vì FPGA sử dụng ít trừu tượng hơn nhiều so với CPU, điều đó có nghĩa là nhà thiết kế làm việc gần với silicon hơn. Anh ta không trả chi phí cho tất cả các lớp trừu tượng cần thiết cho CPU. Anh ta mã hóa ở cấp độ thấp hơn và phải làm việc chăm chỉ hơn để đạt được một chút chức năng nhất định nhưng phần thưởng anh ta đạt được hiệu suất cao hơn.

Nhưng tất nhiên có một mặt trái cho ít trừu tượng là tốt. Tất cả những trừu tượng CPU là có lý do chính đáng. Chúng cung cấp cho chúng ta một mô hình mã hóa đơn giản hơn nhiều, có nghĩa là nhiều người có thể dễ dàng phát triển cho chúng. Điều đó có nghĩa là tồn tại nhiều thiết kế CPU hơn và do đó chúng ta có lợi ích lớn về giá / quy mô / thời gian tiếp thị từ CPU.

Vì vậy, có bạn có nó. Các GPU có ít trừu tượng hơn và do đó chúng có thể nhanh hơn và tiết kiệm điện hơn nhưng khó lập trình. CPU có nhiều thiết kế trừu tượng để giúp chúng dễ dàng phát triển, có thể mở rộng và giá rẻ. Nhưng họ từ bỏ tốc độ và sức mạnh trong thương mại vì những lợi ích đó.


Ngoài ra, các FPGA được thiết kế bằng cách sử dụng các khối lặp lại đơn giản để thực hiện các tác vụ logic đơn giản. Chúng được thiết kế riêng cho một số loại nhiệm vụ. CPU, OTOH, có nhiều bộ phận chức năng phức tạp, tất cả đều làm những việc khác nhau. Người ta có thể xem xét rằng CPU là một nhóm gồm nhiều thiết bị khác nhau như FPGA (xét cho cùng, tất cả chỉ là silicon, điện tử và toán học). Vì vậy, nó không chỉ là trừu tượng, mà là về sự phức tạp. CPU là các thiết bị phức tạp được tạo thành từ nhiều loại thiết bị điện khác nhau trong khi một GPU được tạo thành từ một số ít. CPU là một khẩu súng ngắn trong khi một đồ họa là một khẩu súng trường.
Tóm tắt

21

Trong khi các câu trả lời khác đều đúng, không ai trong số họ trả lời ví dụ khai thác bitcoin từ câu hỏi của bạn, đây thực sự là một ví dụ điển hình. Khai thác bitcoin liên quan đến việc tính toán nhiều lần hàm băm mật mã, SHA-256 về kết quả của một phép tính SHA-256 khác, dữ liệu chỉ có một số nguyên 32 bit duy nhất thay đổi, cho đến khi hàm băm có kết quả nhất định. Mỗi SHA-256 bao gồm 64 lần lặp lại của cùng một thuật toán liên quan đến việc bổ sung 32 bit, bithifts và một số hoạt động xáo trộn bit khác.

Nếu bạn lập trình vòng lặp này trên CPU 32 bit (hoặc nhiều hơn), bạn sẽ thấy tập lệnh của nó rất phù hợp cho nhiệm vụ --- SHA-256 được thiết kế để chạy hiệu quả trên CPU. Tuy nhiên, bạn sẽ chỉ sử dụng khoảng 2% diện tích silicon của CPU hiện đại, với các chức năng chuyên sâu về diện tích như lưu trữ, nhân, chia, vận hành điểm nổi, phân nhánh và dự đoán brach, v.v., hoàn toàn không được sử dụng hoặc không thể cung cấp đáng kể tăng hiệu suất cho nhiệm vụ đặc biệt này.

Trong phần cứng có thể định cấu hình như một đồ họa, bạn chỉ cần thực hiện 2% đó và tối ưu hóa hơn nữa bằng cách quên tất cả về thực thi mã, thay vào đó là thiết kế các cổng để tính toán trực tiếp từng một trong những giao diện con thường lặp đi lặp lại. Pipelined sao cho mỗi trong số chúng chuyển một kết quả vào mỗi trụ đồng hồ tiếp theo và lặp lại 128 lần (và với một số logic bổ sung đặc biệt trong đó mỗi SHA-256 bắt đầu và kết thúc), cuối cùng bạn sẽ nhận được kết quả sau mỗi chu kỳ đồng hồ (có thể 100 triệu băm mỗi giây trên một FPGA được quảng cáo là hỗ trợ 300 MHz với logic đơn giản hơn so với điều này) trong khi trên CPU hiện đại, bạn có thể mong đợi một kết quả cứ sau vài nghìn chu kỳ xung nhịp cho mỗi lõi, tức là 10 triệu băm mỗi giây trên đa lõi CPU -GHz.

Nếu ví dụ cụ thể này khiến bạn quan tâm, bạn có thể muốn xem câu trả lời liên quan của tôi về nội bộ của các công cụ khai thác ASIC trên bitcoin.stackexchange, vì nhiều công cụ khai thác FPGA hoạt động theo cùng một cách sử dụng phần cứng có thể định cấu hình. Chỉ vì sự hoàn chỉnh: Có những khả năng khác, như hạn chế hoặc tránh đường ống mà tôi đã mô tả để ủng hộ việc song song hóa tầm thường hơn bằng cách sử dụng nhiều bộ băm SHA-256 độc lập. Dựa vào các ràng buộc được đưa ra bởi các phần bên trong và tổng kích thước của nó, điều đó thậm chí có thể mang lại hiệu năng tốt hơn mặc dù nó sẽ kém hiệu quả hơn về số lượng cổng và định tuyến trên đầu nếu bạn có quyền tự do hoàn hảo trong việc thiết kế toàn bộ chip, không chỉ là cấu hình của FPGA .


3
Đó là một điểm rất tốt về việc sử dụng silicon.
Markt

Nhưng có lẽ (vô tình!) Đã gây hiểu lầm, khi xem xét rằng một GPU bao gồm các ô hơi phức tạp với nhiều cổng vật lý, trong đó một ứng dụng thông thường lại chỉ sử dụng một phân số, cho phép các nhà sản xuất của họ quảng cáo số lượng cổng tương đương nhằm cố gắng cho bạn biết tất cả bao nhiêu trong số đó có thể có giá trị trong một ứng dụng "điển hình" ...
kim tự tháp

3

Các câu trả lời ở trên, trong khi chính xác, bỏ lỡ điểm về lý do tại sao các GPU (và ASIC tùy chỉnh) đặc biệt tốt cho việc tính toán bitcoin.

Ưu điểm thực sự là một tỷ lệ lớn các tính toán SHA-256 là các hoạt động logic (ví dụ: dịch chuyển bit) có thể được thực hiện trong hệ thống dây điện. Khi thực hiện theo cách này, họ yêu cầu 0 chu kỳ đồng hồ.

Một lợi thế quan trọng khác là các GPU có hiệu suất năng lượng cao hơn nhiều (ví dụ MIPS trên mỗi watt) so với CPU, do đó, lượng năng lượng cần thiết cho các tính toán ít hơn nhiều. Điều này rất quan trọng vì chi phí khai thác bitcoin phụ thuộc vào lượng điện bạn sử dụng để tạo ra nó.

Các chip ASIC tiết kiệm năng lượng hơn so với các GPU, vì vậy chúng có thể thực thi cùng một mã với giá rẻ hơn nhiều. Bạn cũng có thể nhồi nhét thêm các đơn vị thực hiện trên tàu để làm cho chúng nhanh hơn. Nhược điểm là chi phí sản xuất ASIC tùy chỉnh rất cao nên bạn sẽ cần bán khá nhiều chip để trang trải chi phí sản xuất.

GPU, cũng được sử dụng để tạo ra bitcoin, nhưng vì chúng ít tiết kiệm năng lượng hơn nên chúng đã bị mất điểm so với các GPU và ASIC tùy chỉnh.


Nếu bạn nhìn vào thuật toán băm Monero hay còn gọi là cryptonight, bạn sẽ thấy rằng việc triển khai đồ họa gần như không thể do lượng bộ nhớ lớn cần được truy cập ngẫu nhiên (2MB). Một CPU có lợi thế trong trường hợp này.
lucas92
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.