Tại sao các thiết bị tương đối đơn giản như vi điều khiển lại chậm hơn nhiều so với CPU?


25

Với cùng một số giai đoạn đường ống và cùng một nút sản xuất (giả sử, 65nm) và cùng một điện áp, các thiết bị đơn giản sẽ chạy nhanh hơn các giai đoạn phức tạp hơn. Ngoài ra, việc hợp nhất nhiều giai đoạn đường ống thành một không nên làm chậm bởi một hệ số yếu tố hơn số lượng các giai đoạn.

Bây giờ lấy CPU năm tuổi, chạy 14 giai đoạn đường ống với tốc độ 2,8 GHz. Giả sử người ta hợp nhất các giai đoạn; nó sẽ chậm xuống dưới 200 MHz. Bây giờ tăng điện áp và giảm số bit trên mỗi từ; điều đó thực sự sẽ tăng tốc mọi thứ.

Đó là lý do tại sao tôi không hiểu tại sao nhiều bộ vi điều khiển hiện đang được sản xuất, chẳng hạn như AVL, chạy ở tốc độ nhanh (như 20 MHz ở 5 V), mặc dù các CPU phức tạp hơn được sản xuất nhiều năm trước có khả năng chạy nhanh hơn 150 lần, hoặc nhanh hơn 10 lần nếu bạn cuộn tất cả các giai đoạn đường ống thành một, tại 1,2 V-ish. Theo các tính toán phía sau thô nhất, các bộ vi điều khiển, ngay cả khi được sản xuất bằng công nghệ lỗi thời, thì nên chạy nhanh hơn ít nhất 10 lần ở một phần tư điện áp mà chúng được cung cấp.

Vì vậy, câu hỏi: những lý do cho tốc độ xung nhịp vi điều khiển chậm là gì?


8
Một khối tốt của vi điều khiển được sản xuất với công nghệ lỗi thời bordline vì fab được trả tiền cho.
Matt Young

18
Quyền lực. Yếu tố trong mức tiêu thụ năng lượng của cả hai CPU và chúng sẽ khá gần với cùng hiệu suất / watt, hoặc micro sẽ giành chiến thắng.
Brian Drumond

34
Ý tưởng đơn giản hơn == nhanh hơn đơn giản là sai. Rất nhiều sự phức tạp của CPU cisc hiện đại đi vào các tính năng để làm cho nó nhanh hơn, như bộ nhớ cache đa cấp, đường ống và dự đoán nhánh
PlasmaHH

1
cpu cũ đó không chạy từ pin nhỏ trong nhiều tháng / năm. sử dụng công nghệ tiên tiến (đọc: đắt tiền) cho ngày của nó. không phải chờ đèn flash chậm / rẻ cho mỗi hướng dẫn. hiếm khi cần một mcu để chạy nhanh, họ có thể lấy một số phiên bản mới vì lợi ích của các nhà phát triển và thực hiện nó trên bất kỳ xưởng đúc nào. Tôi thích xe đạp vs công thức 1 bình luận xe tốt nhất, tôi nghĩ rằng tổng hợp nó.
old_timer

14
20 MHz không chậm chút nào. Chúng tôi chỉ được nuông chiều bởi tốc độ GHz cho PC, nơi hầu hết các tài nguyên được sử dụng để hiển thị đồ họa lạ mắt. Bạn có thể bay lên Mặt trăng với bộ xử lý Kilohertz ...
vsz

Câu trả lời:


66

