Tại sao mọi người muốn CISC?


42

Trong bài giảng về hệ thống máy tính của chúng tôi, chúng tôi đã được giới thiệu về bộ xử lý MIPS. Nó đã được phát triển lại trong suốt nhiệm kỳ và thực tế là khá dễ hiểu. Nó sử dụng một thiết kế RISC , đó là các lệnh cơ bản của nó thường được mã hóa và chỉ có một vài trong số chúng để giữ cho dây đơn giản.

Nó đã được đề cập rằng CISC theo một triết lý khác nhau. Tôi nhìn thoáng qua bộ hướng dẫn x86 và bị sốc. Tôi không thể hình dung bất cứ ai muốn xây dựng bộ xử lý sử dụng bộ lệnh phức tạp đến thế!

Vì vậy, tôi cho rằng phải có những lý lẽ tốt tại sao một phần lớn của thị trường bộ xử lý sử dụng kiến ​​trúc CISC. Họ là ai?


Câu trả lời:


47

Có một xu hướng lịch sử chung.

Vào thời xa xưa, ký ức là nhỏ, và vì vậy các chương trình được thực thi nhỏ. Ngoài ra, trình biên dịch không thông minh lắm, và nhiều chương trình được viết bằng trình biên dịch chương trình, vì vậy nó được coi là một điều tốt để có thể viết chương trình bằng cách sử dụng một vài hướng dẫn. Các đường ống chỉ dẫn rất đơn giản và các bộ xử lý đã lấy một lệnh tại một thời điểm để thực hiện nó. Máy móc bên trong bộ xử lý dù sao cũng khá phức tạp; hướng dẫn giải mã không cảm thấy là một gánh nặng.

Vào những năm 1970, các nhà thiết kế CPU và trình biên dịch nhận ra rằng việc có các hướng dẫn phức tạp như vậy rốt cuộc không hữu ích lắm. Thật khó để thiết kế các bộ xử lý trong đó các hướng dẫn đó thực sự hiệu quả và rất khó để thiết kế các trình biên dịch thực sự tận dụng các hướng dẫn này. Khu vực chip và độ phức tạp của trình biên dịch được chi tiêu tốt hơn cho các mục đích chung hơn như các thanh ghi mục đích chung hơn. Các bài viết trên Wikipedia về RISC giải thích điều này một cách chi tiết hơn.

MIPS là kiến ​​trúc RISC cuối cùng, đó là lý do tại sao nó được dạy rất thường xuyên.

Các x86 gia đình là một chút khác nhau. Ban đầu nó là một kiến ​​trúc CISC dành cho các hệ thống có bộ nhớ rất nhỏ (không có chỗ cho các hướng dẫn lớn) và đã trải qua nhiều phiên bản kế tiếp. Tập lệnh x86 ngày nay không chỉ phức tạp vì nó là CISC, mà bởi vì nó thực sự là 8088 với 80386 với Pentium có thể có bộ xử lý x86_64.

Trong thế giới ngày nay, RISC và CISC không còn là sự phân biệt đen trắng mà họ có thể đã từng có một lần. Hầu hết các kiến ​​trúc CPU đã phát triển thành các sắc thái khác nhau của màu xám.

Về phía RISC, một số biến thể MIPS hiện đại đã thêm các hướng dẫn nhân và chia, với mã hóa không đồng nhất. Các bộ xử lý ARM đã trở nên phức tạp hơn: nhiều trong số chúng có tập lệnh 16 bit được gọi là Thumb ngoài các hướng dẫn 32 bit của bản gốc, không đề cập đến Jazelle để thực hiện các lệnh JVM trên CPU. Bộ xử lý ARM hiện đại cũng có hướng dẫn SIMD cho các ứng dụng đa phương tiện: một số hướng dẫn phức tạp phải trả tiền sau tất cả.

Về phía CISC, tất cả các bộ xử lý gần đây đều ở RISC ở một mức độ nào đó. Họ có microcode để xác định tất cả các hướng dẫn macro phức tạp này. Sự phức tạp tuyệt đối của bộ xử lý làm cho thiết kế của mỗi mô hình mất vài năm, ngay cả với thiết kế RISC, với số lượng lớn các thành phần, với việc thực hiện dự báo và đường ống và không có gì.

Vậy tại sao các bộ xử lý nhanh nhất vẫn còn CISC bên ngoài? Một phần của nó, trong trường hợp của họ x86 (32 bit và 64 bit), là khả năng tương thích lịch sử. Nhưng đó không phải là toàn bộ của nó. Đầu những năm 2000, Intel đã cố gắng đẩy kiến trúc Itanium . Itanium là một trường hợp cực đoan của các hướng dẫn phức tạp (mặc dù không thực sự là CISC: thiết kế của nó đã được đặt tên là EPIC ). Nó thậm chí còn loại bỏ ý tưởng lỗi thời về việc thực hiện các lệnh theo trình tự: tất cả các hướng dẫn được thực hiện song song cho đến khi có rào cản tiếp theo. Một trong những lý do mà Itanium không đưa ra là không ai, dù ở Intel hay ở nơi khác, có thể viết một trình biên dịch hợp lý cho nó. Bây giờ là một bộ xử lý chủ yếu tuần tự cũ tốt như x86_64, đó là điều chúng tôi hiểu.


