導航:首頁 > 源碼編譯 > intel編譯庫輸出字元

intel編譯庫輸出字元

發布時間:2022-04-27 14:59:10

1. 如何在命令行中使用Intel Fortran編譯

如果想通過命令行使用 Intel Visual Fortran, 可以通過點擊系統菜單 [Start]->[All Programs]->[Intel Software Development Tools]-> [Intel Visual Fortran Professional 1x.x.xxx]->[Fortran Build environment for applications running on ...], 這樣會自動設置好所有的系統環境.
另外, 你也可以通過在命令行窗口, 運行C:\安裝路徑\bin\ifortvars.bat 來手工設定, 特別是需要和 C++ 編譯器混合使用的時候. 編譯源文件:

2. 如何在命令行中使用intel c++編譯器,並使用openmp和mkl來編譯自己的程序,並運算

1、icc

Intel C/C++編譯器接受遵守ANSI C/C++ , ISO C/C++ standards,GNU inline ASM for IA-32 architecture標準的輸入。與linux下常用的gcc兼容並支持更大的C語言擴展,包括源文件、命令行參數、目標文件。不支持gcc的inline方式的匯編。例,f.c

#include<stdio.h>

int main(int argc, char* argv[]){

printf("Hello\n");

return 0;

}

編譯:icc -c f.cpp -o f.o

鏈接:icc f.o -o f

運行:./f

注意,編譯與鏈接都由icc來完成,icc常用命令行參數:

-o 輸出文件命名

-I include路徑

-L lib路徑

-l 包含的lib名

-c 僅生成目標文件(*.o),不鏈接

-On n=0,1,2,3 編譯器優化選項,n=0關閉編譯器優化,n=3使用最激進的優化

-c99[-] 打開/關閉 c99規范的支持

詳細的請參照icc的manpage.

2、ifort

Intel Fortran編譯器支持F77/90/95標准並與CFV(Compaq Visual Fortran)兼容。例,f.f90

program f

print *, "Hello"

stop

end

編譯:ifort -c f.f90 -o f.o

鏈接:ifort f.o -o f

運行:./f

編譯與連接同樣由ifort來完成,ifort常用命令行參數:

-o 輸出文件命名

-I include路徑

-L lib路徑

-l 包含的lib名

-c 僅生成目標文件(*.o),不鏈接

-On n=0,1,2,3 編譯器優化選項,n=0關閉編譯器優化,n=3使用最激進的優化

-std90 使用F90標准編譯

-std95 使用F 95標准編譯

-f77rtl 編譯使用F77運行方式的代碼(用於解決特殊問題)

These options optimize application performance for a particular Intel? processor or family of processors. The compiler generates code that takes advantage of features of the specified processor.

Option

Description
tpp5 or G5 Optimizes for Intel? Pentium? and Pentium? with MMX? technology processors.
tpp6 or G6 Optimizes for Intel? Pentium? Pro, Pentium? II and Pentium? III processors.
tpp7 or G7 Optimizes for Intel? Pentium? 4, Intel? Xeon?, Intel? Pentium? M processors, and Intel? Pentium? 4 processors with Streaming SIMD Extensions 3 (SSE3) instruction support.
On Intel? EM64T systems, only option tpp7 (Linux) or G7 (Windows) is valid.

About tpp:

http://www.ncsa.illinois.e/UserInfo/Resources/Software/Intel/Compilers/9.0/main_for/mergedProjects/copts_for/common_options/option_tpp567_g567.htm

https://wiki.ke.e/display/SCSC/Compilers+and+Libraries

Intel Fortran Compiler Options: http://geco.mines.e/guide/ifort.html

Intel(R) Fortran Compiler Options: http://www.rcac.pure.e/userinfo/resources/common/compile/compilers/intel/man/ifort.txt

ifort編譯器提供了非常多的優化參數

$ ifort --help | more 查看就可以
也可以定位到某個參數

$ifort --help | grep -5 '-mkl'
-5表示顯示查找到的行及下面5行的內容。

3、Intel MKL數學庫針對Intel系列處理器進行了專門的優化,主要包含的庫有:

基本線形代數運算(BLAS)

向量與向量、向量與矩陣、矩陣與矩陣的運算

稀疏線形代數運算

快速傅立葉變換(單精度/雙精度)

LAPACK(求解線形方程組、最小方差、特徵值、Sylvester方程等)

向量數學庫(VML)

向量統計學庫(VSL)

高級離散傅立葉變換

編譯:

icc multi.c -I/opt/intel/mkl/include –L/intel/mkl/lib –lmpi_ipf –o multi

4、MPI程序編譯

消息傳遞介面(MPI)並行程序設計模型程序的編譯命令。例,f.c

include<stdio.h>

#include<mpi.h>

main(argc,argv)

int argc;

char *argv[];

{

char name[BUFSIZ];

int length;

MPI_Init(&argc,&argv);

MPI_Get_processor_name(name, &length);

printf("%s: hello world\n", name);

MPI_Finalize();

}

編譯與連接均使用mpicc,參數與mpicc中定義的編譯器相同,這里與icc相同。

mpicc –c hello.c –o hello.o

mpicc hello.o –o hello

運行使用mpirun 命令,將運行需要的節點定義在文件中並在-machinfile中制定。

文件: nodelist

node1

node1

node2

node3

運行:

$mpirun –machefile nodelist –np 4 ./hello

node1: hello world

node1: hello world

node2: hello world

node3: hello world

5、32位向64位的移植

32位程序到64位移植中應注意的常見問題:

數據截斷:

由於long類型變數的運算(賦值、比較、移位等)產生。long定義在x86上為32bits,而在ia64上為64bits.容易在與int型變數運算時出現異常。