Có những yếu tố khác góp phần vào tốc độ.

  • Bộ nhớ: Hiệu suất thực tế thường bị giới hạn bởi độ trễ bộ nhớ. CPU Intel có bộ nhớ cache lớn để bù đắp cho điều này. Vi điều khiển thường không. Bộ nhớ flash chậm hơn nhiều so với DRAM.

  • Tiêu thụ điện năng: Đây thường là một vấn đề lớn trong các ứng dụng nhúng. CPU Intel 200 MHz thực tế tiêu thụ hơn 10 watt (thường là nhiều hơn) và cần một bộ tản nhiệt lớn và quạt. Điều đó chiếm không gian và tiền bạc, và thậm chí còn không tính logic và bộ nhớ bên ngoài đi cùng với nó. Một AVR 20 MHz mất khoảng 0,2 watt, bao gồm mọi thứ bạn cần. Điều này cũng liên quan đến quá trình - bóng bán dẫn nhanh hơn có xu hướng bị rò rỉ.

  • Điều kiện hoạt động: Như Dmitry chỉ ra trong các bình luận, nhiều bộ vi điều khiển có thể hoạt động trong phạm vi điện áp và nhiệt độ rộng. ATMega mà tôi đã đề cập ở trên hoạt động từ -40C đến 85C và có thể được lưu trữ ở mọi thứ từ -65C đến 150C. (Các MCU khác hoạt động tới 125C hoặc thậm chí 155C.) Điện áp VCC có thể là bất cứ thứ gì từ 2.7V đến 5.5V (5V +/- 10% cho hiệu suất cao nhất). Bảng dữ liệu Core i7 này khó đọc vì chúng cắt VCC được phép trong quá trình sản xuất, nhưng dung sai điện áp và nhiệt độ chắc chắn hẹp hơn - ~ 3% dung sai điện áp và nhiệt độ tiếp giáp tối đa 105C. (Tối thiểu 5C, nhưng khi bạn kéo> 100 ampe, nhiệt độ tối thiểu không thực sự là vấn đề.)

  • Đếm cổng: Đơn giản hơn không phải lúc nào cũng nhanh hơn. Nếu đúng như vậy, Intel sẽ không cần bất kỳ kiến ​​trúc sư CPU ​​nào! Nó không chỉ là đường ống; bạn cũng cần những thứ như một FPU hiệu suất cao. Điều đó làm tăng giá. Rất nhiều MCU cấp thấp có CPU chỉ có số nguyên vì lý do đó.

  • Ngân sách khu vực chết: Vi điều khiển phải phù hợp với nhiều chức năng cho một khuôn, thường bao gồm tất cả bộ nhớ được sử dụng cho ứng dụng. (SRAM và đèn flash NOR đáng tin cậy khá lớn.) CPU PC nói chuyện với bộ nhớ ngoài và chip ngoại vi.

  • Quá trình: Những 5V 5V đó được thực hiện trên một quy trình chi phí thấp cổ xưa. Hãy nhớ rằng, chúng được thiết kế từ mặt đất trở nên rẻ. Intel bán các sản phẩm tiêu dùng với tỷ suất lợi nhuận cao bằng cách sử dụng tiền công nghệ tốt nhất có thể mua. Intel cũng bán CMOS thuần. Các quy trình MCU cần sản xuất bộ nhớ flash trên chip, khó khăn hơn.

Nhiều yếu tố trên có liên quan.

Bạn có thể mua vi điều khiển 200 MHz ngay hôm nay ( đây là một ví dụ ). Tất nhiên, chúng có giá gấp mười lần so với ATMegas 20 MHz đó ...

Phiên bản ngắn là tốc độ phức tạp hơn đơn giản và các sản phẩm giá rẻ được tối ưu hóa cho giá rẻ chứ không phải tốc độ.


11
Đừng quên sự mạnh mẽ: một CPU thông thường sẽ thất bại nếu điện áp cung cấp thay đổi hơn 5% hoặc hơn, trong khi ATMega chạy từ bất cứ thứ gì trong phạm vi 1,8-5,5V ở 4 MHz.
Dmitry Grigoryev

1
@DmitryGrigoryev Điểm tốt! Tôi đã cập nhật câu trả lời của mình.
Adam Haun

25

Một lý do kỹ thuật cơ bản chính cho tốc độ chậm là MCU giá rẻ / nhỏ chỉ sử dụng bộ nhớ flash trên chip để lưu trữ chương trình (tức là chúng không thực thi từ RAM).

Các MCU nhỏ thường không lưu bộ nhớ chương trình, vì vậy họ luôn cần đọc một lệnh từ flash trước khi thực hiện nó, mỗi chu kỳ. Điều này mang lại hiệu suất xác định và # chu kỳ / hoạt động, chỉ rẻ hơn / đơn giản hơn và tránh các vấn đề giống như PC khi mã và dữ liệu được trộn lẫn tạo ra một loạt các mối đe dọa mới từ tràn bộ đệm, v.v.

