A. 指令集是什麼啊
CPU依靠指令來計算和控制系統,每款CPU在設計時就規定了一系列與其硬體電路相配合的指令系統。指令的強弱也是CPU的重要指標,指令集是提高微處理器效率的最有效工具之一。從現階段的主流體系結構講,指令集可分為復雜指令集和精簡指令集兩部分,而從具體運用看,如Intel的MMX(Multi Media Extended)、SSE、 SSE2(Streaming-Single instruction multiple data-Extensions 2)和AMD的3DNow!等都是CPU的擴展指令集,分別增強了CPU的多媒體、圖形圖象和Internet等的處理能力。我們通常會把CPU的擴展指令集稱為"CPU的指令集"。
1、精簡指令集的運用
在最初發明計算機的數十年裡,隨著計算機功能日趨增大,性能日趨變強,內部元器件也越來越多,指令集日趨復雜,過於冗雜的指令嚴重的影響了計算機的工作效率。後來經過研究發現,在計算機中,80%程序只用到了20%的指令集,基於這一發現,RISC精簡指令集被提了出來,這是計算機系統架構的一次深刻革命。RISC體系結構的基本思路是:抓住CISC指令系統指令種類太多、指令格式不規范、定址方式太多的缺點,通過減少指令種類、規范指令格式和簡化定址方式,方便處理器內部的並行處理,提高VLSI器件的使用效率,從而大幅度地提高處理器的性能。
RISC指令集有許多特徵,其中最重要的有:
指令種類少,指令格式規范:RISC指令集通常只使用一種或少數幾種格式。指令長度單一(一般4個位元組),並且在字邊界上對齊,欄位位置、特別是操作碼的位置是固定的。
定址方式簡化:幾乎所有指令都使用寄存器定址方式,定址方式總數一般不超過5個。其他更為復雜的定址方式,如間接定址等則由軟體利用簡單的定址方式來合成。
大量利用寄存器間操作:RISC指令集中大多數操作都是寄存器到寄存器操作,只以簡單的Load和Store操作訪問內存。因此,每條指令中訪問的內存地址不會超過1個,訪問內存的操作不會與算術操作混在一起。
簡化處理器結構:使用RISC指令集,可以大大簡化處理器的控制器和其他功能單元的設計,不必使用大量專用寄存器,特別是允許以硬體線路來實現指令操作,而不必像CISC處理器那樣使用微程序來實現指令操作。因此RISC處理器不必像CISC處理器那樣設置微程序控制存儲器,就能夠快速地直接執行指令。
便於使用VLSI技術:隨著LSI和VLSI技術的發展,整個處理器(甚至多個處理器)都可以放在一個晶元上。RISC體系結構可以給設計單晶元處理器帶來很多好處,有利於提高性能,簡化VLSI晶元的設計和實現。基於VLSI技術,製造RISC處理器要比CISC處理器工作量小得多,成本也低得多。
加強了處理器並行能力:RISC指令集能夠非常有效地適合於採用流水線、超流水線和超標量技術,從而實現指令級並行操作,提高處理器的性能。目前常用的處理器內部並行操作技術基本上是基於RISC體系結構發展和走向成熟的。
正由於RISC體系所具有的優勢,它在高端系統得到了廣泛的應用,而CISC體系則在桌面系統中占據統治地位。而在如今,在桌面領域,RISC也不斷滲透,預計未來,RISC將要一統江湖。
2、CPU的擴展指令集
對於CPU來說,在基本功能方面,它們的差別並不太大,基本的指令集也都差不多,但是許多廠家為了提升某一方面性能,又開發了擴展指令集,擴展指令集定義了新的數據和指令,能夠大大提高某方面數據處理能力,但必需要有軟體支持。
MMX 指令集
MMX(Multi Media eXtension,多媒體擴展指令集)指令集是Intel公司於1996年推出的一項多媒體指令增強技術。MMX指令集中包括有57條多媒體指令,通過這些指令可以一次處理多個數據,在處理結果超過實際處理能力的時候也能進行正常處理,這樣在軟體的配合下,就可以得到更高的性能。MMX的益處在於,當時存在的操作系統不必為此而做出任何修改便可以輕松地執行MMX程序。但是,問題也比較明顯,那就是MMX指令集與x87浮點運算指令不能夠同時執行,必須做密集式的交錯切換才可以正常執行,這種情況就勢必造成整個系統運行質量的下降。
SSE指令集
SSE(Streaming SIMD Extensions,單指令多數據流擴展)指令集是Intel在Pentium III處理器中率先推出的。其實,早在PIII正式推出之前,Intel公司就曾經通過各種渠道公布過所謂的KNI(Katmai New Instruction)指令集,這個指令集也就是SSE指令集的前身,並一度被很多傳媒稱之為MMX指令集的下一個版本,即MMX2指令集。究其背景,原來"KNI"指令集是Intel公司最早為其下一代晶元命名的指令集名稱,而所謂的"MMX2"則完全是硬體評論家們和媒體憑感覺和印象對"KNI"的 評價,Intel公司從未正式發布過關於MMX2的消息。
而最終推出的SSE指令集也就是所謂勝出的"互聯網SSE"指令集。SSE指令集包括了70條指令,其中包含提高3D圖形運算效率的50條SIMD(單指令多數據技術)浮點運算指令、12條MMX 整數運算增強指令、8條優化內存中連續數據塊傳輸指令。理論上這些指令對目前流行的圖像處理、浮點運算、3D運算、視頻處理、音頻處理等諸多多媒體應用起到全面強化的作用。SSE指令與3DNow!指令彼此互不兼容,但SSE包含了3DNow!技術的絕大部分功能,只是實現的方法不同。SSE兼容MMX指令,它可以通過SIMD和單時鍾周期並行處理多個浮點數據來有效地提高浮點運算速度。
SSE2指令集
SSE2(Streaming SIMD Extensions 2,Intel官方稱為SIMD 流技術擴展 2或數據流單指令多數據擴展指令集 2)指令集是Intel公司在SSE指令集的基礎上發展起來的。相比於SSE,SSE2使用了144個新增指令,擴展了MMX技術和SSE技術,這些指令提高了廣大應用程序的運行性能。隨MMX技術引進的SIMD整數指令從64位擴展到了128 位,使SIMD整數類型操作的有效執行率成倍提高。雙倍精度浮點SIMD指令允許以 SIMD格式同時執行兩個浮點操作,提供雙倍精度操作支持有助於加速內容創建、財務、工程和科學應用。除SSE2指令之外,最初的SSE指令也得到增強,通過支持多種數據類型(例如,雙字和四字)的算術運算,支持靈活並且動態范圍更廣的計算功能。SSE2指令可讓軟體開發員極其靈活的實施演算法,並在運行諸如MPEG-2、MP3、3D圖形等之類的軟體時增強性能。Intel是從Willamette核心的Pentium 4開始支持SSE2指令集的,而AMD則是從K8架構的SledgeHammer核心的Opteron開始才支持SSE2指令集的。
SSE3指令集
SSE3(Streaming SIMD Extensions 3,Intel官方稱為SIMD 流技術擴展 3或數據流單指令多數據擴展指令集 3)指令集是Intel公司在SSE2指令集的基礎上發展起來的。相比於SSE2,SSE3在SSE2的基礎上又增加了13個額外的SIMD指令。SSE3 中13個新指令的主要目的是改進線程同步和特定應用程序領域,例如媒體和游戲。這些新增指令強化了處理器在浮點轉換至整數、復雜演算法、視頻編碼、SIMD浮點寄存器操作以及線程同步等五個方面的表現,最終達到提升多媒體和游戲性能的目的。Intel是從Prescott核心的Pentium 4開始支持SSE3指令集的,而AMD則是從2005年下半年Troy核心的Opteron開始才支持SSE3的。但是需要注意的是,AMD所支持的SSE3與Intel的SSE3並不完全相同,主要是刪除了針對Intel超線程技術優化的部分指令。
3D Now!(3D no waiting)指令集
3DNow!是AMD公司開發的SIMD指令集,可以增強浮點和多媒體運算的速度,並被AMD廣泛應用於其K6-2 、K6-3以及Athlon(K7)處理器上。3DNow!指令集技術其實就是21條機器碼的擴展指令集。
與Intel公司的MMX技術側重於整數運算有所不同,3DNow!指令集主要針對三維建模、坐標變換 和效果渲染等三維應用場合,在軟體的配合下,可以大幅度提高3D處理性能。後來在Athlon上開發了Enhanced 3DNow!。這些AMD標準的SIMD指令和Intel的SSE具有相同效能。因為受到Intel在商業上以及Pentium III成功的影響,軟體在支持SSE上比起3DNow!更為普遍。Enhanced 3DNow!AMD公司繼續增加至52個指令,包含了一些SSE碼,因而在針對SSE做最佳化的軟體中能獲得更好的效能。
B. 精簡指令集和復雜指令集在指令系統方面的主要區別
不知道各位是不是程序員,下面以程序員的角度分析一下:
程序員視角:
CISC指令相當於粗粒度的介面,一次能做很多事情,且性能高
RISC指令相當於細粒度的介面,只能做通用的操作,且調用方需要發送更多指令
軟體設計師視角:
CISC指令相當於faced模式,組合了更多的操作
RISC指令相當於抽出的通用方法,組合方式更多,更靈活
其他我知道的知識:
RISC(精簡指令集計算機)
能耗低:不太確定原因,不瞎說了(可以參考上面的老哥的回復).想不通具體原因.
可執行代碼長(佔用空間大):編譯出的可執行代碼很啰嗦,就像上面的老哥回復的一樣.
可用指令少:只實現了常用的指令,精簡指令集
指令長度與執行時間整齊:由於精簡指令,故指令長度設計成整齊的長度,指令執行時間也幾乎都是1個時鍾周期.
CISC(復雜指令集計算機)
能耗高:不確定原因.(猜測可能與寄存器數量有關)
可執行代碼短:可執行代碼很短,因為有粗粒度命令.也就是說,同一段程序,若編譯成RISC和CISC,那CISC的編譯後文件會小很多
可用指令多:實現了更多命令
指令長度與執行時間不整齊:由於指令很多,粒度粗細的都有,(以下 是猜猜)故設計時應將常用的指令設計成短指令,不常用的指令設計成長指令.且由於有粗粒度指令,所以執行的長短無法都規范到一個時鍾周期,有些指令可能會執行很久.
C. 提到程序員,除了代碼你還能想到什麼
程序員跟什麼接觸的時間最多---電腦---是日久生情,還是對電腦產生了一種強烈的依賴,無論是從我還是周圍的朋友,對於這一點我都是深信不疑的,所以導致很多程序員的性格比較內向。提到程序員能讓我想到很多特點,下面一一列舉一下:
5、程序員肚子局部胖的比較快。對於這一點我是身有感觸啊,從我的整體上來看,我不能算是一個胖人,但是當漏出肚皮的時候,你可能會大吃一驚,對於這一點的原因,可能大家也都知道:吃過飯就不動了,在電腦前一做就是幾個小時,肚子能不胖?相信很多辦公室工作者跟我有相同的看法。
不知道大家同意不同意這些特點點,這也僅僅從我個人的角度去看,這些特點對於程序員來說,真的是很普遍,大概歸納些,可能不全面,請諒解!
D. CPU精簡指令集里都有哪些指令呢
你問得都不準確。。。
精簡指令集是一種類型,並不是指具體某一個指令集
MIPS、POWERPC等都有不同的指令,你自己查去
E. cpu的TSX的指令集用來做什麼的為什麼我的i5 4690k沒有這個指令集
Intel的TSX指令集是針對粗細粒度線程鎖定的。在多核多線程處理器中,有一個比較明顯的問題,就是多線程對某一資源都需要調用的時候,需要仲裁。當一個線程調用該資源時,另一線程就無法調用,如果調用了,就會發生錯誤。而如今的程序員,為了防止線程爭搶,發生錯誤,都用粗粒度鎖定——也就是該線程佔用的絕大多數資源,其他線程都不得爭搶。這樣也導致了一些,本不需鎖定的資源,也被鎖定了,其他線程利用不了,降低了多核多線程處理器的多線程性能。TSX指令集就是要讓程序員或開發工具更方便、准確地進行細粒度鎖定,讓資源更有效地使用。對於當今的多核處理器,是個好東西。
但是……Intel前不久發現TSX指令集存在Bug,導致其將消費級市場CPU的TSX指令集全部取消,只保留商用Xeon的……所以,早期的CPU-Z截圖,是有這個TSX指令的,後面的就沒了。
一般對家用影響不大,不用特別擔心。
F. 程序員是干什麼的啊
程序員是寫程序的屬於電腦IT行業。
程序員(英文Programmer)是從事程序開發、維護的專業人員。一般將程序員分為程序設計人員和程序編碼人員。
軟體從業人員分為初級程序員、高級程序員、系統分析員,系統架構師,測試工程師五大類。
一年可報考軟考程序員考試兩次,但一次考試只能報考一種資格,因此報考了程序員考試則無法再報考軟考其他級別或科目的考試。
同時軟考程序員考試採用筆試形式,考試實行全國統一大綱、統一試題、統一時間、統一標准、統一證書的考試方式。
G. 指令集的SSE
SSE指令集
Streaming SIMD Extensions
由於MMX指令並沒有帶來3D游戲性能的顯著提升,1999年Intel公司在Pentium IIICPU產品中推出了數據流單指令序列擴展指令(SSE)。SSE兼容MMX指令,它可以通過SIMD(單指令多數據技術)和單時鍾周期並行處理多個浮點來有效地提高浮點運算速度。
在MMX指令集中,借用了浮點處理器的8個寄存器,這樣導致了浮點運算速度降低。而在SSE指令集推出時,Intel公司在Pentium III CPU中增加了8個128位的SSE指令專用寄存器。而且SSE指令寄存器可以全速運行,保證了與浮點運算的並行性。
SSE2指令集
在Pentium 4 CPU中,Intel公司開發了新指令集SSE2。這一次新開發的SSE2指令一共144條,包括浮點SIMD指令、整形SIMD指令、SIMD浮點和整形數據之間轉換、數據在MMX寄存器中轉換等幾大部分。其中重要的改進包括引入新的數據格式,如:128位SIMD整數運算和64位雙精度浮點運算等。為了更好地利用高速緩存。另外,在Pentium 4中還新增加了幾條緩存指令,允許程序員控制已經緩存過的數據。
SSE3指令集
相對於SSE2,SSE3又新增加了13條新指令,此前它們被統稱為pni(prescott new instructions)。13條指令中,一條用於視頻解碼,兩條用於線程同步,其餘用於復雜的數學運算、浮點到整數轉換和SIMD浮點運算。
SSE4指令集
SSE4又增加了50條新的增加性能的指令,這些指令有助於編譯、媒體、字元/文本處理和程序指向加速。
SSE4指令集將作為Intel公司未來「顯著視頻增強」平台的一部分。該平台的其他視頻增強功能還有Clear Video技術(CVT)和統一顯示介面(UDI)支持等,其中前者是對ATi AVIVO技術的回應,支持高級解碼、後處理和增強型3D功能。
H. 程序員是做什麼的什麼是程序
程序員:
程序員是從事程序開發、程序維護的專業人員。程序員一般需要會做:確認通過審查方案的目標,輸入數據,分析師,監事,和客戶的輸出要求的項目要求。
通常情況下將程序員分為程序設計人員和程序編碼人員,軟體從業人員分為初級程序員、中級程序員、高級程序員(現為軟體設計師)、系統分析員,系統架構師,測試工程師六大類。
程序:
程序是一組計算機能識別和執行的指令,運行於電子計算機上,滿足人們某種需求的信息化工具。以某些程序設計語言編寫,運行於某種目標結構體繫上。
程序就如同以英語(程序設計語言)寫作的文章,要讓一個懂得英語的人(編譯器)同時也會閱讀這篇文章的人(結構體系)來閱讀、理解、標記這篇文章。
(8)程序員指令集高清圖擴展閱讀:
程序員的日常工作:
1、確認通過審查方案的目標,輸入數據,分析師,監事,和客戶的輸出要求的項目要求。
2、安排項目要求在編程序列分析要求;准備工作流程圖和使用計算機知識的能力,題材,編程語言和邏輯圖。
3、編碼工作流程的信息轉換成計算機語言的項目要求。
4、通過輸入編碼信息的計算機程序。
5、確認程序操作進行測試,修改程序序列和/或代碼。
6、准備寫操作指令供用戶參考。
7、保持歷史記錄,通過記錄方案的制定和修訂。
參考鏈接:網路-程序員
網路-程序
I. 提到程序員,除了代碼你還會想到什麼
其實提到程序員吧,會想到什麼呢,我覺得可能會想到代碼,也有可能會想到電腦。也有可能會想到無聊,但是我可能下意識的就會想到那個猝死,原諒我這樣想你們,對不起我也不想的。但是真的下意識的就會想到猝死,可能就是最近特別多的那個猝死的情況會發生吧,而且就是大部分都是你們程序員,我知道你們的生活特別的枯燥,你們那生活還可能就是很無聊。然後可能還是需要特別多的加班,然後飲食不規律啊什麼的,不能按時睡覺啊,然後你們可能猝死的情況就比較多一點兒了,其實我真的是不想這樣想你們的。但是真的下意識的就會想到這樣子,還是希望以後能夠改掉我的這個印象吧,希望你們以後就不要再有這樣的情況發生,其實還是希望你們能夠健健康康的啦!
提到程序員,我可能還會下意識的想到那種。戴個眼鏡也不收拾自己,然後那種臉上可能有點青春痘的男生,原諒我真的沒有在生活當中見過一個真正的程序員,所以我只能好以一些電視劇當中的形象,或者是網上的一些段子啊什麼的,來猜測你們的樣子,其實我可以的話我還是希望咱們國家,可以拍一個關於你們的電視劇或者是電影吧,因為我覺得可能你們的生活有點兒無聊,但是可能會向我們展示一下全面的樣子吧,還有就是你們的工作和你們的生活是分開的那種感覺吧,我還是希望看到如果有一部這樣的電視劇或者是電影出現的話,對比應該還蠻強烈的,我還蠻想看一部關於程序員的電視劇或是電影的。
最後我希望你們真的就是少熬夜,然後希望都能健健康康的吧!
J. 關於CPU指令集,幫我理一下思路。
懸賞真高,盡量詳細作答。
錯誤挺多的嘛,慢慢解釋
註明下面可能用到的一些名詞的意義
micro-arch微架構
ISA指令集架構(指令集)
CPU處理器
HAL硬體抽象層
PLL物理邏輯層
———————————————————————————————————————————————————————————————————————————————————
先說指令集,指令集是一個CPU和軟體之間的介面。他不是一個實物,只是CPU提供給上層軟體的一個抽象。
所以程序員在編程時並不需要了解晶元的布局,只需要知道根據那些指令能完成怎樣的功能就行了(這些指令由CPU執行)。
為了方便理解,我做個比喻會好一些,就像你買來一個燈泡你並不需要知道燈泡裡面的電路時如何布局的,只是簡單的看看說明書,怎樣裝上,怎樣通電就能實現發光的供能了。燈泡好比CPU,ISA就是說明書,人就當程序員(編譯器)的角色。
再來說匯編指令,機器指令的關系,CPU執行的是二進制代碼(這叫機器指令,機器能理解的),匯編就是給人看的,人能理解的,如add,sub指令。
每條匯編指令都有相應的二進制代碼。完成他們之間的轉換是匯編器(現在的匯編器和編譯器是打包在一起的)。
不同的指令集有不同的指令,匯編指令對應的機器碼也不同。在一個指令集中,一條匯編指令對應一條二進制機器碼(圖,mips指令集匯編指令對應的機器指令)
系統是介乎在應用程序層和硬體之間的,作用我也不太清楚,應該是為應用程序分配硬體資源,用哪段內存,什麼時候要使用CPU執行這樣吧??
CPU的指令集所包括含的指令取決於程序員需不需要這些指令,這些指令能不能代替以往的指令使程序執行起來更有效率,說白了就是這條指令有沒有存在的價值。
———————————————————————————————————————————————————————————————————————————————————
下面慢慢指出錯誤:
「匯編是老子,系統是兒子,程序就是小兒子了。」 ——完全沒有這個關系,他們不再同一個層面上。完成的工作也不同。
「是不是我把匯編指令集的100多條命令背會了,就能寫出各種程序」 ——現在編程都用高級語言了。
「系統內存中的某些地方時受保護的,禁止查看,裡面有不可告人的目的。於是我就在網上找資料,資料上說匯編可以實現機器語言幾乎所有的功能。看到這里,我有些困惑了,那些匯編實現不了的,機器語言能辦到的,是不是就是那些不可告人的地方?」 ——匯編的攻擊性的確很強,因為他可以用指令直接操作硬體。但系統就是為了不讓指令操作某些內存段,因為這段內存裡面放著一些重要的系統文件,一旦被破壞就會造成系統崩潰。
「我猜CPU指令集和匯編指令集都是從機器語言中挑出來的吧!」——上面說了,CPU指令集是一個抽象,他是兩個層面之間的介面,表現給下層硬體的是二進制的機器碼,表現給應用層面的是匯編指令。一條匯編指令對應一條機器指令。
「CPU指令集對應的機器碼可以寫出一個小的系統,然後寫出一個最初的匯編程序,用匯編可以做一個大大的系統,再做出更高級的程序設計語言,比如C,VC++
這么想對嗎?」——系統和應用程序也是由高級語言編寫,因為高級語言開發(編寫)更有效率,代碼讀起來更容易理解
「地址匯流排就很容易理解。我的是32位系統,就是32個地址嘛!最後一個地址是32個1。」——地址匯流排32位是CPU設計決定的,系統32位是系統的事,不能渾然一談。
碼字碼了很久,感覺問主還是個初學者啊,在這方面還需要多看看書