處理方法:盡量避免不同類型變數間的運算,避免將長度較長的變數賦值到較短的變數中,統一變數長度可以解決這個問題。簡單的對於32位轉移到64位可以將所有long定義轉換為int定義。

3. 請教一下intel cpu後面字元的意思

大家買CPU都是怎樣查看型號的?有多少朋友購買CPU時只是看一下外包裝上標明的型號,或者只是簡單的看一下外殼上的主頻和外頻?之前我們有不少介紹怎樣從序列號產看硬碟,或者顯示器的型號產地的文章,都受到了不少消費者的一致好評,今天我們再為大家送上怎樣從外殼上的編號產看CPU的型號,產地等各種信息,希望會對大家有所幫助。

鑒於目前市場山Intel的處理器型號眾多,所以今天我們就先以Intel為例向大家介紹。
我們拿到一顆CPU都可以從其外面殼的鐵上看到以上的信息,不少朋友可能看了有點暈,不要緊聽小編一一道來,上面一共5行字母,最上面的字母INTEL 05就不多說了相信誰都知道。第二行的CELERON D表示這顆CPU的系列,就是我們常說的賽揚D,同樣如果是其他CPU還有可能是Pentium4,Pentium D等等。

S-Spec編碼的含義

第三行,開始的352,這個編號在以後的Intel處理器里可能都會看見,這是Intel處理器上的一個產品產品編號,和下面的3.20GHz是相對應的,也就是說不同的數字代表不同的頻率,這一點大家想要了解可以到我們的三大件行情里看,裡面有每個型號相對應的主頻,外頻等

緊接著後面的SL96P可能不少朋友就比較陌生了,這幾個字母叫S-Spec編碼,是Intel為了方便用戶查詢其CPU產品所制定的一組編碼,此編碼通常包含了CPU的主頻、二級緩存、前端匯流排、製造工藝、核心步進、工作電壓、耐溫極限、CPU ID等重要的參數。
並且CPU和S-Spec編碼是一一對應的關系。對於大多數人而言S-Spec的含義無法直接看出的,也沒有必要深入地研究各字元所代表的參數規格,但它是選擇Intel處理器的最有用工具,通過此編碼到Intel的官方網站上查詢http://processorfinder.intel.com/Default.aspx,就可以直接查到這個型號CPU的一切相關信息,包括他的製造工藝、核心步進、極限溫度、最大功耗為等。

再後面的COSTA RICA,稍微懂點英文的朋友都知道吧,就是這顆CPU的產地,哥斯大黎加,不同的型號產地還有MALAY(馬來西亞),CHINA(中國)等。

最易懂的編號

第四行就是我們可以看懂這顆CPU最簡單的信息了,3.20GHz這顆CPU的主頻,512是處理器的二級緩存,這顆賽揚D是最新的65nm工藝,所以二級緩存是512K,同樣外頻也提高到了533Hz。最後的05A是生產日期。

這里需要注意的是不同型號的CPU這一行表示的意思也是完全不同的,我們只要記住,這一行的意思從頭開始是:主頻/二級緩存/外頻就可以了。

如果是一顆Pentium4 506處理器,那麼這里就應該是2.66GHz/1M/533了,但是在一些雙核心的CPU上我們還會看到2.66GHz/2x1M/533的字樣,其他的都一樣,就是二級緩存這里的2x1M由於是雙核心,所以每個核心擁有1M的二級緩存,同樣我們還會發現2x2M,甚至以後的4x2M。

最後一行的3621B087對於我們普通消費者沒有什麼意義,這是Intel處理器的一個出場編號,一個編號只對應一顆CPU,所以我們只需要了解一下就行了。
A/B/C/D/E....?

以上我們介紹的主要是從775針介面開始的Intel處理器,但是在這之前的478針處理器上,我們對於相同主頻的Pentium 4處理器還會看見A/B/C/E的後綴,比如Pentium 4 2.8A、Pentium 4 2.8B、2.8C、2.8E等。不少人會對其中的「2.4A/B/C/E」感到迷惑。其實,這些後綴是Intel針對相同主頻,但擁有不同核心的處理器而設定的,其中2.8GHz很容易理解,代表的就是CPU的主頻是2.8GHz。

「A」通常代表Northwood核心且具有400MHz前端匯流排,最開始採用A後綴主要是為了區別早期同頻的Willamette核心的Pentium 4。對應的應該是512K二級緩存400MHz的前端匯流排,而Willamette則是256K的二級緩存400HMz的前端匯流排。
「B」則代表533MHz FSB的Northwood核心Pentium 4處理器,對應的是512K二級緩存,533MHz的前端匯流排。「C」代表的是採用Northwood核心的前端匯流排為800MHz的Pentium 4處理器,對應512K二級緩存800MHz前端匯流排。「E」則是基於Socket 478架構的Prescott核心Pentium 4處理器,具備1MB二級緩存,對應的是1M二級緩存800MHz前端匯流排。
對於普通用戶而言,相同頻率不同後綴的Pentium 4性能可以簡單地排列為「E>C>B>A」的順序來排列,但也存在例外,比如Prescott核心處理器有兩款也採用「A」標識,分別是2.4A和2.8A,它們不支持超線程且都是1MB二級緩存533MHz前端匯流排規格,而不是Northwood核心,所以這個方法只能作為簡單的參考。

