⑴ 中國人民大學資料庫專業屬於什麼方向系統結構,軟體與理論,還是計算機應用技術
其實現在很多人都在跨專業考研,而且其中也不少成功之人(本人也算是其中一員吧,呵呵~)。只不過跨專業得比考本專業付出更多的努力才能獲得同等的成功!
當然,相比之下,如果你想考名牌大學,我個人認為考本專業的勝算會更大些。但是不管怎樣,研究生階段的專業應該和你未來的就業是緊密結合在一起的,所以,你最好結合自己的興趣以及個人能力等等許多綜合條件來考慮。
全國范圍 與 計算機 相關的共有 13 個專業,詳細信息如下: 查詢提示: 帶*的為院校自設專業·081200 計算機科學與技術·081201 計算機系統結構·081202 計算機軟體與理論·081203 計算機應用技術·081220 計算機科學與技術(...*·081220 計算機科學與技術(...*·081220 計算機科學與技術(...*·081220 計算機科學與技術(...*·081221 計算機科學與技術(...*·081221 計算機科學與技術(...*·081280 計算機軟體與理論(軟...*·081423 土木工程計算機模擬*·081820 計算機技術與資源信...*
計算機系統結構(47)
排名
學校名稱
等級
排名
學校名稱
等級
排名
學校名稱
等級
1
清華大學
A+
4
浙江大學
A
7
西安電子科技大學
A
2
華中科技大學
A+
5
上海交通大學
A
8
復旦大學
A
3
西安交通大學
A
6
武漢大學
A
9
吉林大學
A
B+等(14個):東南大學、東北大學、北京航空航天大學、哈爾濱工業大學、北京大學、北京郵電大學、山東大學、中國科學技術大學、電子科技大學、重慶大學、北京科技大學、西北工業大學、中山大學、中南大學
B等(14個):同濟大學、北京理工大學、大連理工大學、華南理工大學、北京交通大學、湖南大學、南京理工大學、哈爾濱工程大學、四川大學、華東師范大學、上海大學、天津大學、西北大學、廣東工業大學
C等(10個):名單略
計算機應用技術(271)
排名
學校名稱
等級
排名
學校名稱
等級
排名
學校名稱
等級
1
清華大學
A+
19
武漢大學
A
37
合肥工業大學
A
2
浙江大學
A+
20
華南理工大學
A
38
蘇州大學
A
3
北京航空航天大學
A+
21
電子科技大學
A
39
江蘇大學
A
4
華中科技大學
A+
22
大連理工大學
A
40
大連海事大學
A
5
北京大學
A+
23
天津大學
A
41
中山大學
A
6
上海交通大學
A+
24
中南大學
A
42
北京化工大學
A
7
哈爾濱工業大學
A+
25
上海大學
A
43
重慶大學
A
8
北京理工大學
A+
26
南京大學
A
44
南京理工大學
A
9
東南大學
A+
27
四川大學
A
45
中國海洋大學
A
10
西安電子科技大學
A+
28
中國科學技術大學
A
46
太原理工大學
A
11
東北大學
A+
29
北京工業大學
A
47
湖南工業大學
A
12
吉林大學
A+
30
同濟大學
A
48
北京交通大學
A
13
西北工業大學
A+
31
華東師范大學
A
49
燕山大學
A
14
復旦大學
A
32
湖南大學
A
50
上海海事大學
A
15
哈爾濱工程大學
A
33
西安交通大學
A
51
新疆大學
A
16
西南交通大學
A
34
山東大學
A
52
重慶郵電大學
A
17
北京郵電大學
A
35
北京科技大學
A
53
南華大學
A
18
南京航空航天大學
A
36
安徽大學
A
54
首都師范大學
A
B+等(81個):中國礦業大學、武漢理工大學、河海大學、哈爾濱理工大學、中國人民大學、黑龍江大學、華東理工大學、鄭州輕工業學院、廣東工業大學、浙江工業大學、南京郵電大學、華中師范大學、山西大學、內蒙古大學、江南大學、沈陽航空工業學院、南開大學、蘭州理工大學、長沙理工大學、西華師范大學、華北電力大學、杭州電子科技大學、東北財經大學、西安理工大學、五邑大學、天津工業大學、南京工業大學、成都信息工程學院、天津科技大學、大連水產學院、昆明理工大學、河北工業大學、西北民族大學、浙江工商大學、長春理工大學、內蒙古科技大學、上海理工大學、西安郵電學院、廣西大學、中國地質大學、桂林工學院、青島大學、東華大學、西安建築科技大學、大連交通大學、蘭州大學、北京師范大學、遼寧工程技術大學、武漢科技學院、河南理工大學、北京信息科技大學、北方工業大學、深圳大學、遼寧大學、西安科技大學、江蘇科技大學、汕頭大學、桂林電子科技大學、浙江理工大學、黑龍江科技學院、暨南大學、沈陽理工大學、河南科技大學、湖南師范大學、南昌航空工業學院、南京師范大學、山東科技大學、遼寧石油化工大學、中國民航大學、鄭州大學、雲南大學、太原科技大學、廈門大學、江蘇工業學院、武漢科技大學、中國石油大學、安徽理工大學、中國傳媒大學、安徽工業大學、西南大學、中原工學院
B等(81個):中南林業科技大學、石家莊鐵道學院、齊齊哈爾大學、山東輕工業學院、河北大學、湖北大學、河南工業大學、沈陽工業大學、寧波大學、河北科技大學、福建師范大學、江西師范大學、湘潭大學、天津理工大學、雲南財經大學、江西理工大學、大慶石油學院、東北電力大學、重慶交通大學、河北工程大學、上海水產大學、西華大學、青島理工大學、江西農業大學、長春工業大學、華東交通大學、華南農業大學、南京農業大學、江西財經大學、西北農林科技大學、重慶工學院、西北大學、蘭州交通大學、成都理工大學、浙江師范大學、內蒙古師范大學、北京工商大學、鞍山科技大學、遼寧工學院、北京聯合大學、武漢工程大學、濟南大學、陝西師范大學、大連大學、安徽師范大學、西北師范大學、內蒙古工業大學、河南師范大學、東華理工大學、貴州財經學院、四川師范大學、河南大學、東北師范大學、福州大學、南京信息工程大學、湖南科技大學、華南師范大學、長安大學、西南科技大學、山東師范大學、煙台大學、廣西師范大學、曲阜師范大學、揚州大學、哈爾濱師范大學、山東經濟學院、西安工程大學、中北大學、西南石油大學、西安工業大學、河北農業大學、廣西民族學院、吉林農業大學、東北農業大學、貴州師范大學、廣西師范學院、山西師范大學、華北水利水電學院、遼寧師范大學、貴州大學、河北師范大學
C等(55個):名單略
上面的排名你可以參考一下,最好結合院校本身的綜合實力來考慮院校的選擇。我還幫你找了些資料,你可以參考一下。
計算機類專業考研分支方向
01中文信息處理
02模式識別
03資料庫技術
04領域數據工程
05軟體集成技術
06數據挖掘
07數字圖像處理
08科學計算可視化
09新一代系統軟體
10軟體工程
11網格計算
12智能數據處理
13智能化數據服務
14低功耗SOC
15計算機模擬
16系統模擬建模與分析
17計算機智能管理
18軟體設計方法
19分布/遷移/網路計算
20Linux操作系統及應用
21智能網路與智能通信
22網路技術與安全
23人工智慧及應用
24信息安全技術
25人工智慧與人工生命
26企業信息化軟體平台與中間件技術
27嵌入式系統研究
28寬頻網路協議研究
29實時系統軟體體系結構研究
30網路與通信系統集成電路設計
31圖像處理與表面檢測
32高性能計算
33並行編譯
計算機的核心課程大致為:數據結構,組成原理,離散數學,操作系統,編譯原理,系統結構,軟體工程,OOP,圖形學,網路,C/C++/Pascal/Asm編程語言等。而考研的科目,一般為前面的五到六科(不同學校選擇的科目會有不同)。
2010年計算機考研大綱
地址:
計算機考研全國統考復習指導及備戰建議
地址:
09年全國計算機專業排名公布
地址:
計算機考研統考行之有效的備考方案
地址:
計算機考研最好考的10所學校
地址:
考研院校選擇三大誤區
地址:
計算機專業考研經驗談 掌握方法以不變應萬變
地址:
關於計算機考研、計算機就業推薦你去計算機吧
全國碩士研究生入學統一考試計算機專業課推薦參考書目
一、數據結構
★ 嚴蔚敏、吳偉民編著:《數據結構(c語言版)》,清華大學出版社
★ 嚴蔚敏、吳偉民編著:《數據結構題集(C語言版)》,清華大學出版社
二、計算機組成原理
★唐朔飛編著:《計算機組成原理》,高等教育出版社,1999年版
★唐朔飛編著:《計算機組成原理學習指導與習題解答》,高等教育出版社,2005年9月
★白中英主編:《計算機組成原理》,科學出版社
三、操作系統
★湯小丹、梁紅兵、哲鳳屏、湯子瀛編著:《計算機操作系統(第三版)》,西安電子科技大學出版社 ★梁紅兵、湯小丹編著:《計算機操作系統》學習指導與題解(第二版),西安電子科技大學出版社,2008年9月
四、計算機網路
★謝希仁編著:《計算機網路(第5版)》,電子工業出版社
★高傳善、毛迪林、曹袖主編:《數據通信與計算機網路(第2版)》,高等教育出版社說明:
相關參考輔導書:
★《全國碩士研究生入學統一考試計算機專業基礎綜合考試大綱解析》,高等教育出版社,2008年10月
★鞏微、馮東暉主編:《2009年考研計算機學科專業基礎綜合考試全真模擬試題集》,原子能出版社,2008年10月
★陽光考研命題研究中心編寫:《2009年考研計算機科學專業基礎綜合考試教程》,中國人民大學出版社,2008年11月
希望我的回答對你有點幫助!
⑵ 計算機系統的層次結構
計算機系統的層次結構:
1、微程序設計級 ---- 第1級
該級的編程工具是微指令集,程序員用微指令編寫的微程序,由硬體直接執行。(如圖中最下一行右邊的PCWrite =1表示對PC寄存器的寫控制,詳細內容在控制器部分將詳細學習)
2、傳統機器級 ---- 第2級
該級的編程工具是計算機的機器語言指令集,程序員用機器指令編寫的程序由微程序進行解釋執行
3、操作系統級 --- 第3級
從操作系統的基本功能來看,一方面它直接管理傳統機器中的軟硬體資源,另一方面它又是傳統機器的延伸
4、匯編語言級 --- 第4級
該級的編程工具是匯編語言指令集。與第二層所採用的機器語言編程工具相比,採用匯編語言編寫程序便於理解與記憶
5、高級語言級 --- 第5級
該集的編程工具是各種高級語言如C語言等,高級語言源程序通常用編譯程序來完成高級語言翻譯後才能被底層的硬體執行
6、層次之間的關系
1)各層次之間的關系十分密切,高層是低層功能的擴展,低層是高層實現的基礎。
2)站在不同的層次觀察計算機系統,到關於計算機不同的概念。上圖第二列分別對應地給出了從高級語言、匯編語言、機器語言和微程序設計級所看到的計算機的不同編程工具。
拓展:
計算機系統指用於資料庫管理的計算機硬軟體及網路系統。資料庫系統需要大容量的主存以存放和運行操作系統、資料庫管理系統程序、應用程序以及資料庫、目錄、系統緩沖區等,而輔存則需要大容量的直接存取設備。此外,系統應具有較強的網路功能。
計算機系統的特點是能進行精確、快速的計算和判斷,而且通用性好,使用容易,還能聯成網路。①計算:一切復雜的計算,幾乎都可用計算機通過算術運算和邏輯運算來實現。②判斷:計算機有判別不同情況、選擇作不同處理的能力,故可用於管理、控制、對抗、決策、推理等領域。③存儲:計算機能存儲巨量信息。④精確:只要字長足夠,計算精度理論上不受限制。
詳細內容請在 網路 計算機系統 中了解
⑶ 計算機的體系結構,組成和實現各自處理哪些方面的問題
電腦的體系結構分為硬體系統和軟體系統兩個部分。
多媒體技術個人電腦的硬體設備包括:
主機:主機是整個電腦的主體,可以說用電腦來工作的時候,工作是在它內部完成的。主機外觀上分為立式和卧式兩種。立式機箱的結構更利於散熱,更受人們歡迎一些。
鍵盤:是電腦中不可缺少的輸入設備,用戶可以通過鍵盤輸入命令和數據,並可通過它控制電腦的運行。常見的鍵盤大多是101或104鍵的,一些較為新穎的104鍵盤往往帶有兩個Windows鍵和一個應用程序鍵,以提高在Win7操作系統上操作電腦的效率。這些鍵可以分為大鍵盤區、編輯鍵區、功能鍵區和小鍵盤區。
顯示器:是電腦基本的輸出設備,是整個電腦硬體系統中不可缺少的部分。我們現在常用的是液晶顯示器,與傳統的陰極射線管顯示器相比,輻射比較低、體積小,耗電少。它利用液晶的特性,通電時排列變得有秩序,使光線容易通過,不通電時排列混亂,阻止光線通過,通過電路控制,顯示圖像。
列印機也是一種常用的輸出設備。因為顯示器上顯示的內容一旦關機就看不見了,也不方便把顯示器搬來搬去給別人閱讀,所以我們還是需要用列印機把自己的工作成果列印出來。
滑鼠:電腦中重要的輸入設備,它能方便地把滑鼠指針准確定位在我們指定的屏幕位置,很方便地完成各種操作。按其工作原理,滑鼠分為機械滑鼠、光電滑鼠和光機滑鼠。目前我們常常用的滑鼠是光電滑鼠。光電滑鼠的下面是兩個平行放置的小光源,這種滑鼠只能在特定的滑鼠墊上移動,光源發出的光經過滑鼠墊反射後由滑鼠接收為移動信號,送入電腦,使屏幕上的滑鼠指針隨之移動。滑鼠指針和滑鼠的移動方向是一致的,移動距離也成比例。光電滑鼠使用時比較靈活,故障率比較低。
音箱:相當於電腦的嘴巴和喉嚨,有了它電腦才能發出悅耳的聲音。音箱的外殼有木質和塑料兩種,兩只音箱一左一右擺放在電腦兩側,與顯示器有一定距離,才能得到立體聲效果。
麥克風:相當於電腦的耳朵,有了它電腦才能把外部的聲音傳送到電腦中,變換成數字波形,輸入到文件或多媒體圖像中。
攝像頭:可以分為數字攝像頭和模擬攝像頭兩大類,數字攝像頭可以直接捕捉影像,通過串口、並口或USB介面傳到電腦里。根據攝像頭的形態,可以分為桌面底座式、高桿式和液晶掛式。攝像頭還可以分為有驅動和無驅動型的攝像頭。
軟體分為系統軟體、應用軟體。
系統軟體是負責管理計算機系統中各種獨立的硬體,使得它們可以協調工作。系統軟體使得計算機使用者和其他軟體將計算機當作一個整體而不需要顧及到底層每個硬體是如何工作的。
操作系統是一管理計算機硬體與軟體資源的程序,同時也是計算機系統的內核與基石。操作系統身負諸如管理與配置內存、決定系統資源供需的優先次序、控制輸入與輸出設備、操作網路與管理文件系統等基本事務。操作系統也提供一個讓使用者與系統交互的操作介面。目前多媒體個人電腦的主要操作系統是Windows 7。
應用軟體是為了某種特定的用途而被開發的軟體。它可以是一個特定的程序,比如一個圖像瀏覽器。也可以是一組功能聯系緊密,可以互相協作的程序的集合,比如微軟的Office軟體。也可以是一個由眾多獨立程序組成的龐大的軟體系統,比如資料庫管理系統。多媒體個人電腦的應用軟體主要有酷狗音樂、騰訊視頻、PPTV、Office 2007等。
⑷ 什麼是計算機體系結構中的並行性
並行處理(Parallel Processing)是計算機系統中能同時執行兩個或更多個處理機的一種計算方法。處理機可同時工作於同一程序的不同方面。並行處理的主要目的是節省大型和復雜問題的解決時間。為使用並行處理,首先需要對程序進行並行化處理,也就是說將工作各部分分配到不同處理機中。而主要問題是並行是一個相互依靠性問題,而不能自動實現。此外,並行也不能保證加速。但是一個在 n 個處理機上執行的程序速度可能會是在單一處理機上執行的速度的 n 倍。
計算機體系結構(ComputerArchitecture)是程序員所看到的計算機的屬性,即概念性結構與功能特性。按照計算機系統的多級層次結構,不同級程序員所看到的計算機具有不同的屬性。一般來說,低級機器的屬性對於高層機器程序員基本是透明的,通常所說的計算機體系結構主要指機器語言級機器的系統結構。經典的關於"計算機體系結構(computerarchitecture)"的定義是1964年C.M.Amdahl在介紹IBM360系統時提出的,其具體描述為"計算機體系結構是程序員所看到的計算機的屬性,即概念性結構與功能特性" 。
利用計算機語言進行並行性描述的時候主要有三種方案:
1.語言擴展方案:也就是利用各種語言的庫函數來進行並行性功能的擴展。
2.編譯制導法:也稱為智能編譯,它是隱式並行策略的體現,主要是由並行編譯系統進行程序表示、控制流的分析、相關分析、優化分析和並行化劃分,由相關分析得到方法庫管理方案,由優化分析得到知識庫管理方案,由並行化劃分得到程序重構,從而形成並行程序。
3.新的語言結構法:這是顯式並行策略的體現。也就是建立一種全新的並行語言的體系,而這種並行語言通過編譯就能直接形成並行程序。
⑸ 我們來講解以下如何才能編寫並行程序,以及如何編譯運行
我們下面以C 語言為例。
具體語法規則可參看《高性能計算並行編程技術-MPI 並行程序設計》一書。
mpicc -o outfilename cpi.c
其中outfilename 為編譯後的輸出文件,cpi.c 為源代碼.
可將cpi.c 下載後上傳的自己目錄下編譯.
例如:mpicc -o cpi cpi.c
如沒有安裝OpenPBS 則:
mpirun -np 4 cpi
否則:(一般安裝了)
之後需寫一作業提交腳本.例如:submit 內容如下:
#PBS -l nodes=nodes number
#PBS -N jobname#PBS -j oecd /home/xmin/Project
/usr/local/bin/mpiexec cpi
其中 #PBS -l nodes=nodes number 為指定幾個節點計算.如: nodes=4
#PBS -N jobname 為用戶命名的提交作業名稱.如: #PBS -N xmin
#PBS -j oe 為結果和錯誤輸出同文件.如無此項則分別在兩個文件中.
cd /home/xmin/Project 編譯後的輸出文件所在路徑(從根目錄開始).
/usr/local/bin/mpiexec cpi 為mpiexec 所在路徑.
下面是完整例子:
#PBS -l nodes=4
#PBS -N xmin#PBS -j oecd /home/xmin/Project
/usr/local/bin/mpiexec cpi
提交腳本如下:
qsub submit得到如下:3565.isc.math.nankai.e.cn
此為你的作業編號.
這樣你就可得到類似xmin.o2666 的文件,打開即可看到結果.
你還可以查詢作業提交情況.命令如下:qstat
⑹ 並行處理的並行演算法的基本策略
在並行處理技術中所使用的演算法主要遵循三種策略:
1.分而治之法:也就是把多個任務分解到多個處理器或多個計算機中,然後再按照一定的拓撲結構來進行求解。
2.重新排序法:分別採用靜態或動態的指令詞度方式。
3.顯式/隱式並行性結合:顯式指的是並行語言通過編譯形成並行程序,隱式指的是串列語言通過編譯形成並行程序,顯式/隱式並行性結合的關鍵就在於並行編譯,而並行編譯涉及到語句、程序段、進程以及各級程序的並行性。
二、並行性描述定義
利用計算機語言進行並行性描述的時候主要有三種方案:
1.語言擴展方案:也就是利用各種語言的庫函數來進行並行性功能的擴展。
2.編譯制導法:也稱為智能編譯,它是隱式並行策略的體現,主要是由並行編譯系統進行程序表示、控制流的分析、相關分析、優化分析和並行化劃分,由相關分析得到方法庫管理方案,由優化分析得到知識庫管理方案,由並行化劃分得到程序重構,從而形成並行程序。
3.新的語言結構法:這是顯式並行策略的體現。也就是建立一種全新的並行語言的體系,而這種並行語言通過編譯就能直接形成並行程序。
三、並行軟體
並行軟體可分成並行系統軟體和並行應用軟體兩大類,並行系統軟體主要指並行編譯系統和並行操作系統,並行應用軟體主要指各種軟體工具和應用軟體包。在軟體中所牽涉到的程序的並行性主要是指程序的相關性和網路互連兩方面。
1.程序的相關性:程序的相關性主要分為數據相關、控制相關和資源相關三類。
數據相關說明的是語句之間的有序關系,主要有流相關、反相關、輸出相關、I/O相關和求知相關等,這種關系在程序運行前就可以通過分析程序確定下來。數據相關是一種偏序關系,程序中並不是每一對語句的成員都是相關聯的。可以通過分析程序的數據相關,把程序中一些不存在相關性的指令並行地執行,以提高程序運行的速度。
控制相關指的是語句執行次序在運行前不能確定的情況。它一般是由轉移指令引起的,只有在程序執行到一定的語句時才能判斷出語句的相關性。控制相關常使正在開發的並行性中止,為了開發更多的並行性,必須用編譯技術克服控制相關。
而資源相關則與系統進行的工作無關,而與並行事件利用整數部件、浮點部件、寄存器和存儲區等共享資源時發生的沖突有關。軟體的並行性主要是由程序的控制相關和數據相關性決定的。在並行性開發時往往把程序劃分成許多的程序段——顆粒。顆粒的規模也稱為粒度,它是衡量軟體進程所含計算量的尺度,一般用細、中、粗來描述。劃分的粒度越細,各子系統間的通信時延也越低,並行性就越高,但系統開銷也越大。因此,我們在進行程序組合優化的時候應該選擇適當的粒度,並且把通訊時延盡可能放在程序段中進行,還可以通過軟硬體適配和編譯優化的手段來提高程序的並行度。
2.網路互連:將計算機子系統互連在一起或構造多處理機或多計算機時可使用靜態或動態拓撲結構的網路。靜態網路由點一點直接相連而成,這種連接方式在程序執行過程中不會改變,常用來實現集中式系統的子系統之間或分布式系統的多個計算結點之間的固定連接。動態網路是用開關通道實現的,它可動態地改變結構,使之與用戶程序中的通信要求匹配。動態網路包括匯流排、交叉開關和多級網路,常用於共享存儲型多處理機中。在網路上的消息傳遞主要通過尋徑來實現。常見的尋徑方式有存儲轉發尋徑和蟲蝕尋徑等。在存儲轉發網路中以長度固定的包作為信息流的基本單位,每個結點有一個包緩沖區,包從源結點經過一系列中間結點到達目的結點。存儲轉發網路的時延與源和目的之間的距離(段數)成正比。而在新型的計算機系統中採用蟲蝕尋徑,把包進一步分成一些固定長度的片,與結點相連的硬體尋徑器中有片緩沖區。消息從源傳送到目的結點要經過一系列尋徑器。同一個包中所有的片以流水方式順序傳送,不同的包可交替地傳送,但不同包的片不能交叉,以免被送到錯誤的目的地。蟲蝕尋徑的時延幾乎與源和目的之間的距離無關。在尋徑中產生的死鎖問題可以由虛擬通道來解決。虛擬通道是兩個結點間的邏輯鏈,它由源結點的片緩沖區、結點間的物理通道以及接收結點的片緩沖區組成。物理通道由所有的虛擬通道分時地共享。虛擬通道雖然可以避免死鎖,但可能會使每個請求可用的有效通道頻寬降低。因此,在確定虛擬通道數目時,需要對網路吞吐量和通信時延折衷考慮。
四、硬體技術在硬體技術方面主要從處理機、存儲器和流水線三個方面來實現並行。
1.處理機:主要的處理機系列包括CISC、RISC、超標量、VL1W、超流水線、向量以及符號處理機。
傳統的處理機屬於復雜指令系統計算(CISC)結構。指令系統大,指令格式可變,通用寄存器個數較少,基本上使用合一的指令與數據高速緩存,時鍾頻率較低,CPI較高,大多數利用ROM 實現微碼控制CPU,而當今的精簡指令系統計算(RISC)處理機指令格式簡單規范,面向寄存器堆,採用重疊寄存器窗口技術,具有多級Cache,多種流水線結構,強調編譯優化技術,時鍾頻率快,CPI低,大多數用硬連線控制CPU。
CISC或RISC標量處理機都可以採用超標量或向量結構來改善性能。標量處理機在每個周期內只發射一條指令並要求周期只完成從流水線來的一條指令。而在超標量處理機中,使用了多指令流水線,每個周期要發射多條指令並產生多個結果。由於希望程序中有許多的指令級並行性,因此超標量處理機更要依靠優化編譯器去開發並行性。
VL1W 結構是將水平微碼和超標量處理這兩種普遍採用的概念結合起來產生的。典型的超長指令字VL1W 機器指令字長度有數百位。在VLlW 處理機中,多個功能部件是並發工作的,所有的功能部件共享使用公用大型寄存器堆,由功能部件同時執行的各種操作是用VL1W 指令來同步的,每條指令可指定多個操作。VL1W 指令解碼比超標量指令容易,但在開發不同數量的並行性時總是需要不同的指令系統。VL1W 主要是開發標量操作之間的並行性,它的成功與否很大程度取決於代碼壓縮的效率,其結構和任何傳統的通用處理機完全不兼容。即使同一結構的不同實現也不大可能做到彼此二進制兼容。VL1W 的主要優點在於它的硬體結構和指令系統簡單,在科學應用領域可以發揮良好作用,但在一般應用場合可能並不很好用。
向量處理機對數組執行向量指令,每條指令都包含一串重復的操作。它是專門設計用來完成向量運算的協處理機,通常用於多流水線超級計算機中。向量處理機可以利用循環級展開所得的並行性,它可以附屬於任何標量處理機。專用的向量流水線可以在循環控制中消除某些軟體開銷,它的效果與優化編譯器將順序代碼向量化的性能很有關系。從理論上說,向量機可以具有和超標量處理機同樣的性能,因此可以說向量機的並行性與超標量機相同。
符號處理機是為AI應用而研製的,已用於定理證明、模式識別、專家系統、知識工程、文本檢索、科學以及機器智能等許多應用領域。在這些應用中,數據和知識表達式、原語操作、演算法特性、存儲器、I/0和通信以及專用的結構特性與數值計算是不一樣的,符號處理機也稱為邏輯程序設計語言處理機、表處理語言處理機或符號變換器。符號處理並不和數值數據打交道,它處理的是邏輯程序、符號表、對象、劇本、黑板、產生式系統、語義網路、框架以及人工神經網路等問題。這些操作需要專門的指令系統,通常不使用浮點操作。
2.存儲器:存儲設備按容量和存取時間從低到高可分為寄存器、高速緩存、主存儲器、磁碟設備和磁帶機五個層次。較低層存儲設備與較高層的相比,存取速度較快、容量較小,每位元組成本較高、帶寬較寬、傳輸單位較小。
存放在存儲器層次結構中的信息滿足三個重要特性:包含性、一致性和局部性。所謂包含性,指的是一個信息字的復製品可以在比它高的所有層中找到,而如果在高層中丟失了一個信息,則在比它低的所有層中此信息也將丟失。CPU 和高速緩存之間的信息傳送是按字進行的,高速緩存和主存儲器間用塊作為數據傳送的基本單位,主存和磁碟之間又是以頁面為基本單位來傳送信息的,而在磁碟和磁帶機之間的數據傳送則是按文件級處理的。所謂一致性要求的是同一個信息項與後繼存儲器層次上的副本是一致的。也就是說,如果在高速緩存中的一個字被修改過,那麼在所有更高層上該字的副本也必須立即或最後加以修改。為了盡量減少存儲器層次結構的有效存取時間,通常把頻繁使用的信息放在較低層次。維護存儲器層次結構一致性一般有兩種策略,一種是寫直達策略,也就是如果,則立即在所有高層存儲器中進行同樣的修改;另一種是寫回策略,也就是在較低層中對信息進行修改後並不立即在高層存儲器中進行相應的修改,而是等到該信息將被替換或將從低層中消失時才在所有高層存儲器中進行同樣的修改。甚至可以將寫直達和寫回策略的優點結合起來,形成寫一次協議來維護存儲器的一致性。
存儲器的層次結構是在一種程序行為——訪問的局部性基礎上開發出來的。主要有時間局部性、空間局部性和順序局部性。時間局部性指的是最近的訪問項很可能在不久的將來再次被訪問。它往往會引起對最近使用區域的集中訪問。空間局部性表示一種趨勢,指的是一個進程訪問的各項其地址彼此很近。順序局部性指的是在典型程序中,除非是轉移指令,一般指令都是順序執行的。
在多處理機系統中一般使用共享存儲器。對共享存儲器的組織一般採用低位交叉、高位交叉、高低位交叉三種方法。低位交叉又稱並發存取,它是把相鄰的地址放在相鄰的存儲器模塊中,在訪問時不容易產生沖突,並行性較好,但可靠性容錯能力和擴展性均較差。高位交叉又稱允許同時存取,它是把相鄰地址分配到同一個存儲器模塊中,可靠性、容錯能力和擴展性均較強,但訪問時易產生沖突,帶寬較窄,並行性較差。高低位交叉存取又稱C—s存取,它是結合了高位交叉和低位交叉兩種方法的優點,既解決了沖突問題,又能有效地提高容錯能力和並行性,最適合於向量處理機結構。
3.流水線:流水線技術主要有指令流水線技術和運算流水線技術兩種。
指令流水線技術主要目的是要提高計算機的運行效率和吞吐率。它主要通過設置預取指令緩沖區、設置多功能部件、進行內部數據定向、採取適當的指令調度策略來實現。指令調度的策略主要有靜態和動態兩種,靜態詞度是基於軟體的,主要由編譯器完成,動態詞度是基於硬體的,主要是通過硬體技術進行。
運算流水線主要有單功能流水線和多功能流水線兩種。其中多功能流水線又可分為靜態流水線和動態流水線。靜態流水線技術只用來實現確定的功能,而動態流水線可以在不同時間重新組合,實現不同的功能,它除流線連接外,還允許前饋和反饋連接,因此也稱為非線性流水線。這些前饋和反饋連接使得進入流水線的相繼事件的詞度變得很不簡單。由於這些連接,流水線不一定從最後一段輸出。根據不同的數據流動模式,人們可以用同一條流水線求得不同功能的值。
並行計算機發展簡述
40 年代開始的現代計算機發展歷程可以分為兩個明顯的發展時代:串列計算時代、並行計算時代。每一個計算時代都從體系結構發展開始,接著是系統軟體(特別是編譯器與操作系統)、應用軟體,最後隨著問題求解環境的發展而達到頂峰。創建和使用並行計算機的主要原因是因為並行計算機是解決單處理器速度瓶頸的最好方法之一。
並行計算機是由一組處理單元組成的,這組處理單元通過相互之間的通信與協作,以更快的速度共同完成一項大規模的計算任務。因此,並行計算機的兩個最主要的組成部分是計算節點和節點間的通信與協作機制。並行計算機體系結構的發展也主要體現在計算節點性能的提高以及節點間通信技術的改進兩方面。
60 年代初期,由於晶體管以及磁芯存儲器的出現,處理單元變得越來越小,存儲器也更加小巧和廉價。這些技術發展的結果導致了並行計算機的出現,這一時期的並行計算機多是規模不大的共享存儲多處理器系統,即所謂大型主機(Mainframe)。IBM360 是這一時期的典型代表。
到了60 年代末期,同一個處理器開始設置多個功能相同的功能單元,流水線技術也出現了。與單純提高時鍾頻率相比,這些並行特性在處理器內部的應用大大提高了並行計算機系統的性能。伊利諾依大學和Burroughs 公司此時開始實施IlliacIV 計劃,研製一台64 個CPU 的SIMD 主機系統,它涉及到硬體技術、體系結構、I/O 設備、操作系統、程序設計語言直至應用程序在內的眾多研究課題。不過,當一台規模大大縮小了的16CPU 系統終於在1975 年面世時,整個計算機界已經發生了巨大變化。
首先是存儲系統概念的革新,提出虛擬存儲和緩存的思想。IBM360/85 系統與360/91是屬於同一系列的兩個機型,360/91 的主頻高於360/85,所選用的內存速度也較快,並且採用了動態調度的指令流水線;但是,360/85 的整體性能卻高於360/91,唯一的原因就是前者採用了緩存技術,而後者則沒有。
其次是半導體存儲器開始代替磁芯存儲器。最初,半導體存儲器只是在某些機器被用作緩存,而CDC7600 則率先全面採用這種體積更小、速度更快、可以直接定址的半導體存儲器,磁芯存儲器從此退出了歷史舞台。與此同時,集成電路也出現了,並迅速應用到了計算機中。元器件技術的這兩大革命性突破,使得IlliacIV 的設計者們在底層硬體以及並行體系結構方面提出的種種改進都大為遜色。
1976 年CRAY-1 問世以後,向量計算機從此牢牢地控制著整個高性能計算機市場15 年。CRAY-1 對所使用的邏輯電路進行了精心的設計,採用了我們如今稱為RISC 的精簡指令集,還引入了向量寄存器,以完成向量運算。這一系列全新技術手段的使用,使CRAY-1 的主頻達到了80MHz。
微處理器隨著機器的字長從4 位、8 位、16 位一直增加到32 位,其性能也隨之顯著提高。正是因為看到了微處理器的這種潛力,卡內基- 梅隆大學開始在當時流行的DECPDP11 小型計算機的基礎上研製成功一台由16 個PDP11/40 處理機通過交叉開關與16 個共享存儲器模塊相連接而成的共享存儲多處理器系統C.mmp。
從80 年代開始,微處理器技術一直在高速前進。稍後又出現了非常適合於SMP 方式的匯流排協議,而伯克利加州大學則對匯流排協議進行了擴展,提出了Cache 一致性問題的處理方案。從此,C.mmp 開創出的共享存儲多處理器之路越走越寬;現在,這種體系結構已經基本上統治了伺服器和桌面工作站市場。
同一時期,基於消息傳遞機制的並行計算機也開始不斷涌現。80 年代中期,加州理工成功地將64 個i8086/i8087 處理器通過超立方體互連結構連結起來。此後,便先後出現了Intel iPSC 系列、INMOS Transputer 系列,Intel Paragon 以及IBM SP 的前身Vulcan 等基於消息傳遞機制的並行計算機。
80 年代末到90 年代初,共享存儲器方式的大規模並行計算機又獲得了新的發展。IBM將大量早期RISC 微處理器通過蝶形互連網路連結起來。人們開始考慮如何才能在實現共享存儲器緩存一致的同時,使系統具有一定的可擴展性(Scalability)。90 年代初期,斯坦福大學提出了DASH 計劃,它通過維護一個保存有每一緩存塊位置信息的目錄結構來實現分布式共享存儲器的緩存一致性。後來,IEEE 在此基礎上提出了緩存一致性協議的標准。
90 年代以來,主要的幾種體系結構開始走向融合。屬於數據並行類型的CM-5 除大量採用商品化的微處理器以外,也允許用戶層的程序傳遞一些簡單的消息;CRAY T3D是一台NUMA 結構的共享存儲型並行計算機,但是它也提供了全局同步機制、消息隊列機制,並採取了一些減少消息傳遞延遲的技術。
隨著商品化微處理器、網路設備的發展,以及MPI/PVM 等並行編程標準的發布,機群架構的並行計算機出現。IBM SP2 系列機群系統就是其中的典型代表。在這些系統中,各個節點採用的都是標準的商品化計算機,它們之間通過高速網路連接起來。
今天,越來越多的並行計算機系統採用商品化的微處理器加上商品化的互連網路構造,這種分布存儲的並行計算機系統稱為機群。國內幾乎所有的高性能計算機廠商都生產這種具有極高性能價格比的高性能計算機,並行計算機就進入了一個新的時代,並行計算的應用達到了前所未有的廣度和深度。
並行計算機隨著微處理晶元的發展,已經進入了一個新時代。目前並行計算機的性能已經突破20PFLOPS,正在向百億億次發展。我國並行計算機的研製已經走在世界前列。2003年由聯想公司生產的深騰6800 在2003 年11 月世界TOP500 排名中位列第14 名,2004 年曙光公司生產的曙光4000A 在2004 年6 月的世界TOP500 排名中位列第10 名,這是我國公開發布的高性能計算機在世界TOP500 中首次進入前十名,這標志著我國在並行計算機系統的研製和生產中已經趕上了國際先進水平,為提高我國的科學研究水平奠定了物質基礎。2013年國際超級計算機大會最新發布的世界超級計算機500強排名中,國防科技大學研製的天河二號超級計算機系統,以峰值計算速度每秒5.49億億次、持續計算速度每秒3.39億億次雙精度浮點運算的優異性能位居榜首。
從TOP500 的前10 名來看,美國仍然是超級計算機的最大擁有者。按照世界TOP500 的統計數據來分析,美國在計算能力上佔有近全世界的一半,在TOP500 中的所有計算機中擁有的數量超過50%。
⑺ 目前處理並行編譯技術有哪幾種方法
三種形式編輯
時間並行
時間並行指時間重疊,在並行性概念中引入時間因素,讓多個處理過程在時間上相互錯開,輪流重疊地使用同一套硬體設備的各個部分,以加快硬體周轉而贏得速度。?
時間並行性概念的實現方式就是採用流水處理部件。這是一種非常經濟而實用的並行技術,能保證計算機系統具有較高的性能價格比。目前的高性能微型機幾乎無一例外地使用了流水技術。
空間並行
空間並行指資源重復,在並行性概念中引入空間因素,以「數量取勝」為原則來大幅度提高計算機的處理速度。大規模和超大規模集成電路的迅速發展為空間並行技術帶來了巨大生機,因而成為實現並行處理的一個主要途徑。空間並行技術主要體現在多處理器系統和多計算機系統。但是在單處理器系統中也得到了廣泛應用。?
時間並行+空間並行
指時間重疊和資源重復的綜合應用,既採用時間並行性又採用空間並行性。顯然,第三種並行技術帶來的高速效益是最好的。
⑻ android系統編譯能用分布式編譯嗎
項目越來越大,每次需要重新編譯整個項目都是一件很浪費時間的事情。Research了一下,找到以下可以幫助提高速度的方法,總結一下。
1. 使用tmpfs來代替部分IO讀寫
2.ccache,可以將ccache的緩存文件設置在tmpfs上,但是這樣的話,每次開機後,ccache的緩存文件會丟失
3.distcc,多機器編譯
4.將屏幕輸出列印到內存文件或者/dev/null中,避免終端設備(慢速設備)拖慢速度。
tmpfs
有人說在Windows下用了RAMDisk把一個項目編譯時間從4.5小時減少到了5分鍾,也許這個數字是有點誇張了,不過粗想想,把文件放到內存上做編譯應該是比在磁碟上快多了吧,尤其如果編譯器需要生成很多臨時文件的話。
這個做法的實現成本最低,在Linux中,直接mount一個tmpfs就可以了。而且對所編譯的工程沒有任何要求,也不用改動編譯環境。
mount -t tmpfs tmpfs ~/build -o size=1G
用2.6.32.2的Linux Kernel來測試一下編譯速度:
用物理磁碟:40分16秒
用tmpfs:39分56秒
呃……沒什麼變化。看來編譯慢很大程度上瓶頸並不在IO上面。但對於一個實際項目來說,編譯過程中可能還會有打包等IO密集的操作,所以只要可能,用tmpfs是有益無害的。當然對於大項目來說,你需要有足夠的內存才能負擔得起這個tmpfs的開銷。
make -j
既然IO不是瓶頸,那CPU就應該是一個影響編譯速度的重要因素了。
用make -j帶一個參數,可以把項目在進行並行編譯,比如在一台雙核的機器上,完全可以用make -j4,讓make最多允許4個編譯命令同時執行,這樣可以更有效的利用CPU資源。
還是用Kernel來測試:
用make: 40分16秒
用make -j4:23分16秒
用make -j8:22分59秒
由此看來,在多核CPU上,適當的進行並行編譯還是可以明顯提高編譯速度的。但並行的任務不宜太多,一般是以CPU的核心數目的兩倍為宜。
不過這個方案不是完全沒有cost的,如果項目的Makefile不規范,沒有正確的設置好依賴關系,並行編譯的結果就是編譯不能正常進行。如果依賴關系設置過於保守,則可能本身編譯的可並行度就下降了,也不能取得最佳的效果。
ccache
ccache工作原理:
ccache也是一個編譯器驅動器。第一趟編譯時ccache緩存了GCC的「-E」輸出、編譯選項以及.o文件到$HOME/.ccache。第二次編譯時盡量利用緩存,必要時更新緩存。所以即使"make clean; make"也能從中獲得好處。ccache是經過仔細編寫的,確保了與直接使用GCC獲得完全相同的輸出。
ccache用於把編譯的中間結果進行緩存,以便在再次編譯的時候可以節省時間。這對於玩Kernel來說實在是再好不過了,因為經常需要修改一些Kernel的代碼,然後再重新編譯,而這兩次編譯大部分東西可能都沒有發生變化。對於平時開發項目來說,也是一樣。為什麼不是直接用make所支持的增量編譯呢?還是因為現實中,因為Makefile的不規范,很可能這種「聰明」的方案根本不能正常工作,只有每次make clean再make才行。
安裝完ccache後,可以在/usr/local/bin下建立gcc,g++,c++,cc的symbolic link,鏈到/usr/bin/ccache上。總之確認系統在調用gcc等命令時會調用到ccache就可以了(通常情況下/usr/local /bin會在PATH中排在/usr/bin前面)。
安裝的另外一種方法:
vi ~/.bash_profile
把/usr/lib/ccache/bin路徑加到PATH下
PATH=/usr/lib/ccache/bin:$PATH:$HOME/bin
這樣每次啟動g++的時候都會啟動/usr/lib/ccache/bin/g++,而不會啟動/usr/bin/g++
效果跟使用命令行ccache g++效果一樣
這樣每次用戶登錄時,使用g++編譯器時會自動啟動ccache
繼續測試:
用ccache的第一次編譯(make -j4):23分38秒
用ccache的第二次編譯(make -j4):8分48秒
用ccache的第三次編譯(修改若干配置,make -j4):23分48秒
看來修改配置(我改了CPU類型...)對ccache的影響是很大的,因為基本頭文件發生變化後,就導致所有緩存數據都無效了,必須重頭來做。但如果只是修改一些.c文件的代碼,ccache的效果還是相當明顯的。而且使用ccache對項目沒有特別的依賴,布署成本很低,這在日常工作中很實用。
可以用ccache -s來查看cache的使用和命中情況:
cache directory /home/lifanxi/.ccachecache hit 7165cache miss 14283called for link 71not a C/C++ file 120no input file 3045files in cache 28566cache size 81.7 Mbytesmax cache size 976.6 Mbytes
可以看到,顯然只有第二編次譯時cache命中了,cache miss是第一次和第三次編譯帶來的。兩次cache佔用了81.7M的磁碟,還是完全可以接受的。
distcc
一台機器的能力有限,可以聯合多台電腦一起來編譯。這在公司的日常開發中也是可行的,因為可能每個開發人員都有自己的開發編譯環境,它們的編譯器版本一般是一致的,公司的網路也通常具有較好的性能。這時就是distcc大顯身手的時候了。
使用distcc,並不像想像中那樣要求每台電腦都具有完全一致的環境,它只要求源代碼可以用make -j並行編譯,並且參與分布式編譯的電腦系統中具有相同的編譯器。因為它的原理只是把預處理好的源文件分發到多台計算機上,預處理、編譯後的目標文件的鏈接和其它除編譯以外的工作仍然是在發起編譯的主控電腦上完成,所以只要求發起編譯的那台機器具備一套完整的編譯環境就可以了。
distcc安裝後,可以啟動一下它的服務:
/usr/bin/distccd --daemon --allow 10.64.0.0/16
默認的3632埠允許來自同一個網路的distcc連接。
然後設置一下DISTCC_HOSTS環境變數,設置可以參與編譯的機器列表。通常localhost也參與編譯,但如果可以參與編譯的機器很多,則可以把localhost從這個列表中去掉,這樣本機就完全只是進行預處理、分發和鏈接了,編譯都在別的機器上完成。因為機器很多時,localhost的處理負擔很重,所以它就不再「兼職」編譯了。
export DISTCC_HOSTS="localhost 10.64.25.1 10.64.25.2 10.64.25.3"
然後與ccache類似把g++,gcc等常用的命令鏈接到/usr/bin/distcc上就可以了。
在make的時候,也必須用-j參數,一般是參數可以用所有參用編譯的計算機CPU內核總數的兩倍做為並行的任務數。
同樣測試一下:
一台雙核計算機,make -j4:23分16秒
兩台雙核計算機,make -j4:16分40秒
兩台雙核計算機,make -j8:15分49秒
跟最開始用一台雙核時的23分鍾相比,還是快了不少的。如果有更多的計算機加入,也可以得到更好的效果。
在編譯過程中可以用distccmon-text來查看編譯任務的分配情況。distcc也可以與ccache同時使用,通過設置一個環境變數就可以做到,非常方便。
總結一下:
tmpfs: 解決IO瓶頸,充分利用本機內存資源
make -j: 充分利用本機計算資源
distcc: 利用多台計算機資源
ccache: 減少重復編譯相同代碼的時間
這些工具的好處都在於布署的成本相對較低,綜合利用這些工具,就可以輕輕鬆鬆的節省相當可觀的時間。上面介紹的都是這些工具最基本的用法,更多的用法可以參考它們各自的man page。
5.還有提速方法是把屏幕輸出重定向到內存文件或/dev/null,因對終端設備(慢速設備)的阻塞寫操作也會拖慢速度。推薦內存文件,這樣發生錯誤時,能夠查看。