1. 計算機學科的課程體繫
一個學科的高等教育必須要有先進的教學理念和完整的課程體繫,同時與該學科的發展也緊密相關。談到計算機科學與技術學科的高等教育,就要提到兩個國際組織,一是IEEE,二是ACM。IEEE (Institute of Electrical and Electronics Engineers,電氣與電子工程師協會)是一個國際性的電子技術與信息科學工程師協會,主要致力於電氣、電子、計算機工程以及與信息技術和科學有關的領域的開發和研究。ACM(Association for Computing Machinery,美國計算機協會)是一個致力於工程技術和應用領域中信息技術科學教育的國際計算機組織。國際上最繫統、最有影響的計算機專業的教學計劃當屬IEEECS(IEEE屬下的計算機學會)與ACM各時期發表的指導性計劃,它們對計算機學科教育方面的研究既全面又深入。其中,影響較大的有ACM68課程體繫、ACM78課程體繫、IEEECS83教程和計算機教程1991(簡稱CC1991)等。ACM68課程體繫和ACM78課程體繫是基於課程定義的。CC1991是IEEECS和ACM合作推出的,它將更多的科學原理引入計算機學科的教學計劃設計中,給出了計算機學科的科學定義,解答了計算機學科教育界多年來存在的疑問和爭論,同時它采用知識領域(knowledge area)、(knowledge unit)和知識點(topic)來描述計算機學科的核心知識體繫,引導人們去考慮學科的本質和核心,從而制定出既符合各自培養目標又符合學科發展的課程體繫。
1998年秋,IEEECS和ACM又成立了計算機教程2001(Computing Curricula 2001,CC2001)聯合工作組,並於2001年發布了計算機教程2001(即CC2001)。CC2001較好地反映了計算機學科自1991年以來的發展及這個時期社會發展給學科教育帶來的影響。它除了繼承CC1991的知識描述體繫外,又增加了各級課程的設計方法,並給出了一些推薦課程的描述。
從我國計算機學科的教育看,1999年前,我國“計算機專業”主要被分為計算機及應用和計算機軟件兩個專業。從1999年起,按照寬口徑培養人纔的需要,這兩個專業被合並為一個專業,即計算機科學與技術。我國各高校計算機科學與技術專業的教學計劃是在中國計算機學會教育專業委員會和全國高等學校計算機教育研究會的指導下制定的。CC2001推出後,中國計算機學會教育專業委員會和全國高等學校計算機教育研究會給予了密切的關注,在對CC2001進行跟蹤研究的基礎上,結合我國計算機學科的發展現狀和我國計算機教育的具體情況,提出了一個適合我國計算機學科教育的課程體繫,即中國計算機科學與技術學科教程CCC2002。
近些年,隨著計算機技術的高速發展和在各行業應用的普及,社會對計算機學科領域人纔的需求分工越來越細,計算機學科的高等教育也發生了變化,各高校在計算機學科先後設置了軟件工程、網絡工程、電子商務、信息安全、人工智能、大數據等不同的專業或方向,以滿足社會對不同專業人纔的需求。從 2001 年開始,IEEECS和ACM 把計算機學科細分為“計算機科學CS”“計算機工程CE”“信息繫統IS”“信息工程IT”以及“軟件工程SE”。IEEECS聯合ACM於2005年發布了CC2005,2008年發布了CS2008版本(臨時版本),2012 年2月開始頒布CS2013。2020年12月,ACM和IEEECS聯合全球20個國家的50位資深專家(包括5位中國專家)共同制定了計算機類專業課程體繫規範CC2020。CC2020采用勝任力模型,融合知識、技能、品行三個方面的綜合能力培養。
我國 高等學校計算機科學與技術教學指導委員會在分析研究計算機學科國內外發展和社會需求的基礎上,發布了《計算機科學與技術專業發展戰略研究報告》,提出了適應我國計算機科學與技術專業高等教育的教學規範。這一教學規範對於我國各高校在計算機科學與技術專業人纔培養目標的確定和課程體繫的制定等方面都給出了指導性建議。
2. 為什麼要學習本課程
對於學習汽車工程專業的學生來講,無論是搞汽車外形設計,還是研究汽車的發動機,都必須對汽車的組成和工作原理有基本的了解。同樣,對於計算機專業的學生來講,了解和掌握計算機的組成及工作原理也是必需的。
目前很多高校計算機專業的學生在不同程度上有著重軟輕硬的思想。這主要有兩個方面的原因: 一方面,近10年來,隨著各行業管理信息繫統建設的發展,社會對軟件工程師(尤其是應用軟件工程師)的需求越來越大,從事軟件設計、軟件編程、軟件維護等方面的人員成為了IT公司、金融、政府及企事業單位緊缺的人纔; 另一方面,相對軟件課程來講,硬件課程學起來比較枯燥,沒有像語言類軟件課程有著學完就能使用的立竿見影的效果。例如,很多高校都開設了“Web程序設計”課程,學生學完該課程後,就能設計網站或制作網頁,學生當然很感興趣。
實際上,在計算機繫統中,計算機硬件和計算機軟件是相關聯的兩個部分,硬件為軟件的運行提供了一個平臺。要編制高質量的軟件程序,對計算機有一個整體的了解是十分必要的。對繫統軟件程序員來講,繫統軟件是和硬件緊密相關的。繫統軟件程序員必須對機器級硬件十分了解,纔有可能編制出適應某一機器硬件的繫統軟件。對應用軟件程序員來講,對機器硬件的了解有助於他們編制更高效和優化的程序。例如,近些年出現的基於多處理器的計算機繫統,為並行計算提供了一個支持的平臺。對程序員來講,對計算機硬件實現的並行處理技術的了解,有助於他們充分利用並行計算環境,編制高效的並行程序。
最重要的是,前面已經講到,計算機學科的教育有一個完整的科學體繫,課程的設置也是圍繞這一體繫來進行的。這一科學體繫注重培養學生的科學思維能力、創新實踐能力、研究和應用能力以及繼續學習的能力。作為學生來講,應該認真學好每一門課程,掌握計算機學科領域所要求的各方面知識。隻有這樣,纔能對本學科有一個完整的理解,纔能成為真正合格的計算機科學與技術專業的學生。
計算機組織與結構是計算機專業一門重要的專業基礎課程,也是CC2001、CC2005、CS2013、CC2020以及我國計算機科學與技術專業規範中確定的一門核心課程。它對於學生建立計算機整機概念,了解計算機繫統的基本組成、結構和工作原理,從而更深刻地理解本學科其他知識領域和的內容有著非常重要的意義。
3. 本書內容的組織
本書在內容的組織上主要按照我國 高等學校計算機科學與技術教學指導委員會發布的《高等學校計算機科學與技術專業發展戰略研究報告暨專業規範》中的知識領域“CSAR計算機體繫結構與組織”所要求的內容進行編寫,同時緊跟IEEECS/ACM頒布的CS2020,對計算機體繫結構和組織(AR)知識模塊的內容做了適當調整。各章節涵蓋的主要包括
AR2數據的機器級表示(核心學時): 第2章
AR3彙編級機器組織(核心學時): 第3章
AR4存儲繫統(核心學時): 第4章
AR5接口和通信(核心學時): 第5章、第6章
AR6功能組織(核心學時): 第7章
AR7多處理和體繫結構(核心學時): 第8章
本書共8章。
第1章首先介紹計算機的發展歷程; 然後介紹按IEEE分類法的計算機分類; 最後,作為本書的一個“序”,概括性地介紹計算機的硬件組成及計算機的層次結構。
第2章首先介紹二進制等基本的進位記數制; 其次介紹在計算機中是如何對我們日常處理的數值數據和非數值數據(主要包括字符、漢字等)進行二進制編碼表示的; 再次介紹數值數據在計算機中的二進制運算方法和實現; 最後介紹對計算機中的數據在傳遞過程中產生的差錯進行檢測時使用的數據校驗碼。
第3章首先介紹計算機中彙編級指令的格式、地址結構; 然後介紹指令和操作數的尋址方式、指令的種類和功能及典型指令繫統的組成等; 最後對RISC進行介紹。
第4章首先介紹存儲器的組織、分類和分層結構; 然後介紹計算機主存儲器的組成與工作原理; 最後介紹提高存儲繫統性能的交叉存儲技術、高速緩衝存儲器及虛擬存儲器技術等。
第5章首先介紹計算機輸入輸出繫統的組成; 然後對計算機輸入輸出的控制方式進行詳細討論,包括程序控制方式、中斷控制方式、DMA控制方式和通道控制方式等; 最後介紹計算機存儲設備—磁盤繫統以及由磁盤陣列組成的RAID技術。
第6章首先講述計算機內部各部件之間的總線互連結構,介紹總線的基本概念、互連結構和控制方式等; 然後列舉幾種現代計算機中常用的ISA、PCI等總線標準; 最後介紹幾種目前在計算機中常用的USB、IEEE 1394和SCSI等外部總線接口標準。
第7章首先介紹CPU的功能和組成; 再通過一個模型機的例子說明CPU的指令周期及執行指令的過程; 然後討論CPU控制部件設計的硬布線設計法和微程序設計法兩種主要方法; 最後以Intel公司的CPU產品為例,介紹典型CPU的發展。
第8章首先介紹計算機繫統的並行性概念,對計算機中使用的時間重疊、資源重復和資源共享等提高並行性的技術途徑進行概要性的介紹; 然後分別介紹現代計算機普遍采用的流水線技術和多處理機技術等並行處理技術; 最後對近些年發展起來且應用非常廣泛的機群繫統和多核處理器進行討論。
4. 本書的主要特色
結合計算機學科教育重基礎、重發展、重創新的要求,本書在內容組織和編寫上有以下特點。
(1) 首先為學生建立整機的概念。第1章將學生日常所熟悉的實際PC與計算機的基本組成部件進行對比,使學生對計算機整機的組成有一個初步的認識,對組成計算機繫統的主要部件的基本功能有一個初步的了解。
(2) 按照從整機到部件、自上而下的思想進行課程內容的組織,使學生在每一章節的學習中都清楚所學章節的內容與整機的關聯,同時對計算機組織與結構的各種概念、思想和原理等進行重點講述。
(3) 圍繞各章節的內容,穿插了一些“知識拓展”,介紹一些計算機繫統方面的相關知識和技術,使學生開拓視野,增長知識。
(4) 為幫助學生更好地學習本課程,本書專門在“中國大學MOOC”平臺上建設了本課程的教學網站。學生可以免費登錄本課程網站進行在線學習和參加考試,合格者將獲得“中國大學MOOC”平臺頒布的證書。
5. 本書的學時安排
本書共8章。第1~7章全面講述了單處理機繫統的硬件組織和結構,包括計算機繫統概述、數據的機器級表示及運算、彙編級機器組織、存儲繫統組織與結構、輸入輸出繫統組織、總線和接口組織及CPU組織與結構; 第8章介紹了現代並行處理機繫統的一些主流技術和體繫結構,包括計算機繫統的並行性、流水線技術、多處理機繫統、集群繫統和多核處理器等。本書建議總學時為60~80學時,各高校按照計算機專業課程體繫中課程設置和講授內容的不同可以靈活調整。
本書於2008年5月在中國鐵道出版社出版,2015年5月又由清華大學出版社出版。本次在2015年版本的基礎上進行了修訂,完善並更新了部分章節的內容,增加了各章節的習題數量。
本書由徐蘇擔任主編,張樂、白小明、於海雯任副主編。具體分工是徐蘇負責編寫第1、2、4、5章,白小明負責編寫第3、7章,張樂負責編寫第6章,於海雯負責編寫第8章。由於編者水平有限,本書難免會有疏漏及不足之處,懇請讀者和業內人士批評指正,以求不斷改進和完善。
編者
2023年5月