4
Một trong những lý do là CISC bước ra khỏi ký ức hạn chế (làm hướng dẫn nhỏ gọn bắt buộc), CPU hiện nay là nhiều nhanh hơn so với bộ nhớ ( một bộ nhớ lấy mất đủ thời gian để thực hiện hàng trăm hướng dẫn, và khoảng cách ngày càng rộng lớn hơn), vì vậy hướng dẫn nhỏ gọn là cao cấp để sử dụng bộ nhớ cache hiệu quả.
vonbrand

Ồ, và một trong những động lực đằng sau RISC là phân tích các hướng dẫn được thực hiện trên các máy CISC trong ngày. Họ đã đưa ra các hướng dẫn cực kỳ đơn giản, do đó, nỗ lực thêm (mạch và thời gian) của việc giải mã các hướng dẫn phức tạp hầu hết bị lãng phí.
vonbrand

2
@vonbrand: Trên các bộ xử lý bao gồm các hướng dẫn như dec [address], chúng có xu hướng được sử dụng khá nhiều và cung cấp một lợi thế đáng kể so ldr r0,[address] / sub r0,#1 / str r0,[address] với các kiến ​​trúc có thể thực hiện chúng một cách hiệu quả . Sự xuất hiện của RISC xuất phát từ thực tế là trong khi một máy không có đường ống có thể thực hiện decnhanh hơn gấp đôi so với load/sub/storetrình tự, thì đường ống có thể cải thiện tốc độ của chuỗi sau hơn là có thể cải thiện tốc độ đọc-sửa-ghi chỉ dẫn.
8/2/2015

@vonbrand đã đúng, trong đó RAM gần như không quý như nó, nhưng bộ nhớ cache thì có. Huffman mã hóa tập lệnh (loại này là những gì CISC hiện nay) vẫn còn giá trị theo nghĩa đó.
Bút danh