並且478針的處理器已經被淘汰,以後的這些後綴名也和我們說再見了,這里我們只需要了解一下就行了。
這樣一顆CPU外殼上的各種編碼信息我們基本上就破譯完了,了解這些知識後,雖說對我們普通用戶沒有太大用處,但是當我們了解了這些編碼的意思後,我們在購買CPU或者幫助朋友挑選CPU時,就可以不去聽一些JS的左右,我們可以直接拿起一顆處理器,從主頻到緩存,到外頻,甚至是工作電壓,步進,工藝等滔滔不絕的說出來。
絕對會被JS們當作是一個行家,因為你所說的這些可能有的連他自己都不了解,JS自己就會打消用假貨,或者其他型號來蒙我們,同時也可以讓你在朋友面前小露一手,肯定也很有面子。

4. 用intel fortran編譯的程序,結果為什麼不自動換行怎麼樣調整

這是輸出文件?可以調整輸出的格式。有個控制換行的變數,advance=yes/no來控制。

5. intel匯編語言課程設計

intel匯編語言課程設計:編密碼
要求: 按照以下規律編密碼:字母A變為E,a變為e,即變成其他的第一4個字母,W變A,X變B,Y變C,Z變為D,非字母不變。如「CHINA」變為「GLMRE!」

; 本程序通過編譯,運行正確
Code Segment
Assume CS:Code,DS:Code
; -----------------------------------------
; 功能:顯示指定地址(Str_Addr)的字元串
; 入口:
; Str_Addr=字元串地址(要求在數據段)

; 用法: Output Str_Addr
; 用法舉例:Output PromptStr
Output MACRO Str_Addr
lea dx,Str_Addr
mov ah,9
int 21h
EndM
; -----------------------------------------
Prompt_Str db 'Please input a string: $'
Prompt_Str1 db 13,10,'The encoded string: $'
Press_Key db 13,10,13,10,'Press any key to exit...$'
Start: push cs
pop ds
push cs
pop es
Output Prompt_Str ;提示輸入字元串
lea dx,Buffer ;字元串緩沖區地址
mov ah,0ah ;dos功能調用0ah號功能:輸入字元串
int 21h
lea si,Buffer[1] ;實際輸入的字元個數地址
lodsb ;讀入實際輸入的字元個數
test al,0ffh
jz Exit_Proc ;若直接回車,未輸入任何字元,則結束程序,返回操作系統
xor ah,ah ;累加器高位位元組清零
mov cx,ax
@@Encoding: lodsb ;讀入一個字元
mov ah,al
and ah,0dfh ;假定這個字元為字母,將小寫變為大寫
cmp ah,'A'
jb @@Next_Chr ;不是字母,不加密
cmp ah,'Z'
ja @@Next_Chr ;不是字母,不加密
add al,4 ;加密
mov ah,al
and ah,0dfh
cmp ah,'Z' ;加密後的字元超出字母範圍?
jbe $+4 ;否,轉去將加密後的字元寫回原位置
sub al,26 ;調整
mov [si-1],al ;加密後的字元寫回原位置
@@Next_Chr: loop @@Encoding
mov byte ptr [si],'$' ;將這個字元串以$符結尾,准備用dos功能調用9號功能顯示這個字元串
Output Prompt_Str1 ;提示顯示加密後的字元串
Output Buffer[2] ;顯示加密後的字元串
Output Press_Key
mov ah,1
int 21h
Exit_Proc: mov ah,4ch ;結束程序
int 21h
Buffer db 255,? ;字元串緩沖區
Code ENDS
END Start ;編譯到此結束

6. 什麼是英特爾代碼

什麼信號都寫的很清楚啊

是p4就寫p4,只是p4有很多不同型號、參數,那些數字都是參數

CPU參數解釋
1.主頻

主頻也叫時鍾頻率,單位是MHz,用來表示CPU的運算速度。CPU的主頻=外頻×倍頻系數。很多人認為主頻就決定著CPU的運行速度,這不僅是個片面的,而且對於伺服器來講,這個認識也出現了偏差。至今,沒有一條確定的公式能夠實現主頻和實際的運算速度兩者之間的數值關系,即使是兩大處理器廠家Intel和 AMD,在這點上也存在著很大的爭議,我們從Intel的產品的發展趨勢,可以看出Intel很注重加強自身主頻的發展。像其他的處理器廠家,有人曾經拿過一快1G的全美達來做比較,它的運行效率相當於2G的Intel處理器。

所以,CPU的主頻與CPU實際的運算能力是沒有直接關系的,主頻表示在CPU內數字脈沖信號震盪的速度。在Intel的處理器產品中,我們也可以看到這樣的例子:1 GHz Itanium晶元能夠表現得差不多跟2.66 GHz Xeon/Opteron一樣快,或是1.5 GHz Itanium 2大約跟4 GHz Xeon/Opteron一樣快。CPU的運算速度還要看CPU的流水線的各方面的性能指標。

當然,主頻和實際的運算速度是有關的,只能說主頻僅僅是CPU性能表現的一個方面,而不代表CPU的整體性能。

2.外頻

外頻是CPU的基準頻率,單位也是MHz。CPU的外頻決定著整塊主板的運行速度。說白了,在台式機中,我們所說的超頻,都是超CPU的外頻(當然一般情況下,CPU的倍頻都是被鎖住的)相信這點是很好理解的。但對於伺服器CPU來講,超頻是絕對不允許的。前面說到CPU決定著主板的運行速度,兩者是同步運行的,如果把伺服器CPU超頻了,改變了外頻,會產生非同步運行,(台式機很多主板都支持非同步運行)這樣會造成整個伺服器系統的不穩定。

目前的絕大部分電腦系統中外頻也是內存與主板之間的同步運行的速度,在這種方式下,可以理解為CPU的外頻直接與內存相連通,實現兩者間的同步運行狀態。外頻與前端匯流排(FSB)頻率很容易被混為一談,下面的前端匯流排介紹我們談談兩者的區別。