Độ trễ của việc đọc từ bộ nhớ flash (theo thứ tự 50-100ns) chậm hơn nhiều so với đọc từ SRAM hoặc DRAM (theo thứ tự 10ns trở xuống) và độ trễ phải được phát sinh sau mỗi chu kỳ, giới hạn tốc độ xung nhịp của phần.


4
Ngoài ra công suất (và do đó nhiệt) tăng nhiều hơn tuyến tính theo tần số.
Kimberly W

1
Tôi không nghĩ rằng đọc từ flash là bất cứ nơi nào gần 100 ns, phải không? IIRC đó là hai đơn đặt hàng lớn hơn. Tuy nhiên, nếu bộ điều khiển flash của bạn chứa bộ đệm DRAM nhỏ và mã không quá phân nhánh, tốc độ nhấn bộ đệm có thể rất cao (90% +) nên độ trễ trung bình của bạn có thể thấp hơn rất nhiều.
MSalters

2
Bảng dữ liệu AT91SAM7S này tôi đã mở cho biết flash bên trong của nó "Thời gian truy cập nhanh, truy cập một chu kỳ 30 MHz trong điều kiện trường hợp xấu nhất" cho flash bên trong của nó. Đó là 33ns. Và nó có một từ của bộ đệm prefetch. Flash off-die thực sự có thể có độ trễ cao hơn.
pjc50

1
@Jamil Tôi không nhớ công thức chính xác, nhưng tôi tin rằng đó là bình phương tần số.
Jan Dorniak

22

Tại sao mọi người đi xe đạp hoặc xe máy nhỏ, khi bạn có xe Công thức 1? Chắc chắn phải lái xe tốt hơn 300 km / h và đi mọi nơi ngay lập tức?

Nói một cách đơn giản, không cần phải nhanh hơn họ. Ý tôi là, chắc chắn có một bộ vi điều khiển nhanh hơn và nhanh hơn cho phép một số thứ, nhưng bạn sẽ làm gì khi nói một máy bán hàng tự động sử dụng liên tục trong khoảng 1 giờ mỗi ngày? Bạn sẽ làm gì trong một bộ điều khiển từ xa nói cho TV?

Mặt khác, chúng có các khả năng quan trọng khác, như tiêu thụ điện năng thấp, đơn giản hơn để lập trình và v.v. Về cơ bản, chúng không phải là bộ xử lý và làm những việc khác nhau.


12
@Michael Bạn lấy ý tưởng đơn giản ở đâu = nhanh?
Matt Young

3
@Michael Một chiếc xe đạp đơn giản hơn nhiều so với xe hơi, nhưng nó vẫn chậm hơn. Trong mọi trường hợp, Matt đều đúng. Một cái gì đó đơn giản không tự động nhanh. Điều đó có nghĩa là, một cái gì đó nhanh sẽ trở nên phức tạp, chỉ do những cân nhắc cần thiết cho tần số cao hơn.
AndrejaKo

2
Bộ xử lý CISC hiệu suất cao có xu hướng phát hành thêm các hướng dẫn mà bộ xử lý nhúng đơn giản. Họ đang làm nhiều công việc song song hơn, vì vậy cả hai đều phức tạp hơn và nhanh hơn.
Kimberly W

2
@Michael $ 1 có thể rất đắt đối với một số ứng dụng, tôi đã đọc được rằng bộ điều khiển vi mô trong thẻ micro SD có giá khoảng 19 cent
Xen2050

2
@Michael "đó là toàn bộ ý tưởng đằng sau các kiến ​​trúc RISC: các tác vụ đơn giản có thể được xử lý nhanh hơn các tác vụ phức tạp" Không! Các kiến ​​trúc RISC hiện đại vô cùng phức tạp vì chúng phải giới thiệu nhiều hướng dẫn hơn (như SIMD) và hỗ trợ nhiều tính năng hơn như siêu thanh, siêu phân luồng, thực hiện không theo thứ tự ... Độ phức tạp của chúng có thể dễ dàng vượt qua các kiến ​​trúc CISC. MIPS hiện nay có hàng trăm hoặc hàng ngàn hướng dẫn. "CISC v RISC phần lớn là một cuộc tranh luận lịch sử"
phuclv