Chà, đó là điều mà tôi chưa bao giờ biết về Itanium! Cảm ơn. (đồng thời, ước gì ai đó vẫn tạo ra CPU MIPS cao cấp hơn - nghe có vẻ như chúng rất hấp dẫn để lập trình. Tôi biết các thiết kế tồn tại nhưng không ai tạo ra chúng từ các
GPU

15

Tập lệnh x86 là một chút của trường hợp đặc biệt. Tôi nghĩ rằng 68K và VAX của Motorola là những ví dụ tốt hơn về CISC. Trong thời đại của rất nhiều mã ngôn ngữ lắp ráp, mọi người nghĩ rằng một ISA rất đều đặn, rất toàn diện sẽ tốt hơn: Tôi tin rằng họ đã gọi sự khác biệt giữa mã lắp ráp và cách mọi người nghĩ về " Khoảng cách ngữ nghĩa ". Về mặt lý thuyết, bạn muốn có một bộ hướng dẫn phù hợp với cách bạn nghĩ.

Trình điều khiển thiết kế lớn khác cho CISC dường như là "tính trực giao": mọi hướng dẫn sẽ hoạt động với mọi chế độ địa chỉ (đăng ký, địa chỉ tuyệt đối, bù tương đối, v.v.). Bạn có thể thấy người đàn ông không có tính trực giao xuất hiện trong thiết kế API trong Môi trường điện toán phân tán (DCE) và trong CORBA. Ý tưởng đó không giới hạn trong thiết kế tập lệnh.


5
Thật buồn cười là tính trực giao trong thực tế hóa ra có nghĩa là sự kết hợp của tất cả các lựa chọn .
Dave Clarke

Sự hợp lý đó chắc chắn có thể được đưa đi quá xa, nhưng nó là một trợ giúp hữu ích cho bộ nhớ. Tôi yêu Motorola 6502, nhưng nó có đủ loại "hướng dẫn này mất X, tương tự chỉ có Y, thứ ba không có gì cả" hạn chế sử dụng đăng ký. Gặp gỡ VAX đã được giải phóng ...
vonbrand

@vonbrand: 6502 không phải là Motorola - đó là MOS Technologies, công ty đã sản xuất nó như một đối thủ cạnh tranh với Motorola 6800. Đôi khi tôi đã tự hỏi liệu 6502 sẽ đơn giản hơn hay phức tạp hơn nếu tất cả các hướng dẫn không phân nhánh các toán hạng đã sử dụng cùng một mã hóa (24 lần hướng dẫn tám chế độ địa chỉ có thể được giải mã khá dễ dàng). Tôi thấy đặc biệt tò mò rằng CMP hoạt động với tám chế độ địa chỉ và DEC chỉ có bốn chế độ, nhưng (trên các phiên bản NMOS của 6502) nếu một "HOẶC" kết hợp các opcodes cho các hướng dẫn đó, không chỉ một người sẽ nhận được "DCP" hướng dẫn ...
supercat

... hoạt động như DEC, nhưng sau đó so sánh kết quả của việc giảm với giá trị trong bộ tích lũy và đặt cờ một cách thích hợp, nhưng DCP sẽ xử lý chính xác các chế độ địa chỉ không khả dụng với DEC. Điều kỳ lạ là phần cứng có thể xử lý chính xác (ZP), địa chỉ Y bằng lệnh ghi sửa đổi đọc, nhưng bộ giải mã lệnh sẽ không để chế độ đó hoạt động trong bất kỳ hướng dẫn đọc-sửa-ghi tài liệu nào.
supercat

1
Từ những gì tôi đọc được, "R" trong RISC không có nghĩa là bộ xử lý có bộ hướng dẫn giảm, mà là nó có một bộ hướng dẫn rút gọn; khía cạnh lớn nhất của điều đó là yêu cầu tải và lưu trữ bộ nhớ không được kết hợp với các hoạt động khác.
supercat

7

Một lý do cho CISC là mã hóa dày đặc cho các hướng dẫn (bộ nhớ rất tốn kém). Toàn bộ ý tưởng của RISC là tăng tốc CPU bằng cách tìm nạp các lệnh có cùng kích thước mọi lúc (không có bước "tìm ra kích thước lệnh" phức tạp, chậm), để chúng làm những việc đơn giản (vì vậy thật nhanh chóng để biết phải làm gì) . Bộ nhớ đã rẻ. Khu vực mạch giải phóng này trên CPU cho các công cụ khác (nhiều thanh ghi hơn, nhiều đơn vị xử lý hơn để một số hướng dẫn có thể được thực hiện song song nếu chúng độc lập). Vì CPU chậm hơn nhiều so với RAM, điều này đã được đền đáp. Nhưng CPU đã nhanh hơn (và làm song song nhiều hơn và ...) trong khi RAM không tăng nhanh hơn (ít nhất là không cùng tốc độ so với mức tiêu thụ dữ liệu của CPU do tăng song song). Đáp ứng bộ nhớ cache, nhanh như CPU ​​nhưng nhỏ. Vì vậy, bây giờ bộ nhớ đang ở mức cao hơn một lần nữa, không phải vì lý do chi phí mà vì tốc độ. Thời gian hồi sinh CISC. Trong khi đó, CPU trở nên phức tạp hơn, đến mức mà bộ vi xử lý ngày nay thực hiện phần lớn những gì trình biên dịch RISC đã làm: Chia các hoạt động thành các phần cơ bản, sắp xếp lại các hướng dẫn RISCy nội bộ để chúng có thể được thực hiện đồng thời bất cứ khi nào có thể. RISC đã bị coi là "Giảm các công cụ quan trọng cho trình biên dịch" vì một lý do ...


1
Dung lượng bộ nhớ vẫn còn quan trọng trong một số hệ thống nhúng, đặc biệt là bộ vi điều khiển trong đó tất cả bộ nhớ / bộ nhớ đều nằm trên chip xử lý. Đây có lẽ là một yếu tố quan trọng để Renesas giới thiệu một CISC mới - RX--, nghĩa là, không chỉ mật độ mã cho hiệu suất mà (chủ yếu là?) Để giảm dung lượng.
Paul A. Clayton

Theo những gì tôi hiểu, "R" của RISC không chỉ nói đến tập hợp các hướng dẫn bị giảm mà là chính các hướng dẫn bị giảm. Đáng chú ý nhất, trong bộ xử lý CISC như 8086, người ta có thể thêm giá trị trực tiếp vào bộ nhớ, nhưng trong RISC, việc tải, thêm và lưu trữ phải được thực hiện theo các bước riêng biệt. Trong nhiều trường hợp, các máy CISC có các tập lệnh có độ dài thay đổi và mã hóa lệnh dày hơn so với các máy RISC, nhưng các bộ xử lý ARM mới hơn sử dụng các lệnh có độ dài thay đổi và vẫn tách riêng các tải và lưu trữ.
supercat

@ PaulA.Clayton Điều này là chính xác nhưng tôi sẽ là người phạm tội và chỉ ra rằng bạn có thể giao tiếp với RAM ngoài (SRAM hoặc DDR thông qua bộ điều khiển) và mở rộng dung lượng bộ nhớ của bạn với chi phí tăng thêm độ phức tạp và giảm tính thực tế.
Wyatt8740

3

Ưu điểm thực sự của CISC là giảm áp lực bộ nhớ và bộ nhớ cache và điều đó một mình giúp cho các ứng dụng hiệu năng cao tốt hơn vì một tắc nghẽn lớn trong các hệ thống như vậy là băng thông bộ nhớ. Với bộ nhớ đệm có kích thước bằng nhau, bộ xử lý CISC có thể mô tả nhiều thông tin hơn RISC. Ngoài ra, do các hướng dẫn CISC liên quan đến một số hoạt động vi mô, nên có thể cải tiến kiến ​​trúc có thể cung cấp đường dẫn thực thi nhanh nhất cho hướng dẫn mà viết ra các hướng dẫn riêng lẻ có thể cung cấp. Nói tóm lại, bộ xử lý CISC hiệu quả hơn trong việc sử dụng băng thông bộ nhớ, thường chuyển thành tăng hiệu năng cho các ứng dụng cần nhiều bộ nhớ.

Ví dụ: để thực hiện R1 = R2 + R3 + R4 + R5 + R6và đẩy kết quả lên ngăn xếp, giả sử mã RISC được viết là,

ADD  R1, R2, R3 (4-byte)
ADD  R1, R4, R5 (4-byte)
ADD  R1, R6, R0 (4-byte, R0=0)
PUSH R1         (4-byte)

và như vậy đòi hỏi 16 byte không gian.

Đến với CISC, do khả năng của các kiểu mã hóa khác nhau, cùng một thông tin có thể được trình bày như sau ...

ADD R1, R2, R3 (4-byte)
ADD R1, R4, R5 (4-byte)
ADD R1, R6     (2-byte)
PUSH R1        (1-byte) 

chỉ mất 12 byte bộ nhớ. Do đó, việc sử dụng bộ nhớ được cải thiện cho phép bộ xử lý xem thêm hướng dẫn và do đó giảm chu kỳ nhàn rỗi.


1
Điều này cung cấp một quan điểm hữu ích nhưng dường như cũng có thể hơi quá mức khi sử dụng tính từ. "tăng hiệu suất rất lớn" - bạn có quan tâm đến việc định lượng điều đó không? Bạn có thể biện minh cho phần "khổng lồ"? Tương tự như vậy đối với "nhiều thông tin hơn".
DW

Tôi tin rằng Linus Torvalds đã nói một tuyên bố tương tự. Tính từ loại bỏ anyway.
Revanth Kamaraj

Đây chỉ là không đúng sự thật. CISC không làm giảm băng thông bộ nhớ. Đăng ký áp lực có thể.
Jeff

Jeff, tham khảo kiến ​​trúc soc ARM của Steve Furber.
Revanth Kamaraj

Trang 27 Phiên bản 2 Hệ thống ARM trên kiến ​​trúc Chip.
Revanth Kamaraj

2

Một khía cạnh quan trọng mà không ai đưa ra là gần như tất cả các CPU CISC đều là kiến ​​trúc được mã hóa. Bộ vi xử lý và cửa hàng điều khiển tiêu thụ bất động sản ít hơn nhiều so với bộ điều khiển cứng và bộ hướng dẫn có thể được sửa đổi mà không cần sửa đổi phần cứng.

Bộ vi xử lý là thiết bị mới khi tôi vào trường. Một thực tế rất phổ biến từ những năm bảy mươi và đầu thập niên tám mươi là lắp ráp CPU bằng ALU lát bit, bộ điều khiển dựa trên bộ lọc vi mô và kho lưu trữ điều khiển trong đó tập lệnh được mã hóa được nạp hoặc thổi. Những máy tính này được dựa trên logic bóng bán dẫn bóng bán dẫn 7400 series (TTL). ALU 4 bit 78181 đã được sử dụng để xây dựng rất nhiều bộ xử lý, bao gồm cả máy tính DEC PDP-11 và VAX 11 đời đầu, Data General Nova, Xerox Alto và máy tính để bàn Wang.


"Một khía cạnh quan trọng mà không ai đưa ra, do đó, gần như tất cả các CPU CISC đều là kiến ​​trúc được mã hóa." Có và không. Để lập lịch lệnh, CPU CISC hiện đại thường chỉ sử dụng điều khiển vi mã cho các hướng dẫn CISC kế thừa cứng (ví dụ: hướng dẫn siêu việt x87). Mặt khác, ngay cả các chip RISC đôi khi sử dụng điều khiển vi mã thay thế cho các máy trạng thái cho một số hệ thống con (ví dụ: để điều khiển một số đơn vị cụ thể). Thật vậy, ranh giới giữa microcode và bảng trạng thái có thể mờ.
Bút danh

2

Bạn sẽ gặp khó khăn khi tìm bất kỳ máy tính để bàn nào không sử dụng bộ xử lý tương thích x86. Bộ hướng dẫn đó đã đánh bại MIPS, nó đã đánh bại Sparc, nó đã đánh bại Alpha, nó đã đánh bại Titanic (tôi có thể đã đánh vần sai tên đó). MIPS mặt khác là hầu như không tồn tại ngày nay. Vì vậy, bất kể bạn nghĩ gì ngày hôm nay, những người rất thông minh nghĩ rằng bộ hướng dẫn x86 là một ý tưởng thực sự tốt và họ đã kiếm được rất nhiều tiền với nó.

Máy tính khởi đầu là RISC vì một bộ hướng dẫn phức tạp nằm ngoài khả năng của người thực hiện. Nếu bạn muốn xem tập lệnh RISC, hãy xem tập lệnh CDC 6400-6600 và CDC Cyber ​​170-175. Đó là RISC thích hợp. Khoảng 10 năm trước tôi đã hỏi một số nhà thiết kế chip cần bao nhiêu dung lượng (trong góc của chip GPU tiên tiến hợp lý). Họ nói với tôi về 1mm2 - bao gồm RAM của máy, sẽ chiếm 99% dung lượng đó.

Khi mọi người có thể chế tạo máy CISC, họ thực sự đã có lợi thế. Hãy nhớ rằng x86 đã được phát hành từ lâu trước MIPS, 1978 so với 1985. Vào thời điểm đó, bạn cần chu kỳ bộ xử lý để đọc hướng dẫn, giải mã chúng, thực hiện chúng. MIPS năm 1978 sẽ thực hiện bốn chu kỳ cho mỗi hướng dẫn và mỗi thao tác. Nếu bạn thực hiện một lệnh x86 như "thêm đăng ký vào bộ nhớ", có thể mất 7 chu kỳ cho hướng dẫn, nhưng thực hiện 3 thao tác. Đó là một lợi thế lớn. Và bạn càng có nhiều hướng dẫn khác nhau và mỗi hướng dẫn càng mạnh thì lợi thế càng lớn.

Và khi tập lệnh x86 64 bit với mã tiền tố ác mộng được phát triển, độ phức tạp của tập lệnh không còn quan trọng nữa. CISC ngày nay mới được dịch sang RISC và toàn bộ hoạt động kinh doanh dịch thuật có thể là một phần trăm của chip.


1

Câu hỏi này có liên quan nhiều đến các xu hướng gần đây trong điện toán ủng hộ sự thay đổi lớn đối với điện toán di động và máy tính bảng, từ đó ủng hộ RISC cpus, và đã khiến Intel (có lẽ là nhà cung cấp CISC lớn nhất thế giới) gặp bất lợi trong cái gọi là "lạm phát" điểm " chính xác như loại Grove thu hút sự chú ý và cảnh báo. Câu chuyện ngắn là CISC dường như đang bắt đầu tan chảy dưới sự thay đổi lớn về mô hình / sự thay đổi lớn của điện toán di động vì mức tiêu thụ năng lượng thực sự cao.

CISC có lẽ sẽ luôn xuất hiện trên máy tính để bàn nhưng thiết bị di động được coi là tương lai mới của điện toán. Nhiều quốc gia đang phát triển (với dân số sử dụng máy tính tiềm năng lớn) thực sự sẽ bỏ qua giai đoạn máy tính để bàn. Xem, ví dụ, Rise and Fall của máy tính để bàn

Một nghiên cứu tình huống tuyệt vời cho câu hỏi này là đọc về Mike Bell, người đang làm việc cho Intel ở một vị trí mới đang cố gắng định vị Intel tốt hơn trên thị trường di động thông qua CPU Atom thông qua một dự án / sáng kiến ​​giống như "skunkworks", với người điều hành rất mạnh ủng hộ. Thị trường di động được kết hợp chặt chẽ với kiến ​​trúc RISC, và chủ yếu là bộ xử lý ARM, phần lớn nhờ hiệu quả năng lượng cao (tiêu thụ năng lượng), một tiêu chí quan trọng mới để tính toán mà câu hỏi & không có câu trả lời nào khác đề cập. Dưới đây là hai bài viết gần đây dọc theo những dòng này tiết lộ rất nhiều suy nghĩ nội bộ của công ty (và tiếp theo là tranh giành!) Về chủ đề:


phụ lục. có nghĩa là trích dẫn một bài viết về các điểm uốn dựa trên kinh doanh , liên quan một cách lỏng lẻo đến khái niệm toán học. xem ví dụ Andy Grove và những bí ẩn của điểm uốn
vzn

0

Một yếu tố không được đề cập trong các câu trả lời khác là kinh tế. Nó cũng là về Intel. Kiến trúc CISC được đại diện chủ yếu bởi các họ x86 và x64. Tất cả đều xuất phát từ 8088 khiêm tốn được sử dụng trong PC gốc của IBM. Sự thống trị thị trường ban đầu của loạt máy tính đó có nghĩa là Intel có nguồn doanh thu vững chắc cho R & D. Cùng với thực tế là Intel có thể hạn chế cạnh tranh bằng cách từ bỏ / hủy bỏ các thỏa thuận nguồn thứ hai có nghĩa là giá CPU có thể tăng lên mức cực cao đảm bảo tỷ suất lợi nhuận gộp rất phong phú.

Do đó, trong khi các nhà sản xuất CPU khác phải vật lộn để theo kịp, Intel đã có thể rót hàng tỷ đô la để phát triển các sản phẩm mới hơn, nhanh hơn. Cuộc thi RISC không thể chi gần số tiền đó. Nhiều bộ xử lý RISC đã ra khỏi thị trường. Một số là:

DEC Alpha, Fairchild Clip, AMD 29000, SPARC, MIPS, POWER (cho PC sử dụng), Hitachi SuperH ...

Tôi nhớ lại các học giả của thời đại đó tuyên bố rằng cuộc chiến RISC vs CISC đã kết thúc và CISC đã thắng. Nó không có. Nó chỉ vượt qua mọi người khác.

Năng động này bao giờ có thể thay đổi? Nó đã là. Không có lợi thế kinh tế là tuyệt đối.

Một gót chân Achilles của x86 là sự thèm ăn quyền lực. Điều này đã cho phép một đối thủ cạnh tranh (ARM) nhỏ hơn, nhanh nhẹn hơn phát triển mạnh ở các thị trường (như điện thoại / máy tính bảng / v.v.) nơi mà sự tiết kiệm năng lượng quan trọng.

Một video tuyệt vời về điều này từ một thành viên của nhóm ARM là Bộ xử lý ARM - Gieo hạt thành công - Computerphile vào khoảng 8:30

Vấn đề thứ hai đối với x86 là sự thành công trong chiến lược của Intel. Họ quản lý để loại bỏ gần như tất cả các đối thủ cạnh tranh. Họ chạy chậm lại. Trong nhiều năm nay, bộ xử lý Intel mới chỉ cung cấp những cải tiến rất khiêm tốn. Tệ hơn nữa, lợi nhuận siêu giàu là một chế độ ăn kiêng khó khăn để từ bỏ cho bất kỳ tập đoàn nào.

Ngày nay, các hệ thống dựa trên ARM (Chip) của ARM và các chip x64 cạnh tranh của AMD một lần nữa khiến thị trường CPU trở thành một nơi thú vị. (IMHO)


0

Có nhiều lý do người ta sẽ chọn thực hiện CISC. Lý do nổi bật nhất là khả năng tương thích nhị phân với tập lệnh CISC hiện có. Trong khi công nghệ dịch thuật nhị phân phần mềm đã được cải thiện, khả năng tương thích dựa trên phần cứng có một số lợi thế kỹ thuật (cũng như nhược điểm của bộ nhớ đệm dịch ít hơn) và lợi thế kỹ thuật ít hơn có vẻ đáng tin cậy hơn.

Mật độ mã có lẽ là lý do quan trọng thứ hai để chọn CISC. Renesas RX được thiết kế dưới dạng CISC dành riêng cho mật độ mã vì nó nhắm vào các bộ vi điều khiển trong đó kích thước bộ nhớ mã là một yếu tố chi phí đáng kể. Hướng dẫn độ dài thay đổi, hướng dẫn phức tạp (chủ yếu là nhiều chế độ địa chỉ hơn), toán hạng ngầm và thanh ghi thấp hơn đếm tất cả mật độ mã lợi ích.

Một lý do lịch sử (và theo tôi là sai lầm) khi chọn CISC là để thu hẹp khoảng cách ngữ nghĩa giữa các lập trình viên sử dụng ngôn ngữ cấp cao hơn và bộ xử lý. Do các lệnh phức tạp thường có thể được thay thế bằng một chuỗi các lệnh đơn giản hơn, nên độ phức tạp của trình biên dịch ngôn ngữ cấp cao hơn cho RISC không cần phức tạp hơn nhiều so với CISC phù hợp với ngôn ngữ. RISC tránh "xung đột ngữ nghĩa" (trong đó một lệnh của bộ xử lý thực hiện nhiều hơn hoặc ít hơn một câu lệnh ngôn ngữ tương ứng) và tạo điều kiện giảm cường độ và lên lịch tối ưu hóa. (Xem phần "Sự đánh đổi trong nỗ lực phát triển trình biên dịch liên quan đến CISC so với RISC là gì?" Để biết thêm chi tiết.)

Có thể có một chi phí cố định đáng kể liên quan đến việc thực hiện một hướng dẫn. Điều này khuyến khích việc sử dụng các hướng dẫn tương đối phức tạp để truyền bá chi phí này trên công việc thực tế hơn; giảm số lượng lệnh động có thể cải thiện hiệu suất. Khi chi phí logic và RAM lớn hơn nhiều so với chi phí ROM, việc khuyến khích các hướng dẫn phức tạp là rất đáng kể vì một hướng dẫn đã được giải mã bằng cách tra cứu microcode.

Một lý do để sử dụng CISC có lẽ bị mâu thuẫn bởi bằng chứng lịch sử là microcode có thể được tối ưu hóa cho từng kiến ​​trúc vi mô trong khi các thư viện tiêu chuẩn có thể chậm khai thác các tính năng của việc triển khai mới. Mức độ tối ưu hóa của việc triển khai phần mềm của memcopy so với microcode cho REP MOVSB ​​ngụ ý rằng các thư viện có thể được chú ý nhiều hơn microcode. Một phần của điều này có thể đến từ nhà cung cấp bộ xử lý nhắm vào cơ sở người dùng rộng hơn nên việc chứng minh nỗ lực có thể khó khăn hơn so với phần mềm nguồn mở hoặc phần mềm nội bộ nơi lợi ích cục bộ của nhà phát triển hoặc người dùng có thể thiên vị nỗ lực triển khai.

Có thể gửi một thư viện tiêu chuẩn được tối ưu hóa với bộ xử lý có những điểm hấp dẫn đáng kể. Việc lưu trữ và thực thi thư viện chuẩn nền tảng có thể được tối ưu hóa đáng kể bằng cách mã hóa phần cứng-phần cứng. Sự khác biệt giữa một lệnh phức tạp và lệnh gọi Lớp trừu tượng nền tảng có thể tinh tế (hoặc không tồn tại). Thiết kế RISC có thể sử dụng các kỹ thuật triển khai tương tự để xử lý các cuộc gọi PAL như CISC thực hiện cho các hướng dẫn phức tạp, bao gồm sử dụng các thao tác không được cung cấp trong tập lệnh chung với phần cứng chuyên dụng, sử dụng bộ đệm và giải mã thông minh và chỉ định toán hạng đăng ký (mặc dù CISC sẽ thường sử dụng các thanh ghi chuyên dụng tương tự như ABI cho mỗi chức năng). Mô hình tinh thần liên quan đến CISC có thể khuyến khích tối ưu hóa như vậy. Ngoài ra, người dùng có thể ít bị xúc phạm hơn bởi việc đưa vào "

Giải mã các hướng dẫn tương đối phức tạp có thể có ít chi phí hoạt động hơn (và có thể đáng tin cậy hơn trong ý định sáng suốt) so với kỹ thuật nhận dạng thành ngữ RISC có thể so sánh trong đó một chuỗi các hướng dẫn được công nhận là một đơn vị ngữ nghĩa. Sự khác biệt về chi phí này sẽ được chú ý nhất trong một triển khai nhỏ hơn, nhưng chi phí sử dụng thông tin này làm giảm tầm quan trọng của việc tiết kiệm giải mã.

Thông tin theo ngữ cảnh bổ sung có thể tạo điều kiện tối ưu hóa phần cứng. Ví dụ: khi tăng một giá trị trong bộ nhớ, phần cứng có thể nhận ra rằng địa chỉ bộ nhớ được sử dụng hai lần (cho tải và lưu trữ) tạo cơ hội cho việc ghi nhớ bộ nhớ cache và bộ nhớ đệm dịch. Hướng dẫn phức tạp có thể cung cấp thông tin rõ ràng như vậy. Trong một lệnh phức tạp, các giá trị trung gian có thời gian tồn tại rõ ràng (đó là hướng dẫn); với một giá trị đăng ký RISC truyền thống phải được ghi đè rõ ràng để chỉ ra sự kết thúc của sự sống. (Lưu ý: RISC có thể chỉ định một thanh ghi luôn luôn bằng 0 sau mỗi lần sử dụng, cung cấp một phương tiện để chỉ định một giá trị tạm thời sử dụng một lần. Các hướng dẫn như vậy sẽ phức tạp hơn vừa phải.)

Nếu các chi tiết triển khai không bị ẩn đằng sau một lớp trừu tượng, việc sử dụng các cấu trúc vi mô khác nhau để tối ưu hóa cho các sự đánh đổi khác nhau sẽ trở nên khó khăn hơn. Phơi bày các chi tiết vi kiến ​​trúc như bảo đảm kiến ​​trúc sẽ khóa kiến ​​trúc vi mô vào bảo đảm tương thích. Mặc dù phần mềm PAL có thể được tối ưu hóa giống như các hướng dẫn phức tạp, nhưng yêu cầu phải có mã hóa phần cứng-phần cứng. Sự tách biệt tổ chức và sự đa dạng làm cho codeign khó khăn hơn.

Hướng dẫn phức tạp có thể cung cấp quyền truy cập được bảo vệ đến trạng thái đặc quyền. Ví dụ, các hướng dẫn phức tạp thường là nguyên tử đối với các ngắt. Mặc dù bộ hướng dẫn RISC có thể cung cấp cơ chế cấp người dùng để tạm thời tạm dừng các ngắt, thậm chí có thể là thứ gì đó như tải liên kết để phần mềm thử lại rõ ràng hoạt động nếu bị gián đoạn, cung cấp như vậy không phải là điển hình cho RISC.

Tương tự, một hướng dẫn phức tạp có thể cung cấp quyền truy cập có kiểm soát và / hoặc sử dụng thông tin đặc quyền. Bởi vì hoạt động được thực hiện có kiểm soát ngữ nghĩa, vi phạm đặc quyền thực tế có thể tránh được. Các lựa chọn thay thế theo định hướng RISC bao gồm mã PAL (thường có chi phí đáng kể) và quyền truy cập được che dấu vào các thanh ghi cấu hình (hoặc bản sao bóng của các thanh ghi) có một số trạng thái đặc quyền. Cung cấp giải pháp chung (RISC) khó hơn cung cấp giải pháp cho một hoặc một vài trường hợp đặc biệt (CISC), nhưng mạnh hơn và ít bị tổn thương hơn khi tích lũy các trường hợp đặc biệt. Nếu một người tin rằng các trường hợp đặc biệt quan trọng là rất ít, CISC có thể hấp dẫn hơn.

Hướng dẫn phức tạp cũng có thể ẩn trạng thái từ phần mềm. Một lợi thế nổi bật của việc này là tiết kiệm và khôi phục bối cảnh. Với các hướng dẫn lưu và khôi phục trạng thái, kiến ​​trúc chỉ cần truyền thông kích thước ngữ cảnh tới HĐH chứ không phải các cơ chế cụ thể để chuyển trạng thái sang bộ nhớ. Điều này cho phép các ứng dụng chạy trên HĐH cũ sử dụng các phần mở rộng của ISA có thêm trạng thái. (Một lần nữa, phần mềm PAL có thể cung cấp chức năng tương tự.)


Phần lớn sự phức tạp của x86 đến từ khả năng tương thích trên nhiều tiện ích mở rộng. Với các hướng dẫn phức tạp và ít trực giao (hữu ích cho mật độ mã), loại bỏ một số công việc hóa ra không cần thiết, tránh các chuỗi phụ thuộc không cần thiết (ví dụ: chỉ một bit mang, chỉ một thanh ghi lượng dịch chuyển động), thêm một số công việc đã chuyển được sử dụng phổ biến và có thể được tối ưu hóa trong hướng dẫn phức tạp - bất kỳ điều nào trong số này sẽ yêu cầu thêm một hướng dẫn mới và làm cho ISA kém thẩm mỹ hơn.

Trong nhiều trường hợp, RISC sẽ không gặp phải các vấn đề như vậy bởi vì các hướng dẫn rất trực giao và nguyên thủy. Trong một số trường hợp, RISC có thể cần thêm các nguyên thủy mới nhưng thông thường sẽ được áp dụng cho nhiều hơn một lần sử dụng.

Ngoài ra, một khi cơ sở hạ tầng sẵn sàng hỗ trợ các hướng dẫn phức tạp, các rào cản được giảm bớt cho các hướng dẫn phức tạp bổ sung. Đó là, phần lớn chi phí của các hướng dẫn phức tạp trong không định kỳ. ISIS RISC mạnh mẽ chịu một trở ngại bổ sung để giới thiệu các tính năng CISCy.

Tần suất mở rộng của x86 cũng có thể được quy cho một phần là do tính phổ biến của nó đối với điện toán đa năng và mô hình bộ xử lý thương mại (những điều này cũng làm tăng tầm quan trọng của khả năng tương thích nhị phân). Các RISC ISA thường được gắn với các nhà cung cấp sysem, điều này khuyến khích sự tập trung hẹp hơn vào các ứng dụng và việc thiếu cạnh tranh để triển khai một RISC ISA cụ thể phần nào không khuyến khích việc sử dụng các phần mở rộng tập lệnh để tiếp thị. Mức độ phổ biến cũng làm cho chi phí phát triển các tiện ích mở rộng mới ít đáng kể hơn (chi phí không định kỳ ít quan trọng hơn với khối lượng cao hơn).

Triết lý tương thích x86 có lẽ cũng thiên về việc mở rộng các cơ chế hiện có thay vì cung cấp một sự phá vỡ rõ ràng hơn, điều đó có nghĩa là các tính năng mới bị ảnh hưởng nhiều hơn bởi các tính năng hiện có. Tần suất mở rộng cao hơn cũng khuyến khích nhiều thay đổi gia tăng, khuyến khích các cơ chế tái sử dụng, có xu hướng giảm tính trực giao.

So sánh một bản trình bày học thuật về MIPS cổ điển (là một tập hợp con của các phiên bản hiện đại của MIPS và loại trừ các phần mở rộng ISA tùy chọn khác nhau) với x86 hiện đại (theo dõi khả năng tương thích nhị phân trở lại với 1686 8086 và khả năng tương thích cấp độ lắp ráp thậm chí còn trở lại) với tất cả hành lý lịch sử của nó không trình bày trường hợp tốt nhất cho CISC cũng như trường hợp thực tế cho RISC.


-1

Đơn giản là trước khi có Cấu hình tập lệnh giảm, đã có Cấu hình tập lệnh. Họ có ứng dụng của họ. đặc biệt là trong việc chuyển khối bộ nhớ rất lớn với chipset dung lượng cao, chỉ cần 4-16 byte để chuyển toàn bộ trang video, thay vì một vòng lặp dài. điều đó đang thay đổi và RISC đang trở thành hiện trạng khi các bộ chip ngày càng tinh vi hơn, giống như GPU đáng kinh ngạc được tìm thấy trong các thẻ video cao cấp.


-2

Cpu CISC có nhiều lợi thế hơn RISC. Bởi vì CISC sử dụng ít thanh ghi phần cứng và cổng XNOR / XOR hơn RISC nhiều lần !!!! Hãy tưởng tượng các byte lệnh trong CISC sẽ được thực hiện theo trình tự, chỉ có một cổng logic và thanh ghi được sử dụng. Nếu các bóng bán dẫn 1 bgroup có thể tạo ra khoảng 300 triệu cổng logic, do đó bạn có thể xử lý 300 toán tử hoặc quy trình (IF, bằng nhau, toán học, biến, địa chỉ ... vv) và nhiều chương trình có thể chạy trong CISC. Nhưng trong RISC, phải mất hàng chục lần cổng logic để chạy một chương trình trong thiết kế đường ống. Vậy 300 triệu x 50 lần (50 hướng dẫn) + 15000000000 bit quầy !!! trong cái gọi là RISC. CISC sử dụng nhiều phần cứng hơn để giảm algothrim phần mềm làm chậm cpu.

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.