RISC (viết tắt của Reduced Instructions Set Computer - Máy tính với tập lệnh đơn giản hóa) là một phương pháp thiết kế các bộ vi xử lý (VXL) theo hướng đơn giản hóa tập lệnh, trong đó thời gian thực thi tất cả các lệnh đều như nhau. Hiện nay các bộ vi xử lý RISC phổ biến là ARM, SuperH, MIPS, SPARC, DEC Alpha, PA-RISC, PIC, và PowerPC của IBM.
Định hướng thiết kế RISC
[sửa | sửa mã nguồn]Ý tưởng bắt đầu khi người ta nhận thấy rất nhiều tính năng trong các bộ VXL vốn được thiết kế nhằm giúp công việc lập trình trở nên dễ dàng hơn lại thường bị các phần mềm bỏ sót. Những tính năng này thông thường cần vài chu kỳ máy để thực thi. Cộng thêm sự cách biệt về hiệu suất giữa các CPU và bộ nhớ chính đã dẫn đến nhiều kỹ thuật hoặc nhằm tổ chức lại quá trình thực thi trong bộ xử lý hoặc nhằm giảm bớt số lần truy xuất bộ nhớ.
Những năm cuối của thập niên 1970, các nhà nghiên cứu của IBM (và cả một số dự án khác) đã chứng minh rằng phần lớn các phương pháp đánh địa chỉ trực giao thường bị các chương trình bỏ qua. Đây chính là kết quả không mong đợi do sử dụng các trình biên dịch cấp cao thay vì sử dụng hợp ngữ. Các trình dịch tại thời điểm đó không đủ khả năng để tận dụng hết tính năng của các bộ VXL CISC; chủ yếu là do sự khó khăn trong thiết kế trình dịch. Trình biên dịch càng trở nên phổ biến thì các tính năng này lại càng bị bỏ quên.
Một nghiên cứu khác cũng chỉ ra rằng những tính năng này ít được dùng vì thực ra chúng được thực thi chậm hơn một nhóm lệnh cùng thực hiện tác vụ đó. Đây giống như một nghịch lý của quá trình thiết kế VXL, người thiết kế không có đủ thời gian để tối ưu cho tất cả các lệnh, do đó họ chỉ chú trọng đến những lệnh thường được sử dụng nhiều nhất. Ví dụ cụ thể nhất có lẽ là lệnh INDEX của CPU máy VAX, sẽ nhanh hơn từ 45% đến 60% nếu lệnh này được thay bằng một nhóm các lệnh VAX đơn giản khác.
Cũng trong thời gian này, CPU bắt đầu hoạt động nhanh hơn bộ nhớ. Thậm chí trong thập niên 1970, người ta cho rằng điều này sẽ còn tiếp tục không dưới 1 thập niên nữa, và tới lúc đó CPU sẽ nhanh hơn bộ nhớ hàng chục tới hàng trăm lần. Có lẽ đã đến lúc CPU cần thêm nhiều thanh ghi để có thể hoạt động ở tốc độ cao hơn. Những thanh ghi và bộ nhớ đệm mới sẽ cần khoảng trống trên bo mạch hoặc trên chip được tạo ra nếu giảm sự phức tạp của CPU.
Tới lúc này, một phần đóng góp cho kiến trúc RISC đến từ thực tế đo đạc những chương trình trong thế giới thực. Andrew Tanenbaum từ tổng kết rất nhiều đo đạc này đã chỉ ra rằng hầu hết những CPU lúc bấy giờ đều được thiết kế thừa quá mức. Ví dụ, ông cho rằng 98% các hằng hoàn toàn có thể biểu diễn bằng 13 bit, trong khi đó các CPU được thiết kế theo bội số của 8 thường là 8, 16 hoặc 32. Do đó nếu CPU cho phép các hằng được lưu trong những bit dư của mã lệnh sẽ làm giảm đi rất nhiều lần truy xuất bộ nhớ. Thay vì phải đọc từ bộ nhớ hay từ thanh ghi, các hằng đã ở ngay đó khi CPU cần, vì thế quá trình thực thi sẽ nhanh hơn. Tất nhiên điều lại này yêu cầu mã lệnh phải thật nhỏ để những lệnh 32 bit có thể chứa được những hằng tương đối lớn.
Những chương trình trong thực tế thường tốn phần lớn thời gian để thực hiện một số tác vụ đơn giản, do đó một số nhà nghiên cứu hướng tới việc tối ưu hóa những tác vụ này. Do xung nhịp (clock rate) của CPU bị giới hạn bởi thời gian thực hiện lệnh chậm nhất, nên nếu tối ưu lệnh này (có thể bằng cách giảm số phương pháp đánh địa chỉ mà nó hỗ trợ) sẽ khiến cho toàn bộ tập lệnh được thực thi nhanh hơn nhiều. Mục tiêu của RISC chính là đơn giản hóa các lệnh, để mỗi lệnh có thể được thực thi chỉ trong 1 chu kỳ máy. Việc tập trung đơn giản hóa các lệnh đã cho ra đời các loại "Máy tính với tập lệnh được đơn giản hóa" - RISC.
Rất tiếc cụm từ "Máy tính với tập lệnh được đơn giản hóa" thường bị hiểu sai là máy tính với tập lệnh ít hơn các máy tính khác. Thực ra RISC lại thường có tập lệnh rất lớn. Cũng từ khuynh hướng đơn giản hóa đó, một số thiết kế thú vị ra đời như MISC (Minimal Instruction Set Computer - Máy tính với tập lệnh tối thiểu) hay OISC (One Instruction Set Computer) với những máy tính như Transport Triggered Architectures, trong khi các thiết kế khác đi sâu vào vấn đề Turing tarpit.
Điểm khác biệt thực sự giữa RISC so với CISC là nguyên tắc thực hiện mọi thứ trong các thanh ghi, đọc và lưu dữ liệu vào các thanh ghi. Do đó để tránh hiểu lầm nhiều nhà nghiên cứu thích dùng thuật ngữ load-store.
Qua thời gian, các kỹ thuật thiết kế cũ được gọi là CISC (Complex Instruction Set Computer – Máy tính với tập lệnh phức tạp), dù rằng thuật ngữ này thường chỉ được dùng với mục đích so sánh.
Giờ đây để thực hiện cùng một công việc, chương trình được viết với những lệnh đơn giản thay vì với một lệnh phức tạp, tổng số các lệnh phải đọc từ bộ nhớ nhiều hơn do đó cũng mất nhiều thời gian hơn. Tại thời điểm đó người ta chưa biết khuyết điểm này có còn đảm bảo sự ưu việt hơn về hiệu suất của RISC hay không, và hầu như đó cũng đã là một cuộc chiến dai dẳng về khái niệm RISC.
Định hướng thiết kế trước thời RISC
[sửa | sửa mã nguồn]Những ngày đầu của ngành công nghiệp máy tính, trình biên dịch chưa xuất hiện. Công việc lập trình được thực hiện hoặc bằng ngôn ngữ máy (mã nhị phân) hoặc bằng hợp ngữ. Để việc lập trình đơn giản, các VXL được thêm những lệnh có thể biểu diễn trực tiếp những cấu trúc của ngôn ngữ lập trình cấp cao. Lúc đó thiết kế phần cứng dễ hơn nhiều so với thiết kế trình dịch, vì thế mọi phức tạp đều dồn vào phần cứng.
Một nguyên nhân khác thúc đẩy sự ra đời của những lệnh phức là sự thiếu thốn bộ nhớ. Do bộ nhớ quá nhỏ, do đó sẽ có lợi hơn nhiều nếu tăng mật độ tập trung thông tin trong mã lệnh. Khi mà mỗi byte bộ nhớ còn quá đắt, bộ nhớ chính của toàn bộ hệ thống ở thời kỳ này chỉ vài KB, ngành công nghiệp VXL bị thúc đẩy phải mã hóa thật cao mã lệnh, mã lệnh có thể có kích thước thay đổi, một lệnh có thể thực hiện nhiều phép toán hoặc một lệnh có thể vừa chuyển dữ liệu vừa xử lý dữ liệu. Lúc đó việc đưa ra một lệnh nén thật tốt được ưu tiên hơn là đưa ra một lệnh dễ giải mã.
Lúc này bộ nhớ được sản xuất bằng công nghệ từ do đó nó không những đã ít mà còn chậm. Đây cũng là một lý do để tăng mật độ thông tin trong một mã lệnh. Một mã lệnh với nhiều thông tin sẽ giảm được rất nhiều lần phải truy xuất nguồn bộ nhớ chậm chạp này.
Những CPU thời kỳ này chứa ít thanh ghi vì những lý do sau:
- Một bit trong CPU bao giờ cũng mắc hơn rất nhiều so với một bit ở bộ nhớ ngoài. Với công nghệ tích hợp ở thời kỳ này muốn có thêm thanh ghi bắt buộc phải có thêm vùng trống trên board hoặc trên chip.
- Một lượng lớn thanh ghi cũng sẽ cần một lượng lớn các bit trong mã lệnh để xác định các thanh ghi đó.
Vì những lý do trên, những nhà thiết kế VXL cố gắng để mỗi lệnh có thể thực hiện càng nhiều chức năng càng tốt. Điều này dẫn đến một lệnh sẽ làm tất cả công việc như nạp 2 số cần cộng, cộng chúng lại, và cuối cùng lưu trở lại vào bộ nhớ. Cũng lệnh đó lại có thể đọc một số từ thanh ghi và số còn lại từ bộ nhớ sau đó lưu kết quả vào bộ nhớ. Khuynh hướng thiết kế VXL này được gọi là Complex Instruction Set Computer – CISC.
Mục đích chung của thời kỳ này là mỗi lệnh hỗ trợ càng nhiều phương pháp đánh địa chỉ càng tốt, đây chính là lý thuyết trực giao. Điều này dẫn đến một số phức tạp cho CPU, mặc dù theo lý thuyết mỗi lệnh có thể được tối ưu riêng rẽ, làm quá trình thiết kế nhanh hơn nếu người lập trình sử dụng các lệnh đơn giản.
Sự tương phản rõ ràng nhất đến từ hai loại VXL: 6502 và VAX. Chip 6502 có giá $25 với 1 thanh ghi duy nhất, và bằng cách tối ưu giao tiếp bộ nhớ nó có thể hoạt động ở tốc độ cao hơn so với thiết kế ban đầu. VAX vốn là một máy tính nhỏ (minicomputer), nó cần tới một tá các thiết bị phụ và được đặc biệt chú ý bởi một lượng rất lớn các kiểu đánh địa chỉ mà nó hỗ trợ, cũng như lệnh nào của nó cũng đều hỗ trợ các kiểu đánh địa chỉ đó.
Cùng lúc đó...
[sửa | sửa mã nguồn]Trong khi những khái niệm về RISC đang dần được hoàn thiện thì những ý tưởng nhằm cải tiến hiệu suất cho các CPU cũng bắt đầu ra đời.
Những năm đầu thập niên 1980, người ta sợ rằng, về lý thuyết, công nghệ thiết kế VXL đã đạt đến giới hạn. Sự cải tiến chỉ còn có thể thực hiện với công nghệ bán dẫn, như giảm kích thước của các transistor hoặc dây nối trên chip. Dù độ phức tạp của chip không đổi nhưng với kích thước nhỏ hơn nó vẫn có thể hoạt động ở tốc độ cao hơn. Cũng có nhiều cố gắng để thiết kế các chip xử lý song song. Thay vì làm cho chip nhanh hơn người ta làm cho nhiều chip có khả năng cùng chia sẻ các tác vụ. Tuy nhiên lịch sử đã chứng minh rằng nhận định lúc đầu là sai lầm, rất nhiều ý tưởng ra đời cuối thập niên 1980 đã cải tiến một cách toàn diện hiệu suất của các VXL thời kỳ này.
Ý tưởng đầu tiên có lẽ là "kênh dẫn" (pipeline). Đây là một kỹ thuật nhằm chia nhỏ quá trình thực thi một lệnh thành nhiều bước, và các bước khác nhau của các lệnh khác nhau có thể được thực thi đồng thời. Một bộ xử lý thông thường đọc một lệnh, giải mã nó, đọc những vùng nhớ lệnh đó cần, thực thi lệnh, trả kết quả về. Với kỹ thuật "kênh dẫn", bộ xử lý có thể đọc một lệnh ngay sau khi nó đọc xong lệnh trước đó, tức là nó vừa giải mã một lệnh vừa đọc lệnh kế tiếp, tới chu kỳ tiếp theo bộ xử lý sẽ làm việc với ba lệnh cùng lúc, và cứ thế tiếp tục. Dù thực tế không có lệnh nào được thực thi nhanh hơn, nhưng do lệnh theo sau sẽ hoàn thành ngay sau khi lệnh trước hoàn tất nên đây là một giải pháp rất hiệu quả nhằm tận dụng tối đa tài nguyên của các VXL.
Một phương án khác là dùng nhiều đơn vị xử lý song song trong cùng một bộ xử lý. Thay vì thực thi một lệnh bộ xử lý sẽ tìm cách thực thi đồng thời lệnh kế tiếp trong một đơn vị xử lý khác. Tuy nhiên đây là một phương án khó vì nhiều lệnh đôi khi lại phụ thuộc vào kết quả của lệnh trước nó.
Cả hai phương pháp trên hướng tới việc cải tiến bằng cách tăng độ phức tạp của CPU. Vì không gian trên chip là có hạn do đó để thêm những tính năng mới này người ta cần bỏ đi những tính năng khác. Vì thế RISC là kẻ được hưởng lợi trước tiên do về cấu trúc nó đơn giản hơn CISC rất nhiều. Những thiết kế RISC đầu tiên nhanh chóng được thêm những tính năng mới giúp chúng vượt qua những chip CISC tương ứng. Lúc này người ta bắt đầu tính đến việc thêm những tính năng này vào những chip CISC trong khi vẫn đảm bảo kích thước của chúng, công việc này kéo dài suốt những năm cuối thập niên 1980 và đầu 1990.
Dù ở bất kỳ cấp độ nào, đơn vị logic của một chip RISC bao giờ cũng cần ít transistor hơn so với của một chip CISC. Điều này giúp người thiết kế có rất nhiều sự linh hoạt, ví dụ họ có thể:
1. Tăng số lượng thanh ghi. 2. Sử dụng các phương pháp tối ưu để tăng mức độ xử lý song song bên trong CPU (pipeline, superscalar) 3. Tăng kích thước cache 4. Thêm các tính năng như I/O, timer v.v... 5. Thêm các bộ xử lý vector. 6. Tận dụng các dây chuyền công nghệ cũ, trong khi với CISC điều này rất khó khăn do kích thước chip lớn hơn 7. Cung cấp những chip cho những ứng dụng có yêu cầu cao về thời gian sử dụng pin hoặc về kích thước chip.
Những đặc điểm thường thấy trong 1 chip RISC: 1. Định dạng chuẩn mã lệnh (ví dụ lệnh có chiều dài cố định, các bit của mã lệnh luôn nằm ở vị trí cố định trong mã lệnh) sẽ làm quá trình giải mã lệnh đơn giản hơn. 2. Các thanh ghi đồng nhất, do đó chúng có thể được sử dụng thay thế nhau trong mọi tình huống (tuy nhiên các thanh ghi dành cho số nguyên và số thực dấu chấm động vẫn phân biệt nhau). 3. Cách đánh địa chỉ đơn giản. Để có những phương pháp đánh địa chỉ phức tạp cần kết hợp với các phép toán số học. 4. Hỗ trợ rất ít kiểu dữ liệu (một số chip CISC có thể có cả các lệnh thao tác với chuỗi, xử lý số phức hoặc ma trận. Những lệnh như thế chẳng bao giờ tồn tại trong 1 chip RISC lý tưởng).
Ngày nay, một số kiến trúc RISC được xây dựng dựa kiến trúc Harvard (như dòng [SH-4] của Renesas), trong đó bus dữ liệu và bus chương trình tách rời nhau. Điều này giúp cho quá trình đọc dữ liệu và mã lệnh có thể xảy ra đồng thời do đó có khả năng nâng cao hiệu suất của VXL.
Một trong những điểm yếu của các VXL RISC thế hệ đầu tiên là hiệu ứng branch delay slot. Hiệu ứng này xảy ra khi có 1 lệnh nhảy có điều kiện, lúc đó dù có thực hiện nhảy hay không thì một hoặc một số lệnh theo sau vẫn được thực thi do các lệnh này đã được đưa vào pipeline trong lúc lệnh nhảy đang được xử lý. Điều này gây ra một khoảng thời gian trễ khi thực thi lệnh nhảy có điều kiện. branch delay slot không những xuất hiện trong những VXL RISC như MIPS, PA-RISC và SPARC mà còn cả trong các DSP như µPD77230 hoặc TMS320C3x. Tuy nhiên ngày nay trong các thiết kế RISC hiện đại người ta đã có thể loại bỏ được hiệu ứng này.
Những RISC đầu tiên
[sửa | sửa mã nguồn]VXL RISC được biết đến đầu tiên là siêu máy tính CDC 6600 được Jim Thornton và Seymour Cray thiết kế năm 1964, nó có 74 mã lệnh (8086 có 400 mã lệnh) cộng với 12 máy tính đơn giản được gọi là "bộ xử lý ngoại vi" để xử lý I/O. CDC 6600 sử dụng kiến trúc load-store, nó hỗ trợ 2 phương pháp đánh địa chỉ, có 11 đơn vị được "kênh dẫn hóa", năm đơn vị đọc dữ liệu và 2 đơn vị để lưu dữ liệu (bộ nhớ của nó được tổ chức theo bank do đó các đơn vị đọc ghi có thể hoạt động đồng thời). Tốc độ xung đồng hồ/lệnh nhanh hơn 10 lần so với tốc độ truy xuất bộ nhớ.
Một máy tính khác được thiết kế trên với kiến trúc load-store là Data General Nova. Đây là một máy tính nhỏ 16 bit được thiết kế năm 1968 bởi 1 công ty Mỹ tên là Data General.
Tuy nhiên VXL RISC được biết nhiều nhất lai đến từ một dự án được tài trợ bởi chương trình VLSI (Very Large-Scale Integration) của DARPA (Defense Advanced Research Projects Agency). Chương trình trên đã cho ra đời rất nhiều cải tiến liên quan đến thiết kế, sản xuất chip và cả đồ họa máy tính.
Dự án RISC của Đại học Caifornia, Berkeley bắt đầu năm 1980 dưới sự hướng dẫn của David Patterson với mục đích nâng cao hiệu suất của các VXL dựa trên kỹ thuật pipeline và register windows. Một VXL thông thường có khá ít thanh ghi, các chương trình có thể tùy ý sử dụng các thanh ghi đó bất cứ lúc nào. Còn đối với các VXL sử dụng kỹ thuật register windows, có rất nhiều thanh ghi trong VXL nhưng chương trình chỉ sử dụng cùng lúc một tập hợp nhỏ các thanh ghi. Vì thông thường mỗi lần gọi 1 chương trình con, VXL cần lưu lại giá trị một số thanh ghi và sau đó hồi phục lại các thanh ghi đó khi thực hiện lệnh return. Vì vậy bằng cách chuyển từ tập thanh ghi này sang tập thanh ghi khác (chuyển cửa sổ) chương trình có thể thực hiện các lệnh gọi hàm hoặc lệnh trả về một cách nhanh chóng.
Dự án RISC cho ra đời VXL RISC-I năm 1982. VXL này chứa 44.420 transistor (so với 100.000 transistor cho 1 VXL CISC), với 32 lệnh nhưng hoàn toàn vượt xa các VXL đơn chip cùng thời. VXL RISC-II ra đời năm 1983 với 39 lệnh, chứa 40.760 transistor và nhanh gấp 3 lần RISC-I.
Cũng khoảng thời gian đó John L. Hennessy thực hiện dự án MIPS ở Đại học Stanford năm 1981. MIPS hầu như chỉ tập trung vào kỹ thuật pipeline nhằm tận dụng tối đa khả năng của các VXL. Cho dù đã được sử dụng trước đó, nhưng với MIPS, kỹ thuật này đã thực sự được cải tiến vượt bậc. Nhưng vấn đề quan trọng nhất ở đây, và có lẽ cũng phiền toái nhất, là nó đòi hỏi tất cả các lệnh bắt buộc phải được thực thi trong 1 chu kỳ máy. Nếu đáp ứng được yêu cầu này, pipeline có thể hoạt động ở tốc độ rất cao và đây hầu như là yếu tố quyết định đến tốc độ của VXL. Tuy nhiên nó cũng có mặt trái là phải bỏ đi rất nhiều lệnh có ích như nhân, chia.
Hầu hết các dự án kể trên đều nhằm mục đích cải tiến các kỹ thuật hiện có, phải chờ tới năm 1975, dự án đầu tiên nhằm cho ra đời 1 chip RISC hoàn chỉnh mới được thực hiện ở IBM. Được đặt tên theo số của ngôi nhà nơi dự án được thực hiện, dự án này đã cho ra đời họ VXL IBM 801 vốn được sử dụng rộng rãi trong các phần cứng của IBM.
Trong những năm đầu, các dự án chủ yếu chỉ được biết đến trong các trường đại học. Đến năm 1986, tất cả các dự án về RISC bắt đầu cho ra đời sản phẩm. Ngày nay hầu hết các chip RISC, đều được thiết kế dựa trên kiến trúc RISC-II của Berkeley.
Những RISC hiện đại
[sửa | sửa mã nguồn]Berkeley không thương mại hóa dự án của mình, tuy nhiên hầu hết các công ty sau này đều sử dụng kiến trúc RISC – II như Sun Microsystems với SPARC, hoặc Pyramid Technology. Chính Sun là công ty đầu tiên chứng minh sức mạnh của RISC là có thật trong những hệ thống mới của mình, và cũng nhờ đó họ nhanh chóng chiếm lĩnh thị trường workstation lúc bấy giờ.
John Hennessy tạm thời rời Standford để thành lập MIPS Computer Systems nhằm thương mại hóa dự án MIPS. Thiết kế đầu tiên của họ là chip R2000, đây là thế hệ tiếp theo của chip MIPS. MIPS nhanh chóng trở thành chip phổ biến nhất khi nó được sử dụng trong PlayStation và Nintendo 64 game consoles. Ngày nay chúng là một trong những chip được sử dụng phổ biến trong các ứng dụng nhúng high-end.
Rút kinh nghiệm từ thất bại của RT-PC, IBM thiết kế RS/6000 dựa trên kiến trúc POWER mới. Họ chuyển họ chip AS/400 thành các chip có kiến trúc POWER, và nhận thấy ngay cả 1 lệnh phức tạp nhất cũng được thực thi nhanh hơn một cách đáng kể. Kết quả đó là sự ra đời của họ iSeries. Kiến trúc POWER cũng được sử dụng trong các chip PowerPC nhưng ở cấp độ thấp hơn. Ngày nay PowerPC là một trong những họ VXL được sử dụng phổ biến trong xe hơi (một số xe có thể sử dụng trên 10 chip loại này). Đây cũng là họ VXL được sử dụng trong máy tính Apple Macintosh cho tới năm 2006 (từ 2-2006 Apple chuyển qua sử dụng VXL của Intel).
Những nghiên cứu ở Anh cũng cho ra đời các dòng VXL như INMOS Transputer, Acorn Archimedes và Advanced RISC Machine. Những công ty vốn sản xuất CISC trước đây cũng nhanh chóng tham gia. Intel với i860 và i960 vào cuối những năm 1980, nhưng không đạt được thành công như mong muốn. Motorola với chip 88000 nhưng cũng không thành công và họ nhanh chóng từ bỏ để hợp tác cùng IBM sản xuất PowerPC. AMD cho ra đời VXL 29000, và trở thành VXL phổ biến nhất những năm đầu thập kỷ 90.
Ngày nay CPU RISC (và microcontrollers) chiếm 1 lượng lớn CPU được sử dụng. Kỹ thuật thiết kế RISC đem đến sức mạnh ngay cả ở những kích thước nhỏ, do đó nó nhanh chóng chiếm lĩnh hoàn toàn thị trường CPU nhúng công suất thấp. Đây là một thị trường cực kỳ lớn của CPU, có thể tìm thấy chúng trong xe hơi, điện thoại di động, thậm chí một số thiết bị khác có thể chứa hàng tá CPU loại này. RISC cũng chiếm lĩnh thị trường workstation trong hầu hết những năm 90. Sau khi Sun cho ra đời SPARCstation, các hãng khác cũng vội vã hoàn thành các hệ thống dựa trên RISC của mình. Thậm chí ngày nay thế giới của các mainframe cũng hoàn toàn dựa trên RISC.
Dù vậy thị trường PC và server lại không phải là nơi dành cho RISC, đây là nơi họ x86 của Intel chiếm ưu thế tuyệt đối (đối thủ chính của Intel là AMD, nhưng chip của AMD lại cũng được xây dựng dựa trên nền x86). Có 3 nguyên nhân chính như sau. Thứ nhất, nền tảng rất lớn của các ứng dụng của PC đều được viết cho x86, trong khi đó chưa hề nền tảng tương tự cho RISC, điều đó đồng nghĩa với việc người dùng chỉ có 1 lựa chọn là x86. Thứ hai, cho dù kiến trúc RISC có thể mở rộng nhanh và rẻ, nhưng Intel, với thị trường khổng lồ của mình, lại có thể đầu tư hàng đống tiền vào công nghệ phát triển chip. Intel cũng đã bỏ thời gian để cải tiến các quá trình thiết kế, sản xuất như bất kỳ các nhà sản xuất VXL RISC khác. Thứ ba, những người thiết kế x86 nhận ra rằng họ hoàn toàn có thể vận dụng RISC trong các VXL của mình. Ví dụ lõi P6 của bộ xử lý PentiumPro, và những VXL kế tiếp, có những đơn vị đặc biệt nhằm bẻ hầu hết các lệnh CISC thành nhiều quá trình RISC. Như vậy bản thân các bộ xử lý sử dụng lõi P6 là các CPU RISC mô phỏng kiến trúc CISC.
Người dùng thật ra chỉ quan tâm đến tốc độ, giá cả, và tính tương thích với các phần mềm có sẵn hơn là chi phí để phát triển những chip mới. Cùng với sự phức tạp của CPU tăng lên, chi phí thiết kế và sản xuất cũng tăng lên nhanh chóng. Lợi nhuận thu được từ RISC trở nên quá nhỏ bé so với chi phí đầu tư để phát triển các CPU mới, do đó ngày nay chỉ có những nhà sản xuất lớn mới có đủ khả năng phát triển những CPU mạnh. Kết quả là hầu hết những nền tảng RISC (ngoại trừ IBM POWER/PowerPC) đều thu hẹp quy mô (SPARC và MIPS) hoặc thậm chí từ bỏ (Alpha và PA-RISC) phát triển các CPU mạnh. Năm 2004 CPU nhanh nhất trong các tác vụ với số nguyên là x86 (benchmark với SPECint), và với số thực dấu chấm động là IBM Power 5 (benchmark với SPECfp).
Các hệ thống và các RISC phổ biến:
- Họ MIPS, trong các máy tính SGI, PlayStation và Nintendo 64 game consoles
- Họ POWER trong các SuperComputers/mainframes của IBM
- Freescale (trước đây là Motorola SPS) và IBM's PowerPC trong Nintendo Gamecube, Microsoft Xbox 360, Nintendo Wii and Sony PlayStation 3 game consoles, và cho tới gần đây là Apple Macintosh
- SPARC và UltraSPARC, trong tất cả các hệ thống của Sun
- Hewlett-Packard PA-RISC
- DEC Alpha
- ARM — Palm, Inc. Ban đầu sử dụng (CISC) Motorola 680x0 trong những PDA đầu tiên, nhưng hiện tại là (RISC) ARM; Nintendo sử dụng 1 chip ARM7 trong Game Boy Advance và Nintendo DS. Nhiều nhà sản xuất điện thoại di động, như Nokia cũng dựa trên kiến trúc của ARM.
Thuật ngữ thay thế
[sửa | sửa mã nguồn]Trải qua một thời gian dài, tập lệnh của các RISC ngày càng tăng. Vì thế nhiều người bắt đầu sử dụng thuật ngữ "load-store" để mô tả RISC CPU, vì đây là mấu chốt của kiến trúc RISC. Thay vì CPU xử lý rất nhiều phương pháp đánh địa chỉ, kiến trúc load-store sử dụng những đơn vị chuyên biệt để thực hiện những dạng rất đơn giản của các quá trình load và store. CISC CPU vì thế được gọi là "register-memory" hoặc "memory-memory".