PDA

View Full Version : Kiến trúc RISC và CISC


falleaf
17-06-2006, 05:46 AM
http://en.wikipedia.org/wiki/RISC

http://en.wikipedia.org/wiki/CISC

Hai bài viết quan trọng mà anh em ta nên dịch ra, không biết các bạn có thể dành thời gian để dịch hai bài viết này ra tiếng Việt không?

Mọi người mỗi người một tay nhé

http://en.wikipedia.org/wiki/ZISC
Còn nữa đây
http://www.lsmarketing.com/LSMFiles/9809-ai1.htm

Hai bài này là phụ cho hai bài trên, nhưng cũng rất cần.

Chúc vui

bien_van_khat
17-06-2006, 09:45 PM
hê hê, em xí trước chương đầu của RISC.

Khỏi cảm ơn anh F à, cũng học từ anh thôi mà :D

falleaf
17-06-2006, 10:57 PM
Oki, cám ơn bạn rất nhiều, bạn dịch xong post lên cho mọi người nhé, cứ có vài người mở đầu phong trào là anh em mỗi người một tay một chân làm thôi.

Cái này thực sự rất cần cho mọi ngừơi, không chỉ riêng PIC, mà là căn bản của tất cả vi xử lý, vi điều khiển nói chung.

Chúc thành công.

bien_van_khat
17-06-2006, 11:13 PM
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ế 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 vi xử lý RISC phổ biến là PIC, ARM, DEC Alpha, PA-RISC, SPARC, MIPS, và PowerPC của IBM.

Ý tưởng bắt đầu khi người ta nhận thấy rất nhiều tính năng trong các 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 hiện. 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 hướng thiết kế RISC

Những năm cuối của thập kỷ 70, những nhà nghiên cứu của IBM (và cả một số dự án khác) nhận thấy rằng các phương pháp đánh địa chỉ trực giao thường bị các phần mềm 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 những lệnh phức của các 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ì những lệnh này càng bị bỏ quên.

Mặt khác những lệnh phức này ít được dùng vì thực ra chúng được thực thi chậm hơn một nhóm vi lệnh cùng thực hiện chức năng đó. Đây giống như 1 nghịch lý của quá trình thiết kế VXL, vì 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à tất nhiên những lệnh phức là những lệnh ít được sử dụng nhất. Ví dụ cụ thể nhất có lẽ là lệnh INDEX của VAX, sẽ nhanh hơn từ 45% đến 60% nếu lệnh này được thay bởi 1 nhóm các lệnh VAX đơn giản khác (http://www.sasktelwebsite.net/jbayko/cpuAppendA.html)

Cũng trong thời gian này, CPU bắt đầu hoạt động nhanh hơn bộ nhớ. Thậm chí trong những năm 70, người ta cho rằng điều này sẽ còn tiếp tục không dưới 1 thập kỷ nữa, đến lúc đó CPU sẽ nhanh hơn bộ nhớ hàng chục tới hàng trăm lần. Dường như đã đến lúc CPU cần thêm nhiều thanh ghi (sau này gọi là caches) để có thể hoạt động ở tốc độ cao hơn. Những thanh ghi và bộ nhớ đệm mới sẽ cần những khoảng trống trên board hoặc trên chip được tạo ra khi giảm sự phức tạp của CPU.

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 số 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ẽ bớt đi rất nhiều lần phải 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 này lại 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 dành 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 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. Mục tiêu của RISC 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 giảm thiểu - RISC” .

Rất tiếc cụm từ “Máy tính với tập lệnh được giảm thiểu” 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ư Minimal Instruction Set Computer (MISC) hay One Instruction Set Computer (OISC) 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ấ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à Complex Instruction Set Computer –CISC. 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 1 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ư đó đã là 1 cuộc chiến dai dẳng về khái niệm RISC.

Định hướng thiết kế trước thời RISC

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, 1 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à 1 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.

http://i32.photobucket.com/albums/d28/picvietnam/bonho.jpg

Những CPU thời kỳ này chứa ít thanh ghi vì những lý do sau:
1. Một bit trong CPU bao giờ cũng mắc hơn rất nhiều so với 1 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.
2. Một lượng lớn thanh ghi cũng sẽ cần 1 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 1 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ừ 2 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à 1 máy tính nhỏ, nó cần tới 1 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 đó...

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 kỷ 80, 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 transistor hoặc của 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 xẻ 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 kỷ 80 đã 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 1 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ã 1 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 3 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 1 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à 1 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ả 2 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 vuợ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 kỷ 80 và đầu 90.

Dù ở bất kỳ cấp độ nào, đơn vị logic của 1 chip RISC bao giờ cũng cần ít transistor hơn so với của 1 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. implement measures to increase internal parallelism
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. build the chips on older fabrication lines, which would otherwise go unused
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).

VXL RISC được xây dựng dựa kiến trúc Harvard, 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...


VXL RISC đựoc 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ị đuợ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

Berkerley 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à 1 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 ko 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 tong 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ế

Trải qua 1 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".