13

Có rất nhiều bộ điều khiển ARM chạy ở tốc độ hàng trăm MHz trở lên. Ai cần một PIC 500 MHz và sẵn sàng trả đủ cho mỗi bộ phận để biện minh cho mặt nạ triệu đô cho một quy trình hiện đại?

ATmega328 phổ biến được cho là được sản xuất với công nghệ 350nm, hơi chậm so với các CPU Intel sản xuất mới nhất ( 14nm cho Skylake ).

Ngay cả các bộ điều khiển 8 bit giá rẻ đã dần tăng tốc và bạn có thể nhận được các bộ điều khiển PIC 32 và 64 MHz (ví dụ PIC18F14K22) vẫn hoạt động ở mức 5 V (sau này là một sự cân nhắc trong tổng chi phí hệ thống).

Một xem xét là các bộ điều khiển này có kiến ​​trúc được tối ưu hóa cho không gian bộ nhớ nhỏ và tốc độ xung nhịp chậm. Một khi bạn bắt đầu đạt được tốc độ xung nhịp cao, bạn phải điều chỉnh lại mọi thứ với các bộ đếm trước, v.v.

Đã có một nỗ lực quay trở lại (cuối những năm 1990) để sản xuất các bộ điều khiển giống như PIC rất nhanh, với ý tưởng rằng phần sụn có thể thay thế cho các thiết bị ngoại vi nếu vi điều khiển đủ nhanh. Ví dụ, bạn có thể bit-bang một UART. Tôi không nghĩ rằng tất cả họ đều thành công về mặt thương mại- Scenix-> Ubicom-> Qualcomm (trò chơi kết thúc).


350nm? Điều đó sẽ giải thích nó. Không biết rằng bất cứ ai cũng sẽ sản xuất bất cứ thứ gì sử dụng công nghệ 20 năm tuổi.
Michael

3
Một số người trong chúng ta vẫn đang thiết kế (không chỉ sử dụng) 4000 series CMOS, giống như 3000nm.
Spehro Pefhany

6
Các quy trình cũ hơn cũng có khả năng hữu ích cho những người làm việc với môi trường bức xạ hoặc các hệ thống có độ tin cậy cao đòi hỏi truy xuất nguồn gốc.
Krunal Desai

5
Trò chơi chưa kết thúc - Parallax Propeller là sự tiếp nối của khái niệm đó.
Dave Tweed

3
@Michael: Đó không chỉ là thời đại của công nghệ. Các vấn đề kích thước là tốt. Kích thước quy trình lớn hơn có tỷ lệ lỗi thấp hơn có nghĩa là loại bỏ thấp hơn và do đó năng suất cao hơn - dẫn đến chi phí cho mỗi chip thấp hơn. Nếu bạn sẵn sàng trả 100 đô la cho CPU (như máy tính để bàn) thì chi phí cao hơn do năng suất thấp hơn là hợp lý. Nếu bạn chỉ sẵn sàng trả 50 xu thì không hợp lý.
slebetman

3

Hãy tưởng tượng một người muốn sản xuất ô tô. Một cách tiếp cận là sử dụng một loạt các thiết bị trong nhà máy một cách tuần tự, chế tạo từng chiếc xe một. Cách tiếp cận này có thể được thực hiện với một lượng vừa phải các thiết bị phức tạp vừa phải, nhiều thiết bị như vậy có thể được sử dụng để thực hiện nhiều hơn một bước. Mặt khác, phần lớn thiết bị trong nhà máy vẫn sẽ không hoạt động trong phần lớn thời gian.