3.前端匯流排(FSB)頻率

前端匯流排(FSB)頻率(即匯流排頻率)是直接影響CPU與內存直接數據交換速度。有一條公式可以計算,即數據帶寬=(匯流排頻率×數據帶寬)/8,數據傳輸最大帶寬取決於所有同時傳輸的數據的寬度和傳輸頻率。比方,現在的支持64位的至強Nocona,前端匯流排是800MHz,按照公式,它的數據傳輸最大帶寬是6.4GB/秒。

外頻與前端匯流排(FSB)頻率的區別:前端匯流排的速度指的是數據傳輸的速度,外頻是CPU與主板之間同步運行的速度。也就是說,100MHz外頻特指數字脈沖信號在每秒鍾震盪一千萬次;而100MHz前端匯流排指的是每秒鍾CPU可接受的數據傳輸量是100MHz×64bit÷8Byte/bit=800MB/s。

其實現在 「HyperTransport」構架的出現,讓這種實際意義上的前端匯流排(FSB)頻率發生了變化。之前我們知道IA-32架構必須有三大重要的構件:內存控制器Hub (MCH) ,I/O控制器Hub和PCI Hub,像Intel很典型的晶元組 Intel 7501、Intel7505晶元組,為雙至強處理器量身定做的,它們所包含的MCH為CPU提供了頻率為533MHz的前端匯流排,配合DDR內存,前端匯流排帶寬可達到4.3GB/秒。但隨著處理器性能不斷提高同時給系統架構帶來了很多問題。而「HyperTransport」構架不但解決了問題,而且更有效地提高了匯流排帶寬,比方AMD Opteron處理器,靈活的HyperTransport I/O匯流排體系結構讓它整合了內存控制器,使處理器不通過系統匯流排傳給晶元組而直接和內存交換數據。這樣的話,前端匯流排(FSB)頻率在AMD Opteron處理器就不知道從何談起了。

4、CPU的位和字長

位:在數字電路和電腦技術中採用二進制,代碼只有「0」和「1」,其中無論是 「0」或是「1」在CPU中都是 一「位」。

字長:電腦技術中對CPU在單位時間內(同一時間)能一次處理的二進制數的位數叫字長。所以能處理字長為8位數據的CPU通常就叫8位的CPU。同理 32位的CPU就能在單位時間內處理字長為32位的二進制數據。位元組和字長的區別:由於常用的英文字元用8位二進制就可以表示,所以通常就將8位稱為一個位元組。字長的長度是不固定的,對於不同的CPU、字長的長度也不一樣。8位的CPU一次只能處理一個位元組,而32位的CPU一次就能處理4個位元組,同理字長為64位的CPU一次可以處理8個位元組。

5.倍頻系數

倍頻系數是指CPU主頻與外頻之間的相對比例關系。在相同的外頻下,倍頻越高CPU的頻率也越高。但實際上,在相同外頻的前提下,高倍頻的CPU本身意義並不大。這是因為CPU與系統之間數據傳輸速度是有限的,一味追求高倍頻而得到高主頻的CPU就會出現明顯的「瓶頸」效應—CPU從系統中得到數據的極限速度不能夠滿足CPU運算的速度。一般除了工程樣版的Intel的CPU都是鎖了倍頻的,而AMD之前都沒有鎖。

6.緩存

緩存大小也是CPU的重要指標之一,而且緩存的結構和大小對CPU速度的影響非常大,CPU內緩存的運行頻率極高,一般是和處理器同頻運作,工作效率遠遠大於系統內存和硬碟。實際工作時,CPU往往需要重復讀取同樣的數據塊,而緩存容量的增大,可以大幅度提升CPU內部讀取數據的命中率,而不用再到內存或者硬碟上尋找,以此提高系統性能。但是由於CPU晶元面積和成本的因素來考慮,緩存都很小。

L1 Cache(一級緩存)是CPU第一層高速緩存,分為數據緩存和指令緩存。內置的L1高速緩存的容量和結構對CPU的性能影響較大,不過高速緩沖存儲器均由靜態RAM組成,結構較復雜,在CPU管芯面積不能太大的情況下,L1級高速緩存的容量不可能做得太大。一般伺服器CPU的L1緩存的容量通常在32— 256KB。

L2 Cache(二級緩存)是CPU的第二層高速緩存,分內部和外部兩種晶元。內部的晶元二級緩存運行速度與主頻相同,而外部的二級緩存則只有主頻的一半。L2高速緩存容量也會影響CPU的性能,原則是越大越好,現在家庭用CPU容量最大的是512KB,而伺服器和工作站上用CPU的L2高速緩存更高達256-1MB,有的高達2MB或者3MB。

L3 Cache(三級緩存),分為兩種,早期的是外置,現在的都是內置的。而它的實際作用即是,L3緩存的應用可以進一步降低內存延遲,同時提升大數據量計算時處理器的性能。降低內存延遲和提升大數據量計算能力對游戲都很有幫助。而在伺服器領域增加L3緩存在性能方面仍然有顯著的提升。比方具有較大L3緩存的配置利用物理內存會更有效,故它比較慢的磁碟I/O子系統可以處理更多的數據請求。具有較大L3緩存的處理器提供更有效的文件系統緩存行為及較短消息和處理器隊列長度。

其實最早的L3緩存被應用在AMD發布的K6-III處理器上,當時的L3緩存受限於製造工藝,並沒有被集成進晶元內部,而是集成在主板上。在只能夠和系統匯流排頻率同步的L3緩存同主內存其實差不了多少。後來使用L3緩存的是英特爾為伺服器市場所推出的 Itanium處理器。接著就是P4EE和至強MP。Intel還打算推出一款9MB L3緩存的Itanium2處理器,和以後24MB L3緩存的雙核心Itanium2處理器。