falleaf
17-06-2006, 11:41 PM
http://vi.wikipedia.org/wiki/Vi_%C4%91i%E1%BB%81u_khi%E1%BB%83n_PIC

F đang viết tiếp bài ở đây, mọi người cùng tham gia chiến dịch này nhé

falleaf
18-06-2006, 12:53 AM
http://vi.wikipedia.org/wiki/RISC

Đây, mọi người xem ở đây nhé, cực hay nhé...

Bien_van_khat có thể viết bài trực tiếp lên wiki hoặc là có thể viết ở picvietnam, chúng ta sẽ tổng hợp, sửa chữa ở picvietnam, sau đó sẽ post bản chính thức lên đó.

Đây là bước dạo đầu, để cổ vũ phong trào, nên F post lên cho mọi người cùng xem.

Mong rằng mọi người mỗi người một tay, như thành viên của picvietnam, mỗi ngừoi dịch 1 dòng thôi, thì chúng ta đã có thể phát triển kho tài liệu lớn mạnh rồi.

Mọi người cùng góp tay vào nhé. Ý tưởng dịch tài liệu VDC có nói với F hôm trước, nhưng vì VDC không biết kêu gọi thế nào, vậy thì F phát động phong trào này, để chúng ta mỗi người một việc, cùng làm, cùng phát triển.

Hy vọng nhóm mod đã làm ra được bộ thư viện Microchip PIC và dsPIC, thì bây giờ các thành viên của picvietnam, sẽ làm việc với tinh thần picvietnam, cùng chia sẻ với mọi người.

Chúc vui

falleaf
18-06-2006, 07:39 PM
Kiến trúc Harvard
Bách khoa toàn thư mở Wikipedia
Bước tới: menu, tìm kiếm

Cụm từ kiến trúc Harvard dùng để chỉ những kiến trúc máy tính mà trong đó phân biệt rõ ràng bộ nhớ dữ liệu và bộ nhớ chương trình, chúng có những đường truyền (bus) riêng để truy cập vào bộ nhớ dữ liệu và bộ nhớ chương trình (ngược lại, kiến trúc von Neumann có bộ nhớ và bộ nhớ chương trình chung). Kiến trúc Harvard được xây dựng bởi Harvard Mark I, nó cho phép các lệnh được đặt trong các tape 24-bit và dữ liệu thì được chứa trong các thẻ 23 kỹ tự. Những máy tính đầu tiên này rất giới hạn dung lượng dữ liệu, nó chứa trong đơn vị xử lý dữ liệu, và không cho phép truy cập vào khu vực chứa lệnh (chương trình) như với dữ liệu (việc tạo, load, sửa chữa, v/v. toàn bộ chương trình phải được thực hiện offline).

Trong một máy tính sử dụng kiến trúc von Neumann, CPU có thể đọc một lệnh, hoặc đọc/ghi dữ liệu từ bộ nhớ. Tuy vậy, cả hai quá trình tương tác với lệnh hoặc với dữ liệu, không thể thực hiện cùng lúc, vì nó sử dụng chung một đường truyền và bộ nhớ. Trong một máy tính kiến trúc Harvard, CPU có thể vừa đọc một lệnh, vừa truy cập dữ liệu từ bộ nhớ cùng lúc. Một máy tính kiến trúc Harvard có thể chạy nhanh hơn, bởi vì nó có thể thực hiện ngay lệnh tiếp theo khi vừa kết thúc lệnh trước đó. Tốc độ được tăng lên nhưng phải trả giá bằng sự thiết kế phần cứng phức tạp hơn (cụ thể nhất mà chúng ta thấy, đó là việc phải thiết kế 2 bus khác nhau cho dữ liệu và chương trình).

Những năm gần đây, tốc độ CPU tăng lên rất nhiều lần so với tốc độ truy cập vào bộ nhớ chính. Người ta cần quan tâm đến việc giảm số lần truy cập vào bộ nhớ để đảm bảo tốc độ hoạt động của CPU. Nếu, trong cùng một lúc, mỗi lệnh của CPU cần phải truy cập vào bộ nhớ 1 lần, vậy thì việc tăng tốc độ CPU chẳng còn ý nghĩa gì nữa, bởi vì nó luôn luôn bị giới hạn bởi việc truy cập vào bộ nhớ.

Bộ nhớ có thể được thiết kế để có tốc độ truy cập cao, nhưng nó đồng nghĩa với việc giá sản xuất sẽ cao. Giải pháp là cung cấp một dung lượng nhỏ bộ nhớ đệm, với tốc độ truy cập rất cao, và chúng ta gọi đó là cache (bộ nhớ đệm). Khi bộ nhớ CPU cần tương tác đang nằm trong cache, vì việc tương tác vào đó tốn ít thời gian hơn rất nhiều lần so với khi cache phải thay đổi và lấy dữ liệu từ bộ nhớ chính đưa vào. Việc điều chỉnh cache là một vấn đề quan trọng trong việc thiết kế máy tính.