Một cách tiếp cận khác là thiết lập một dây chuyền lắp ráp, để ngay khi thiết bị xử lý bước sản xuất đầu tiên kết thúc hoạt động trên chiếc xe đầu tiên, nó có thể tiến hành bắt đầu hoạt động tương ứng trên chiếc xe tiếp theo. Cố gắng sử dụng lại một thiết bị ở nhiều giai đoạn trong quy trình sản xuất sẽ rất phức tạp, vì vậy, trong hầu hết các trường hợp, tốt hơn là sử dụng nhiều thiết bị được tối ưu hóa để thực hiện một nhiệm vụ rất cụ thể (ví dụ: nếu cần khoan 50 các lỗ có 10 kích cỡ khác nhau, sau đó thiết lập thiết bị tối thiểu sẽ bao gồm một mũi khoan có 10 bit và cơ chế thay đổi nhanh, nhưng một dây chuyền lắp ráp có thể có 50 mũi khoan với một bit được cài đặt vĩnh viễn và không cần thay đổi nhanh) .

Đối với những thứ như DSP hoặc GPU, có thể đạt được tốc độ rất cao tương đối rẻ vì tính chất công việc cần thực hiện là rất phù hợp. Thật không may, nhiều CPU cần có khả năng xử lý các lỗi tùy ý của các hướng dẫn về độ phức tạp khác nhau. Làm điều đó một cách hiệu quả là có thể, nhưng nó đòi hỏi logic lập kế hoạch rất phức tạp. Trong nhiều CPU hiện đại, logic cần thiết để "thực hiện công việc" không quá phức tạp hoặc tốn kém, nhưng logic cần thiết để phối hợp mọi thứ khác là.


2
Xin lỗi nếu tôi bỏ lỡ nó, nhưng điều này có liên quan gì đến CPU so với vi điều khiển 'chậm hơn'? Nó dường như chỉ tập trung vào CPU so với (thường là nhanh hơn) bộ xử lý chuyên dụng.
underscore_d

1
@underscore_d: Đoạn đầu tiên bao gồm các bộ vi điều khiển đơn giản hơn - chúng giống như cửa hàng nhỏ chế tạo một chiếc xe hơi tại một thời điểm. Đoạn thứ hai lưu ý rằng có một số bộ điều khiển giá rẻ có thể thực hiện nhiều thao tác rất nhanh, nhưng bị hạn chế trong các loại hoạt động mà chúng có thể thực hiện. Những gì khó là có thể thực hiện một hỗn hợp các hoạt động tùy ý trong khi chồng chéo chúng đến một mức độ đáng kể (nhưng rất khác nhau). Nếu một người có một hệ thống con mà trên mỗi chu kỳ có thể chấp nhận hai số và sẽ xuất sản phẩm của hai số đã được gửi bốn chu kỳ trước và ...
supercat

1
... một số khác trên mỗi chu kỳ sẽ chấp nhận hai số và đưa ra tổng của số đã được gửi hai chu kỳ trước, cố gắng tìm ra khi nào cần gửi giá trị, khi nào có kết quả, khi nào mọi thứ sẽ được tải và lưu để đăng ký, vv có thể trở nên rất phức tạp, đặc biệt là nếu người ta muốn tránh đệm tất cả các đường ống để phù hợp với đường ống dài nhất.
supercat

Cảm ơn; Điều đó xóa nó đi. Vâng, điều hợp lý là các CPU đa năng nhanh phải chịu phần lớn chi phí, cả tài chính và năng lượng, trên 'giàn giáo' - đường ống, bộ đệm, lập lịch, kiểm soát RAM, v.v. Những thứ không chỉ tốn kém mà còn thường không cần thiết cho micros. Tương tự, nó không bao giờ làm tôi ngạc nhiên về những gì có thể được thực hiện với tần số xung nhịp tương đối nhỏ trong bộ xử lý được thiết kế riêng cho một ứng dụng. Thứ hấp dẫn ở cả hai bên!
gạch dưới

@underscore_d: Kiến trúc MIPS được thiết kế dựa trên tiền đề rằng trình biên dịch sẽ chịu trách nhiệm cho một số vấn đề lập lịch, do đó cho phép phần cứng được đơn giản hóa. Khái niệm này chưa bao giờ thực sự bắt kịp, bởi vì các bộ xử lý mới hơn thường yêu cầu nhiều giai đoạn đường ống hơn các giai đoạn cũ, nhưng mã được viết cho bộ xử lý có đường ống ngắn hơn sẽ không hoạt động trên bộ xử lý với các bộ xử lý dài hơn nếu không có khóa liên động phần cứng.
supercat
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.