但基本上L3緩存對處理器的性能提高顯得不是很重要,比方配備1MB L3緩存的Xeon MP處理器卻仍然不是Opteron的對手,由此可見前端匯流排的增加,要比緩存增加帶來更有效的性能提升。

7.CPU擴展指令集

CPU依靠指令來計算和控制系統,每款CPU在設計時就規定了一系列與其硬體電路相配合的指令系統。指令的強弱也是CPU的重要指標,指令集是提高微處理器效率的最有效工具之一。從現階段的主流體系結構講,指令集可分為復雜指令集和精簡指令集兩部分,而從具體運用看,如Intel的MMX(Multi Media Extended)、SSE、 SSE2(Streaming-Single instruction multiple data-Extensions 2)、SEE3和AMD的3DNow!等都是CPU的擴展指令集,分別增強了CPU的多媒體、圖形圖象和Internet等的處理能力。我們通常會把 CPU的擴展指令集稱為"CPU的指令集"。SSE3指令集也是目前規模最小的指令集,此前MMX包含有57條命令,SSE包含有50條命令,SSE2包含有144條命令,SSE3包含有13條命令。目前SSE3也是最先進的指令集,英特爾Prescott處理器已經支持SSE3指令集,AMD會在未來雙核心處理器當中加入對SSE3指令集的支持,全美達的處理器也將支持這一指令集。

8.CPU內核和I/O工作電壓

從586CPU開始,CPU的工作電壓分為內核電壓和I/O電壓兩種,通常CPU的核心電壓小於等於I/O電壓。其中內核電壓的大小是根據CPU的生產工藝而定,一般製作工藝越小,內核工作電壓越低;I/O電壓一般都在1.6~5V。低電壓能解決耗電過大和發熱過高的問題。

9.製造工藝

製造工藝的微米是指IC內電路與電路之間的距離。製造工藝的趨勢是向密集度愈高的方向發展。密度愈高的IC電路設計,意味著在同樣大小面積的IC中,可以擁有密度更高、功能更復雜的電路設計。現在主要的180nm、130nm、90nm。最近官方已經表示有65nm的製造工藝了。

10.指令集

(1)CISC指令集

CISC指令集,也稱為復雜指令集,英文名是CISC,(Complex Instruction Set Computer的縮寫)。在CISC微處理器中,程序的各條指令是按順序串列執行的,每條指令中的各個操作也是按順序串列執行的。順序執行的優點是控制簡單,但計算機各部分的利用率不高,執行速度慢。其實它是英特爾生產的x86系列(也就是IA-32架構)CPU及其兼容CPU,如AMD、VIA的。即使是現在新起的X86-64(也被成AMD64)都是屬於CISC的范疇。

要知道什麼是指令集還要從當今的X86架構的CPU說起。X86指令集是Intel為其第一塊16位CPU(i8086)專門開發的,IBM1981年推出的世界第一台PC機中的 CPU—i8088(i8086簡化版)使用的也是X86指令,同時電腦中為提高浮點數據處理能力而增加了X87晶元,以後就將X86指令集和X87指令集統稱為X86指令集。

雖然隨著CPU技術的不斷發展,Intel陸續研製出更新型的i80386、i80486直到過去的 PII至強、PIII至強、Pentium 3,最後到今天的Pentium 4系列、至強(不包括至強Nocona),但為了保證電腦能繼續運行以往開發的各類應用程序以保護和繼承豐富的軟體資源,所以Intel公司所生產的所有 CPU仍然繼續使用X86指令集,所以它的CPU仍屬於X86系列。由於Intel X86系列及其兼容CPU(如AMD Athlon MP、)都使用X86指令集,所以就形成了今天龐大的X86系列及兼容CPU陣容。x86CPU目前主要有intel的伺服器CPU和AMD的伺服器 CPU兩類。

(2)RISC指令集

RISC是英文「Reced Instruction Set Computing 」 的縮寫,中文意思是「精簡指令集」。它是在CISC指令系統基礎上發展起來的,有人對CISC機進行測試表明,各種指令的使用頻度相當懸殊,最常使用的是一些比較簡單的指令,它們僅占指令總數的20%,但在程序中出現的頻度卻佔80%。復雜的指令系統必然增加微處理器的復雜性,使處理器的研製時間長,成本高。並且復雜指令需要復雜的操作,必然會降低計算機的速度。基於上述原因,20世紀80年代RISC型CPU誕生了,相對於CISC型CPU ,RISC型CPU不僅精簡了指令系統,還採用了一種叫做「超標量和超流水線結構」,大大增加了並行處理能力。RISC指令集是高性能CPU的發展方向。它與傳統的CISC(復雜指令集)相對。相比而言,RISC的指令格式統一,種類比較少,定址方式也比復雜指令集少。當然處理速度就提高很多了。目前在中高檔伺服器中普遍採用這一指令系統的CPU,特別是高檔伺服器全都採用RISC指令系統的CPU。RISC指令系統更加適合高檔伺服器的操作系統 UNIX,現在Linux也屬於類似UNIX的操作系統。RISC型CPU與Intel和AMD的CPU在軟體和硬體上都不兼容。

目前,在中高檔伺服器中採用RISC指令的CPU主要有以下幾類:PowerPC處理器、SPARC處理器、PA-RISC處理器、MIPS處理器、Alpha處理器。

(3)IA-64