Những thiết kế chip CPU tốc độ cao ngày này thường kết hợp hai kiến trúc Harvard và von Neumann. Bộ nhớ cache trên chip được phân thành cache chương trình và cache dữ liệu. Kiến trúc Harvard được dùng khi CPU truy cập vào cache. Tuy nhiên, trong trường hợp không có cache, dữ liệu được lấy từ bộ nhớ chính, mà bộ nhớ chính không được chia thành vùng nhớ chương trình và vùng nhớ dữ liệu. Như vậy, kiến trúc von Neumann được dùng ở tầm vực truy cập bộ nhớ chính.

Kiến trúc Harvard cũng thường được dùng trong một số DSP chuyên dụng, thường dùng trong các sản phẩm xử lý âm thanh, hình ảnh. Ví dụ như vi xử lý Blackfin của Analog Devices Inc. dùng kiến trúc Harvard.

Thêm vào đó, hầu hết các vi điều khiển thông dụng được dùng trong các ứng dụng điện tử như là PIC được sản xuất bởi Microchip Technology Inc và AVR của hãng Atmel Corporation, được phát triển dựa trên kiến trúc Harvard. Những vi xử lý này có đặc tính là có lượng bộ nhớ dữ liệu và bộ nhớ chương trình nhỏ, rất phù hợp với kiến trúc Harvard và tập lệnh RISC để đảm bảo hầu hết các lệnh được thực hiện trong 1 chu kỳ máy. Việc phân chia bộ nhớ ra thành bộ nhớ chương trình và bộ nhớ dữ liệu có thể làm cho bus dữ liệu và bus chương trình có kích thước băng truyền khác nhau. Ví dụ như các vi điều khiển PIC có bus dữ liệu 8-bit (phụ thuộc vào dòng PIC), nhưng bus chương trình có thể là 12-bit, 14-bit hoặc 16-bit word. Điều này cho phép mỗi một lệnh đơn có đủ chỗ chứa cho một giá trị hằng. Những CPU RISC khác, ví dụ như ARM, thường cần ít nhất 2 lệnh để load một hằng số đủ kích thước.


[sửa]

Liên kết ngoài

* Cộng đồng vi điều khiển PIC Việt Nam
* Cộng đồng Điện tử Việt Nam

http://vi.wikipedia.org/wiki/Ki%E1%BA%BFn_tr%C3%BAc_Harvard
Bài F vừa viết lên đó.

bien_van_khat
19-06-2006, 12:28 AM
Có lẽ bây giờ nên làm trên wiki thì hơn, có bài nào thì anh F post link tới đó thôi.

Trên diễn đàn bài viết ko được vượt quá 1K ký tự, nên...pó tay.

falleaf
19-06-2006, 10:13 AM
Anh sẽ sửa để tăng lên 50K, vô tư đi, chuyện đó đơn giản lắm.

Hôm bữa anh lên coi, thì thấy nó bảo là mình dịch tài liệu, nó không cho mình nếu mình dịch không hoàn toàn, phải dịch hoàn toàn hết, em lên coi bài viết đó, anh phải bổ sung ngay cái phần của em vào, và viết cái thảo luận để tụi nó không để cái dòng sẽ xoá sau 1 tháng nữa. Bọn này cũng láo quá, làm vậy thì những người muốn đóng góp họ làm thế nào? Nhưng thôi kệ, có lẽ đó là nguyên tắc làm việc của tụi nó.

Tối nay anh sẽ sửa lại số lượng ký tự được phép viết trong bài, mình cứ làm trên này, nếu lỡ mà nó có vấn đề trên wiki, thì mình hoàn toàn chủ động sửa chữa, dù sao nó cũng là kiến thức của picvietnam.

Chúc vui

bien_van_khat
26-06-2006, 08:03 PM
ái a, mấy ngày nay về nhà thăm vợ con, nhìn lại cái thread này thấy sao hẻo quá. Hix mọi người chỉ lo PIC, AVR ko ai thèm xem RISC hay CISC ra thế nào nữa thì phải.

falleaf
26-06-2006, 09:02 PM
Cứ tiếp tục kiên trì!

Cái chúng ta cần là một phong trào mỗi người dịch một ít, nếu chúng ta đủ kiên trì, chúng ta mới có đủ sức để kêu gọi người khác.

Cái đó F gọi là "nhân ngã"

Chúc vui

chuchinh
05-07-2006, 10:34 AM
Bác bien_van_khat đâu rồi, bác viết tiếp đi. Do mọi người chưa hiểu nhiều về RISC và CISC nên chưa kịp hỏi gì cả.
Em cũng đang đọc, để hiểu sơ qua đã rồi hỏi bác cho kỹ hơn.

bien_van_khat
08-07-2006, 12:03 AM
Về cơ bản bài RISC là xong, mọi người góp ý để hoàn thiện nhé.

vanchinhdt8x
10-06-2010, 08:55 PM
các bác ơi có ai biết sự giống và khác nhau giữa kiến trúc cisc và risc ko giúp em với
em mới học cái này mà chẳng biết gì cả

vanhung.dhcn.90
10-01-2012, 02:53 AM
ai co tai lieu ve may tinh tap lenh rut gon CISC cho em voi .em xin cam on