EPIC(Explicitly Parallel Instruction Computers,精確並行指令計算機)是否是RISC和CISC體系的繼承者的爭論已經有很多,單以EPIC體系來說,它更像Intel的處理器邁向 RISC體系的重要步驟。從理論上說,EPIC體系設計的CPU,在相同的主機配置下,處理Windows的應用軟體比基於Unix下的應用軟體要好得多。

Intel採用EPIC技術的伺服器CPU是安騰Itanium(開發代號即Merced)。它是 64位處理器,也是IA-64系列中的第一款。微軟也已開發了代號為Win64的操作系統,在軟體上加以支持。在Intel採用了X86指令集之後,它又轉而尋求更先進的64-bit微處理器,Intel這樣做的原因是,�竅氚諭訝萘烤藪蟮膞86架構,從而引入精力充沛而又功能強大的指令集,於是採用 EPIC指令集的IA-64架構便誕生了。IA-64 在很多方面來說,都比x86有了長足的進步。突破了傳統IA32架構的許多限制,在數據的處理能力,系統的穩定性、安全性、可用性、可觀理性等方面獲得了突破性的提高。

IA-64微處理器最大的缺陷是它們缺乏與x86的兼容,而Intel為了IA-64處理器能夠更好地運行兩個朝代的軟體,它在IA-64處理器上(Itanium、Itanium2 ……)引入了x86-to-IA-64的解碼器,這樣就能夠把x86指令翻譯為IA-64指令。這個解碼器並不是最有效率的解碼器,也不是運行x86代碼的最好途徑(最好的途徑是直接在x86處理器上運行x86代碼),因此Itanium 和Itanium2在運行x86應用程序時候的性能非常糟糕。這也成為X86-64產生的根本原因。

(4)X86-64 (AMD64 / EM64T)

AMD公司設計,可以在同一時間內處理64位的整數運算,並兼容於X86-32架構。其中支持64位邏輯定址,同時提供轉換為32位定址選項;但數據操作指令默認為32位和8位,提供轉換成64位和16位的選項;支持常規用途寄存器,如果是32位運算操作,就要將結果擴展成完整的64位。這樣,指令中有 「直接執行」和「轉換執行」的區別,其指令欄位是8位或32位,可以避免欄位過長。

x86-64(也叫AMD64)的產生也並非空穴來風,x86處理器的32bit定址空間限制在4GB內存,而IA-64的處理器又不能兼容x86。AMD充分考慮顧客的需求,加強x86指令集的功能,使這套指令集可同時支持64位的運算模式,因此AMD把它們的結構稱之為x86-64。在技術上AMD在x86-64架構中為了進行64位運算,AMD為其引入了新增了R8-R15通用寄存器作為原有X86處理器寄存器的擴充,但在而在32位環境下並不完全使用到這些寄存器。原來的寄存器諸如EAX、EBX也由32位擴張至64位。在SSE單元中新加入了8個新寄存器以提供對SSE2的支持。寄存器數量的增加將帶來性能的提升。與此同時,為了同時支持32和64位代碼及寄存器,x86-64架構允許處理器工作在以下兩種模式:Long Mode(長模式)和Legacy Mode(遺傳模式),Long模式又分為兩種子模式(64bit模式和Compatibility mode兼容模式)。該標准已經被引進在AMD伺服器處理器中的Opteron處理器。

而今年也推出了支持64位的EM64T技術,再還沒被正式命為EM64T之前是IA32E,這是英特爾64位擴展技術的名字,用來區別X86指令集。Intel的 EM64T支持64位sub-mode,和AMD的X86-64技術類似,採用64位的線性平面定址,加入8個新的通用寄存器(GPRs),還增加8個寄存器支持SSE指令。與AMD相類似,Intel的64位技術將兼容IA32和IA32E,只有在運行64位操作系統下的時候,才將會採用IA32E。 IA32E將由2個sub-mode組成:64位sub-mode和32位sub-mode,同AMD64一樣是向下兼容的。Intel的EM64T將完全兼容AMD的X86-64技術。現在Nocona處理器已經加入了一些64位技術,Intel的Pentium 4E處理器也支持64位技術。

應該說,這兩者都是兼容x86指令集的64位微處理器架構,但EM64T與AMD64還是有一些不一樣的地方,AMD64處理器中的NX位在Intel的處理器中將沒有提供。

11.超流水線與超標量

在解釋超流水線與超標量前,先了解流水線(pipeline)。流水線是Intel首次在486晶元中開始使用的。流水線的工作方式就象工業生產上的裝配流水線。在CPU中由5—6個不同功能的電路單元組成一條指令處理流水線,然後將一條X86指令分成5—6步後再由這些電路單元分別執行,這樣就能實現在一個CPU時鍾周期完成一條指令,因此提高CPU的運算速度。經典奔騰每條整數流水線都分為四級流水,即指令預取、解碼、執行、寫回結果,浮點流水又分為八級流水。

超標量是通過內置多條流水線來同時執行多個處理器,其實質是以空間換取時間。而超流水線是通過細化流水、提高主頻,使得在一個機器周期內完成一個甚至多個操作,其實質是以時間換取空間。例如Pentium 4的流水線就長達20級。將流水線設計的步(級)越長,其完成一條指令的速度越快,因此才能適應工作主頻更高的CPU。但是流水線過長也帶來了一定副作用,很可能會出現主頻較高的CPU實際運算速度較低的現象,Intel的奔騰4就出現了這種情況,雖然它的主頻可以高達1.4G以上,但其運算性能卻遠遠比不上AMD 1.2G的速龍甚至奔騰III。

12.封裝形式

CPU封裝是採用特定的材料將CPU晶元或CPU模塊固化在其中以防損壞的保護措施,一般必須在封裝後CPU才能交付用戶使用。CPU的封裝方式取決於CPU安裝形式和器件集成設計,從大的分類來看通常採用Socket插座進行安裝的CPU使用PGA(柵格陣列)方式封裝,而採用Slot x槽安裝的CPU則全部採用SEC(單邊接插盒)的形式封裝。現在還有PLGA(Plastic Land Grid Array)、OLGA(Organic Land Grid Array)等封裝技術。由於市場競爭日益激烈,目前CPU封裝技術的發展方向以節約成本為主。

13、多線程

同時多線程Simultaneous multithreading,簡稱SMT。SMT可通過復制處理器上的結構狀態,讓同一個處理器上的多個線程同步執行並共享處理器的執行資源,可最大限度地實現寬發射、亂序的超標量處理,提高處理器運算部件的利用率,緩和由於數據相關或Cache未命中帶來的訪問內存延時。當沒有多個線程可用時,SMT 處理器幾乎和傳統的寬發射超標量處理器一樣。SMT最具吸引力的是只需小規模改變處理器核心的設計,幾乎不用增加額外的成本就可以顯著地提升效能。多線程技術則可以為高速的運算核心准備更多的待處理數據,減少運算核心的閑置時間。這對於桌面低端系統來說無疑十分具有吸引力。Intel從3.06GHz Pentium 4開始,所有處理器都將支持SMT技術。

14、多核心

多核心,也指單晶元多處理器(Chip multiprocessors,簡稱CMP)。CMP是由美國斯坦福大學提出的,其思想是將大規模並行處理器中的SMP(對稱多處理器)集成到同一晶元內,各個處理器並行執行不同的進程。與CMP比較, SMT處理器結構的靈活性比較突出。但是,當半導體工藝進入0.18微米以後,線延時已經超過了門延遲,要求微處理器的設計通過劃分許多規模更小、局部性更好的基本單元結構來進行。相比之下,由於CMP結構已經被劃分成多個處理器核來設計,每個核都比較簡單,有利於優化設計,因此更有發展前途。目前, IBM 的Power 4晶元和Sun的 MAJC5200晶元都採用了CMP結構。多核處理器可以在處理器內部共享緩存,提高緩存利用率,同時簡化多處理器系統設計的復雜度。

2005年下半年,Intel和AMD的新型處理器也將融入CMP結構。新安騰處理器開發代碼為Montecito,採用雙核心設計,擁有最少18MB 片內緩存,採取90nm工藝製造,它的設計絕對稱得上是對當今晶元業的挑戰。它的每個單獨的核心都擁有獨立的L1,L2和L3 cache,包含大約10億支晶體管。

15、SMP

SMP (Symmetric Multi-Processing),對稱多處理結構的簡稱,是指在一個計算機上匯集了一組處理器(多CPU),各CPU之間共享內存子系統以及匯流排結構。在這種技術的支持下,一個伺服器系統可以同時運行多個處理器,並共享內存和其他的主機資源。像雙至強,也就是我們所說的二路,這是在對稱處理器系統中最常見的一種(至強MP可以支持到四路,AMD Opteron可以支持1-8路)。也有少數是16路的。但是一般來講,SMP結構的機器可擴展性較差,很難做到100個以上多處理器,常規的一般是8個到16個,不過這對於多數的用戶來說已經夠用了。在高性能伺服器和工作站級主板架構中最為常見,像UNIX伺服器可支持最多256個CPU的系統。

構建一套SMP系統的必要條件是:支持SMP的硬體包括主板和CPU;支持SMP的系統平台,再就是支持SMP的應用軟體。

為了能夠使得SMP系統發揮高效的性能,操作系統必須支持SMP系統,如WINNT、LINUX、以及UNIX等等32位操作系統。即能夠進行多任務和多線程處理。多任務是指操作系統能夠在同一時間讓不同的CPU完成不同的任務;多線程是指操作系統能夠使得不同的CPU並行的完成同一個任務。

要組建SMP系統,對所選的CPU有很高的要求,首先、CPU內部必須內置APIC(Advanced Programmable Interrupt Controllers)單元。Intel 多處理規范的核心就是高級可編程中斷控制器(Advanced Programmable Interrupt Controllers--APICs)的使用;再次,相同的產品型號,同樣類型的CPU核心,完全相同的運行頻率;最後,盡可能保持相同的產品序列編號,因為兩個生產批次的CPU作為雙處理器運行的時候,有可能會發生一顆CPU負擔過高,而另一顆負擔很少的情況,無法發揮最大性能,更糟糕的是可能導致死機。

16、NUMA技術

NUMA即非一致訪問分布共享存儲技術,它是由若干通過高速專用網路連接起來的獨立節點構成的系統,各個節點可以是單個的CPU或是SMP系統。在NUMA中,Cache 的一致性有多種解決方案,需要操作系統和特殊軟體的支持。圖2中是Sequent公司NUMA系統的例子。這里有3個SMP模塊用高速專用網路聯起來,組成一個節點,每個節點可以有12個CPU。像Sequent的系統最多可以達到64個CPU甚至256個CPU。顯然,這是在SMP的基礎上,再用 NUMA的技術加以擴展,是這兩種技術的結合。

17、亂序執行技術

亂序執行(out-of-orderexecution),是指CPU允許將多條指令不按程序規定的順序分開發送給各相應電路單元處理的技術。這樣將根據個電路單元的狀態和各指令能否提前執行的具體情況分析後,將能提前執行的指令立即發送給相應電路單元執行,在這期間不按規定順序執行指令,然後由重新排列單元將各執行單元結果按指令順序重新排列。採用亂序執行技術的目的是為了使CPU內部電路滿負荷運轉並相應提高了CPU的運行程序的速度。分枝技術:(branch)指令進行運算時需要等待結果,一般無條件分枝只需要按指令順序執行,而條件分枝必須根據處理後的結果,再決定是否按原先順序進行。

18、CPU內部的內存控制器

許多應用程序擁有更為復雜的讀取模式(幾乎是隨機地,特別是當cache hit不可預測的時候),並且沒有有效地利用帶寬。典型的這類應用程序就是業務處理軟體,即使擁有如亂序執行(out of order execution)這樣的CPU特性,也會受內存延遲的限制。這樣CPU必須得等到運算所需數據被除數裝載完成才能執行指令(無論這些數據來自CPU cache還是主內存系統)。當前低段系統的內存延遲大約是120-150ns,而CPU速度則達到了3GHz以上,一次單獨的內存請求可能會浪費200 -300次CPU循環。即使在緩存命中率(cache hit rate)達到99%的情況下,CPU也可能會花50%的時間來等待內存請求的結束-比如因為內存延遲的緣故。

你可以看到Opteron整合的內存控制器,它的延遲,與晶元組支持雙通道DDR內存控制器的延遲相比來說,是要低很多的。英特爾也按照計劃的那樣在處理器內部整合內存控制器,這樣導致北橋晶元將變得不那麼重要。但改變了處理器訪問主存的方式,有助於提高帶寬、降低內存延時和提升處理器性能

7. 如何讓編譯器將特殊符號(比如)視為字元常量輸出

通常情況下,再特殊符號前邊加字元'\',如果要輸出的是「%d」則要在前面加上字元'%'

8. 中如下的編譯選項什麼意思

1.編譯目標文件
icc -c -offload-attribute-target=mic -O3 -openmp -std=c99 -DMKL_ILP64 -I/opt/intel/composer_xe_2013_sp1.1.106/mkl/include fft.c -o fft_new.o
2.連接產生可執行文件
icc fft_new.o -openmp -Wl,--start-group /opt/intel/composer_xe_2013_sp1.2.144/mkl/lib/intel64/libmkl_intel_ilp64.a /opt/intel/composer_xe_2013_sp1.2.144/mkl/lib/intel64/libmkl_intel_thread.a /opt/intel/composer_xe_2013_sp1.2.144/mkl/lib/intel64/libmkl_core.a -Wl,--end-group -Ip-offload-option,mic,compiler,"-Wl,--start-group /opt/intel/composer_xe_2013_sp1.2.144/mkl/lib/mic/libmkl_intel_ilp64.a /opt/intel/composer_xe_2013mkl/lib/mic/libmkl_intel_thread.a /opt/intel/composer_xe_2013_sp1.2.144/mkl/lib/mic/libmkl_core.a -Wl,--end-group" -o fft_new.out
這里的東西較多,看上去比較復雜。
1.對於第一步,編譯出目標文件。這裡面的幾個編譯選項:
-O3 :表示最大可能優化級別。各種循環優化都執行了,並且各種文件級性質也用來改善性能
-openmp:採用了openmp並行編程
-std=c99:ANSI C是89年成為了標准,被ISO認證。之後99年ISO更新了新的C標准。所以-std用來指明編譯的C標准。在某些情況下,如果使用GCC,可能在有沖突的時候使用其他標准,比如:-std=gnu89
-DMKL_ILP64:這個是intel提供的編譯選項,主要是一個平台的指示。
-I:指定頭文件目錄
-o:重命名。
2.對於第二步,鏈接過程。其中幾個編譯選項:
-openmp:同上
-Wl:Wl選項告訴編譯器將後面的參數傳遞給鏈接器。
--start-group 和--stop-group:庫文件參數傳遞的開始和結束。
--offload-option,mic:使用offload方式使用協處理器進行運算
轉自CSDN社區beglorious的專欄

9. 【100分】intel C++編譯器的hello world無法編譯,詢問原因

Linux不是自帶編譯器的么?
G++和GCC都能用啊
你這個應該是改環境變數的,有個是類似於windows里加入「bin目錄」的一個設定,而且還要給出相應的許可權才可以。一般在LINUX下都不會去用root許可權的吧,在root許可權下把許可權給出
你把整個bin目錄都放到環境變數試試
加入這段
PATH=/opt/intel/cc/10.1.022/bin

我一年前在實驗機上用過linux。。。。許可權的命令忘記掉了,不行就google一下吧

10. pgi visal fortran 怎麼使用IMSL庫

如果要用IMSL,那必須使用獨立安裝版本的IMSL。因為兩個都可以綁定到VS,所以應該可以使用的:)

閱讀全文

與intel編譯庫輸出字元相關的資料

熱點內容
c開源cf源碼 瀏覽:947
如何取消掉添加進app資源庫 瀏覽:728
上海政務APP叫什麼 瀏覽:812
黑馬程序員一線薪資 瀏覽:109
滴滴app有青桔優惠券怎麼用 瀏覽:123
刪哪幾個文件夾加速 瀏覽:28
創建電影源碼爬取項目 瀏覽:453
java多餘的空格 瀏覽:83
手機軟體連接雲伺服器 瀏覽:888
內圓弧編程實例 瀏覽:48
餅干pdf 瀏覽:423
kylin源碼大全 瀏覽:687
android構建工具 瀏覽:422
zigy命令行選項不兼容 瀏覽:561
加密系統能錄屏嗎 瀏覽:190
安卓淘寶點進去跳鏈接如何關閉 瀏覽:786
u盤加密了手機讀取不了 瀏覽:947
oracle11g啟動命令 瀏覽:931
怎麼把視頻傳到自己的文件夾 瀏覽:700
福州電動車在哪個app上搖號 瀏覽:818