當前位置:首頁 » 比特幣問答 » 比特幣CMP

比特幣CMP

發布時間: 2021-05-01 07:05:57

Ⅰ 我想在預編碼演算法加些程序,使結果多幾個模擬圖,可以加那些在哪家求大神指點

objectMainextendsApp{
varreverse_pairs = 0//逆序數
defmsort[T](cmp:(T, T) => Boolean)(l:List[T]):List[T] = {
defmerge(l1:List[T], l2:List[T]):List[T]=(l1, l2)match{
case(Nil, _) => l2
case(_, Nil) => l1
case(x::left1, y::left2) =>
if(cmp(x, y))
x::merge(left1, l2)
else{
reverse_pairs += l1.length
y::merge(l1, left2)
}
}
valn = l.length / 2
if(n == 0)
return l
else{
val(l1, l2) = l.splitAt(n)
merge(msort(cmp)(l1), msort(cmp)(l2))
}
}
println(msort((x:Int, y:Int) => x<y)(List(5, 4, 3, 2, 7,6 )))
println(reverse_pairs)
}

Ⅱ 無線網路AES的密鑰怎麼破解

AES演算法破解2007-06-01 13:18AES演算法基本知識
AES的全稱是Advanced Encryption Standard,即高級加密標准。該項目由美國國家標准技術研究所(NIST)於1997年開始啟動並徵集演算法,在2000年確定採用Rijndael 作為其最終演算法,並於2001年被美國商務部部長批准為新的聯邦信息加密標准(FIPS PUB 197)。
FIPS PUB 197中說明該標準的正式生效日期是2002年5月26日。該標准將被NIST每5年重新評估一次。
AES採用的Rijndael演算法的設計者是Joan Daemen(Proton World Int.l)和Vincent Rijmen(Katholieke Universiteit Leuven, ESAT-COSIC),演算法的名字來自兩人名字中字母的組合。Rijndael是一個對稱的分組加密演算法,分組長度和密鑰長度都可變,可分別單獨指定為 128比特,192比特和256比特。但AES中的數據分組長度只採用了Rijndael中的128比特,而不使用192和256比特,密鑰長度和 Rijndael的一致,也分別為128比特,192比特和256比特,並分別被稱為AES-128,AES-192,AES-256。
AES和傳統的分組密碼演算法不同的是它不採用Feistel結構(比如DES中採用的),而是採用了三個不同的可逆一致變換層:線性混合層、非線性層、密 鑰加層。具體的演算法數學基礎和過程請祥見:http://csrc.nist.gov/publications/fips/fips197/fips- 197.pdf

AES演算法的識別、跟蹤技巧及Crackme實例分析
1 AES演算法的判斷識別
AES中有自己特殊的S盒與逆S盒,可以將此作為判別標志,比如:S盒開頭為:
.....
解密過程使用的逆S盒開頭為:
....
我們用16進制編輯器打開目標文件搜索,或在內存中搜索,如果找到的話就基本可以確定目標是採用AES的演算法。
2 AES演算法分析的基本技巧
若要跟蹤如何加密或解密的過程,那是非常麻煩的。有一個偷懶的辦法,一般C語言的實現AES演算法都會在正式加密數據前進行初始化密鑰,如果這個Call被你找到的話就可以了,因為這個Call會傳遞key字元串。找到key就意味著我們可以自己用程序來來計算。
3 實例分析
本實例是lordor[Nuke Group]編寫的AES演算法的Crackme程序(已收錄到光碟,文件是crackme.rar)。
首先可以使用peid來檢測crackme.exe,看是否加殼了,還好,Lordor特善良,沒有加殼,另外peid有一個插件kanal,可以檢查文件中是否有已知的加密手段,我們可以在kanal中明確看到該crackme的確使用了Rijndael。
我們用Softice的symbol loader載入並運行crackme.exe。
點擊Help->Register,可以看到程序已經給出了一個code:718368679(注意:不同機器不同,我們稱其為機器碼)。
然後我們在Serial框內隨意輸入一個序列號,用Softice下一個斷點bpx getdlgitemtexta,
然後點擊Check,我們就會發現下面的代碼:
:00401248 MOV ESI,[ESP+000004A4]
:0040124F PUSH 32
:00401251 PUSH 0040E374
:00401256 PUSH 000003E9
:0040125B PUSH ESI
:0040125C CALL [USER32!GetDlgItemTextA] ;這個Call後,我們在40E374就可以看到剛才隨意輸入的序列號!
:00401262 PUSH 00
:00401264 PUSH 00
:00401266 PUSH 000003E8
:0040126B PUSH ESI
:0040126C CALL [USER32!GetDlgItemInt] ;這個Call後,EAX返回的是0x2ad16fa7,即十進制的機器碼718368679
:00401272 PUSH 10
:00401274 PUSH 0040E340
:00401279 PUSH EAX
:0040127A MOV [ESP+14],EAX
:0040127E CALL 004076E6 ;將機器碼0x2ad16fa7轉化為字元串形式,即在40E340處放置:"2ad16fa7"
:00401283 ADD ESP,0C
:00401286 PUSH 0040E304
:0040128B PUSH 0040E374
:00401290 LEA ECX,[ESP+24]
:00401294 CALL 004023B0 ;將我們剛才隨意輸入的序列號用AES加密,放到40E304處!
:00401299 PUSH 0040E304
:0040129E PUSH 0040E374
:004012A3 CALL 00401000 ;將剛才隨意輸入的序列號轉化成16進制形式,又存放到40E304處!! 如果不足16個位元組的話將和原來的內容混合;如果剛好16個位元組的話將覆蓋原來的內容!

:004012A8 XOR EAX,EAX
:004012AA MOV ECX,0000000C
:004012AF MOV EDI,0040E374
:004012B4 REPZ STOSD ;清空40E374處的內容
:004012B6 ADD ESP,08
:004012B9 PUSH 0040E374
:004012BE PUSH 0040E304
:004012C3 LEA ECX,[ESP+24]
:004012C7 STOSW
:004012C9 CALL 004026B0 ;將40E304處的數據用AES解密,得到內部注冊碼,存放到40E374處
:004012CE MOV EAX,0040E374
:004012D3 LEA EDX,[EAX+01]
:004012D6 MOV CL,[EAX]
:004012D8 INC EAX
:004012D9 TEST CL,CL
:004012DB JNZ 004012D6

:004012DD MOV CL,[0040E374]
:004012E3 SUB EAX,EDX
:004012E5 CMP CL,30 ;比較40E374處第一個字元是否是'0',不是則錯誤
:004012E8 JNZ 004013B1
:004012EE CMP BYTE PTR [EAX+0040E373],3D ;比較最後一個字元是否是'=',不是則錯誤
:004012F5 JNZ 004013B1
:004012FB CMP EAX,10 ;比較解密後的字元串長度是否為16,不是則錯誤
:004012FE JNZ 004013B1

:00401304 MOV EDX,[0040E379]
:0040130A XOR EAX,EAX
:0040130C MOV ECX,0000000C
:00401311 MOV EDI,0040E304
:00401316 REPZ STOSD ;清空40E304處內容
:00401318 MOV ECX,[0040E375]
:0040131E STOSW
:00401320 MOV EAX,[0040E37D]
:00401325 MOV [0040E308],EDX
:0040132B MOV DL,[0040E340]
:00401331 MOV [0040E30C],EAX
:00401336 CMP DL,[0040E308] ;!
:0040133C MOV [0040E304],ECX
:00401342 MOV CX,[0040E381] ;用softice看內存,可以發現這里的代碼作用是
:00401349 MOV [0040E310],CX ;截取解密後字元串當中的14個,放置到40E304處.
:00401350 JNZ 004013B1 ;並比較機器碼的第1位和16位注冊碼的第6位,
;不相等則錯誤
:00401352 PUSH 00
:00401354 PUSH 00408208
:00401359 PUSH 004081CC
:0040135E PUSH 00
:00401360 CALL [USER32!MessageBoxA] ;相等的話顯示歡迎信息!
:00401366 MOV AL,[0040E343]
:0040136B CMP AL,[0040E309] ;接著比較機器碼的第4位和16位注冊碼的第7位
:00401371 JNZ 0040138A ;不相等則錯誤

:00401373 MOV ECX,[0040E33C]
:00401379 PUSH 00000085
:0040137E PUSH ECX
:0040137F CALL [USER32!LoadBitmapA] ;相等的話則顯示圖片!
:00401385 MOV [0040E338],EAX
:0040138A PUSH ESI
:0040138B CALL [USER32!GetMenu]
:00401391 PUSH 01
注意到這個時候還是無法顯示圖片,有暗樁!

我們於是在16位注冊碼某些未確定部分上下斷點:
經過多次嘗試,使用了bpmd 40e308 r,我們發現在:
:004015EF MOV DL,[0040E344]
:004015F5 CMP DL,[0040E30A] ;將機器碼的第5位和16位注冊碼的第8位比較
:004015FB JNZ 00401663 ;不相等則錯誤
:004015FD PUSH EBX
:004015FE CALL [USER32!GetDC] ;相等則正式申請顯示DC
:00401604 MOV ESI,EAX
:00401606 PUSH ESI
:00401607 CALL [GDI32!CreateCompatibleDC]
這樣才真正顯示出圖片!好正點的女人!

AES演算法總結
下面是分析過程中所用的斷點:
00) BPX USER32!GetDlgItemTextA
01) BPX 00401350 DO "r eip 401352"
02) BPX 00401371 DO "r eip 401373"
03) BPX 004012E8 DO "r eip 401304"
04) BPMD 40E308 R
05) BPX 004015FB DO "r eip 4015fd"
注冊過程實際上是這樣的流程:
1)取得用戶輸入的原始字元串(序列號),進行AES加密;
2)將原始字元串轉化成16進製表示,和1)所的的結果重疊存放(如果位數正確的話將覆蓋);
3)將2)的結果用AES解密,得到內部注冊碼。
內部注冊碼必須符合以下要求:
1) 長度為16位元組
2) 開頭為 '0',結尾為 '='
3) 第6位必須等於機器碼的第1位
4) 第7位必須等於機器碼的第4位
5) 第8位必須等於機器碼的第5位
6) 其他位沒有限制
我們知道AES的演算法是對稱的,我們就可以構造一個內部注冊碼,通過AES的加密得到一個原始的可用的序列號。
對於機器碼為:718368679的情況,轉化為16進制為2ad16fa7,即"2ad16fa7"。我們構造一個:
0^^^^216^^^^^^^= (其中^表示是任意字元)
採用
01234216ABCDEFA=
由於Lordor在編寫這個Crackme的時候留了一個後門:
:00401294 CALL 004023B0
這是一個AES加密的呼叫,我們可以直接利用,在注冊對話框中直接輸入:
01234216ABCDEFA=
然後將斷點設到00401294,看內存40E304處就是16進制的原始序列號,翻譯成字元串就是:

AES的演算法主要用於對數據的加密,密鑰是必須保密的,但本Crackme為了介紹AES演算法,而將密鑰直接寫在程序中,否則地話單純的數據解密將不可行。
:00401230 PUSH EDI
:00401231 PUSH 10
:00401233 PUSH 10
:00401235 PUSH 00408210
:0040123A LEA EAX,[ESP+18]
:0040123E PUSH EAX ;注意這里
:0040123F LEA ECX,[ESP+2C]
:00401243 CALL 00401840 ;初始化AES
另外Lordor為了方便大家學習,故意留了後門(我也是他告訴我後才明白地。)
四、DES現在與AES將來
在 上一期我們看到了DES的介紹,對比一下,可以發現DES及AES都是屬於明文分塊加密術,加密與解密對稱,但AES作為DES的替代者,解決了DES密 鑰過短而存在攻破的可能,目前可以用AES長於256位的密鑰來加密數據可以保證極強的安全性。目前在市面上看到較多的是採用DES演算法軟體注冊演算法,可 能由於AES剛出來,目前軟體用AES當作注冊演算法一部分還未有大量普及(畢竟DES已經有20多年歷史了),不過我們看到AES長密鑰的優勢會滿足現在 加密數據,如與RSA、DSA等公鑰演算法結合,加密關鍵密鑰,起到極強的安全性。希望大家通過這兩期的加密演算法的介紹,能夠對分組密碼術的原理、應用有一 個深入的認識。

Ⅲ 二進制數字密碼的破譯

可以運用ReverseMe來二進制數字密碼的破譯,需要了解以下的內容:

1、寄存器:

寄存器就好比是CPU身上的口袋,方便CPU隨時從里邊拿出需要的東西來使用。常見涉及到的九個寄存器:

EAX:擴展累加寄存器;EBX:擴展基址寄存器;ECX:擴展計數寄存器;

EDX:擴展數據寄存器;ESI:擴展來源寄存器;EDI:擴展目標寄存器;

EBP:擴展基址指針寄存器;ESP:擴展堆棧指針寄存器;EIP:擴展的指令指針寄存器;

這些寄存器的大小是32位(4個位元組),他們可以容納數據從0-FFFFFFFF(無符號數),除了以下三個寄存器,其他我們都可以隨意使用:

EBP:主要是用於棧和棧幀。ESP:指向當前進程的棧空間地址。EIP:總是指向下一條要被執行的指令。

2、棧:棧是在內存中的一部分,它有兩個特殊的性質:

FILO(FisrtInLastOut,先進後出);地址反向增長(棧底為大地址,棧頂為小地址)。

3、CALL指令,call有以下幾種方式:

call404000h;直接跳到函數或過程的地址;calleax;函數或過程地址存放在eax,calldwordptr[eax]。

4、系統API:Windows應用程序運行在Ring3級別,API函數,我們也稱之為系統提供給我們的介面。因為系統只信任自己提供的函數,所以我們要通過API才能實現對內核的操作。

5、mov指令mov指令格式:movdest,src。

這是一個很容易理解的指令,mov指令將src的內容拷貝到dest,mov指令總共有以下幾種擴展:movs/movsb/movsw/movsdedi,

esi:這些變體按串/位元組/字/雙字為單位將esi寄存器指向的數據復制到edi寄存器指向的空間。movsx符號位擴展,byte->word,word->dword(擴展後高位全用符號位填充)。

然後實現mov。movzx零擴展,byte->word,word->dword(擴展後高位全用0填充),然後實現mov。

6、cmp指令,cmp指令格式:cmpdest,src

cmp指令比較dest和src兩個操作數,並通過比較結果設置C/O/Z標志位。

cmp指令大概有以下幾種格式:

cmpeax,ebx;如果相等,Z標志位置1,否則0。cmpeax,[404000];將eax和404000地址處的dword型數據相比較並同上置位cmp[404000],eax;同上。

7、標志位:在破解中起到的作用是至關重要的。

在逆向中,你真正需要關心的標志位只有三個,也就是cmp指令能修改的那三個:Z/O/C。

Z標志位(0標志),這個標志位是最常用的,運算結果為0時候,Z標志位置1,否則置0。

O標志位(溢出標志),在運行過程中,如操作數超出了機器能表示的范圍則稱為溢出,此時OF位置1,否則置0。

C標志位(進位標志),記錄運算時從最高有效位產生的進位值。例如執行加法指令時,最高有效位有進位時置1,否則置0。

掌握這些指令後就可以運用ReverseMe來二進制數字密碼的破譯。

(3)比特幣CMP擴展閱讀:

在數學和數字電路中,二進制(binary)數是指用二進制記數系統,即以2為基數的記數系統表示的數字。這一系統中,數通常用兩個不同的符號0(代表零)和1(代表一)來表示。

以2為基數代表系統是二進位制的。數字電子電路中,邏輯門的實現直接應用了二進制,因此現代的計算機和依賴計算機的設備里都用到二進制。每個數字稱為一個比特(二進制位)。

把二進制化為八進制也很容易,因為八進制以8為基數,8是2的冪(8=2),因此八進制的一位恰好需要三個二進制位來表示。八進制與二進制數之間的對應就是上面表格中十六進制的前八個數。二進制數000就是八進制數0,二進制數111就是八進制數7,以此類推。

Ⅳ 加法指令執行後,影響的標志位都有哪些為什麼

加法運算指令

ADD(ADD)加法指令

ADD DST , SRC //Byte/Word

執行操作: dst=dst+src

1.兩個存儲器操作數不能通過ADD指令直接相加, 即DST 和SRC必須有一個是通用寄存器操作數.

2.段寄存器不能作為SRC 和DST.

3.影響標志位Auxiliary Crray Flag ,Carry Flag, Overflow Flag, Parity Flag, Sign Flag 和Zero Flag ,如下所示:

CF 根據最高有效位是否有進(借)位設置的:有進(借)位時CF=1, 無進(借)位時CF=0.
OF 根據操作數的符號及其變化來設置的:若兩個操作數的符號相同,而結果的符號與之相反時OF=1, 否則為0.
ZF 根據結果來設置:不等於0時ZF=0, 等於0時ZF=1
SF 根據結果的最高位來設置:最高位為0, 則SF=0.
AF 根據相加時D3是否向D4進(借)位來設置:有進(借)位時AF=1, 無進(借)位時AF=0
PF 根據結果的1的個數時否為奇數來設置:1的個數為奇數時PF=0, 為偶數時PF=1

樓主把郵箱留下
我把那個CHM給你發過去
------------------------------------------------
這個沒有為什麼,某些指令之所以會影響標志位,是為了下一步以及以後指令的執行,比如判斷兩個數是否相等,如果相等跳轉到標號e,可以用以下的指令;
假定這兩個數一個在AX,一個在BX
CMP AX,BX;CMP指令和SUB指令影響的標志位完全一樣(SUB影響的標志位和ADD一樣),只不過不會保存結果
jz e;執行CMP AX,BX後ZF標志位位1,jz是條件跳轉指令,ZF為1時跳轉

Ⅳ 聯想A369手機音樂所支持的比特率是多少

AAC:在高比特率下音質僅次於MPC,在高比特率和低比特率下表象都很不錯。就是編碼速度太慢! MPC:低比特率下表現一般,不及Mp3Pro編碼的MP3和OGG,高比特率下音質最好,編碼速度快! OGG:低比特率下音質最好,高比特率同樣也不錯。編碼速度稍慢。 MP3(MP3Pro):在低比特率下音質次於OGG,其他方面同MP3 WMA:高低比特率下都一般,不支持VBR,最高192Kbit/s

Ⅵ 影馳cmp5-1礦卡 gtx1060 6g 驍將挖礦是什麼意思

挖礦最早源於挖比特幣,顯卡越好效率越高,現在挖礦多來形容顯卡性能好。目前又是挖礦高潮。

Ⅶ aes密碼能破解嗎

最新的破解軟體。可以破解高級加密的。記得聯系額

Ⅷ CPU的問題 高手來看看

CPU是Central Processing Unit的縮寫,是中央處理器的意思。CPU的工作原理其實很簡單,它的內部元件主要包括:控制單元,邏輯單元,存儲單元三大部分。指令由控制單元分配到邏輯運算單元,經過加工處理後,再送到存儲單元里等待應用程序的使用。

CPU的原始工作模式
在了解CPU工作原理之前,我們先簡單談談CPU是如何生產出來的。CPU是在特別純凈的硅材料上製造的。一個CPU晶元包含上百萬個精巧的晶體管。人們在一塊指甲蓋大小的矽片上,用化學的方法蝕刻或光刻出晶體管。因此,從這個意義上說, CPU正是由晶體管組合而成的。簡單而言,晶體管就是微型電子開關,它們是構建CPU的基石,你可以把一個晶體管當作一個電燈開關,它們有個操作位,分別代表兩種狀態:ON(開)和OFF(關)。這一開一關就相當於晶體管的連通與斷開,而這兩種狀態正好與二進制中的基礎狀態「0」和「1」對應!這樣,計算機就具備了處理信息的能力。但你不要以為,只有簡單的「0」和「1」兩種狀態的晶體管的原理很簡單,其實它們的發展是經過科學家們多年的辛苦研究得來的。在晶體管之前,計算機依靠速度緩慢、低效率的真空電子管和機械開關來處理信息。後來,科研人員把兩個晶體管放置到一個硅晶體中,這樣便創作出第一個集成電路,再後來才有了微處理器。看到這里,你一定想知道,晶體管是如何利用「0」和「1」這兩種電子信號來執行指令和處理數據的呢?其實,所有電子設備都有自己的電路和開關,電子在電路中流動或斷開,完全由開關來控制,如果你將開關設置為OFF,電子將停止流動,如果你再將其設置為ON,電子又會繼續流動。晶體管的這種ON與OFF的切換只由電子信號控制,我們可以將晶體管稱之為二進制設備。這樣,晶體管的ON狀態用 「1」來表示,而OFF狀態則用「0」來表示,就可以組成最簡單的二進制數。眾多晶體管產生的多個「1」與「0」的特殊次序和模式能代表不同的情況,將其定義為字母、數字、顏色和圖形。舉個例子,十進位中的1在二進位模式時也是「1」,2在二進位模式時是「10」,3是「11」,4是「100」,5是 「101」,6是「110」等等,依此類推,這就組成了計算機工作採用的二進制語言和數據。成組的晶體管聯合起來可以存儲數值,也可以進行邏輯運算和數字運算。加上石英時鍾的控制,晶體管組就像一部復雜的機器那樣同步地執行它們的功能。

CPU的內部結構
現在我們已經大概知道CPU是負責些什麼事情,但是具體由哪些部件負責處理數據和執行程序呢?
1.算術邏輯單元ALU(Arithmetic Logic Unit)
ALU是運算器的核心。它是以全加器為基礎,輔之以移位寄存器及相應控制邏輯組合而成的電路,在控制信號的作用下可完成加、減、乘、除四則運算和各種邏輯運算。就像剛才提到的,這里就相當於工廠中的生產線,負責運算數據。
2.寄存器組 RS(Register Set或Registers)
RS實質上是CPU中暫時存放數據的地方,裡面保存著那些等待處理的數據,或已經處理過的數據,CPU訪問寄存器所用的時間要比訪問內存的時間短。採用寄存器,可以減少CPU訪問內存的次數,從而提高了CPU的工作速度。但因為受到晶元面積和集成度所限,寄存器組的容量不可能很大。寄存器組可分為專用寄存器和通用寄存器。專用寄存器的作用是固定的,分別寄存相應的數據。而通用寄存器用途廣泛並可由程序員規定其用途。通用寄存器的數目因微處理器而異。
3.控制單元(Control Unit)
正如工廠的物流分配部門,控制單元是整個CPU的指揮控制中心,由指令寄存器 IR(Instruction Register)、指令解碼器ID(Instruction Decoder)和操作控制器0C(Operation Controller)三個部件組成,對協調整個電腦有序工作極為重要。它根據用戶預先編好的程序,依次從存儲器中取出各條指令,放在指令寄存器IR中,通過指令解碼(分析)確定應該進行什麼操作,然後通過操作控制器OC,按確定的時序,向相應的部件發出微操作控制信號。操作控制器OC中主要包括節拍脈沖發生器、控制矩陣、時鍾脈沖發生器、復位電路和啟停電路等控制邏輯。
4.匯流排(Bus)
就像工廠中各部位之間的聯系渠道,匯流排實際上是一組導線,是各種公共信號線的集合,用於作為電腦中所有各組成部分傳輸信息共同使用的「公路」。直接和CPU相連的匯流排可稱為局部匯流排。其中包括: 數據匯流排DB(Data Bus)、地址匯流排AB(Address Bus) 、控制匯流排CB(Control Bus)。其中,數據匯流排用來傳輸數據信息;地址匯流排用於傳送CPU發出的地址信息;控制匯流排用來傳送控制信號、時序信號和狀態信息等。

CPU的工作流程
由晶體管組成的CPU是作為處理數據和執行程序的核心,其英文全稱是:Central Processing Unit,即中央處理器。首先,CPU的內部結構可以分為控制單元,邏輯運算單元和存儲單元(包括內部匯流排及緩沖器)三大部分。CPU的工作原理就像一個工廠對產品的加工過程:進入工廠的原料(程序指令),經過物資分配部門(控制單元)的調度分配,被送往生產線(邏輯運算單元),生產出成品(處理後的數據)後,再存儲在倉庫(存儲單元)中,最後等著拿到市場上去賣(交由應用程序使用)。在這個過程中,我們注意到從控制單元開始,CPU就開始了正式的工作,中間的過程是通過邏輯運算單元來進行運算處理,交到存儲單元代表工作的結束。

數據與指令在CPU中的運行
剛才已經為大家介紹了CPU的部件及基本原理情況,現在,我們來看看數據是怎樣在CPU中運行的。我們知道,數據從輸入設備流經內存,等待CPU的處理,這些將要處理的信息是按位元組存儲的,也就是以8位二進制數或8比特為1個單元存儲,這些信息可以是數據或指令。數據可以是二進製表示的字元、數字或顏色等等。而指令告訴CPU對數據執行哪些操作,比如完成加法、減法或移位運算。我們假設在內存中的數據是最簡單的原始數據。首先,指令指針(Instruction Pointer)會通知CPU,將要執行的指令放置在內存中的存儲位置。因為內存中的每個存儲單元都有編號(稱為地址),可以根據這些地址把數據取出,通過地址匯流排送到控制單元中,指令解碼器從指令寄存器IR中拿來指令,翻譯成CPU可以執行的形式,然後決定完成該指令需要哪些必要的操作,它將告訴算術邏輯單元(ALU)什麼時候計算,告訴指令讀取器什麼時候獲取數值,告訴指令解碼器什麼時候翻譯指令等等。 假如數據被送往算術邏輯單元,數據將會執行指令中規定的算術運算和其他各種運算。當數據處理完畢後,將回到寄存器中,通過不同的指令將數據繼續運行或者通過DB匯流排送到數據緩存器中。 基本上,CPU就是這樣去執行讀出數據、處理數據和往內存寫數據3項基本工作。但在通常情況下,一條指令可以包含按明確順序執行的許多操作,CPU的工作就是執行這些指令,完成一條指令後,CPU的控制單元又將告訴指令讀取器從內存中讀取下一條指令來執行。這個過程不斷快速地重復,快速地執行一條又一條指令,產生你在顯示器上所看到的結果。我們很容易想到,在處理這么多指令和數據的同時,由於數據轉移時差和CPU處理時差,肯定會出現混亂處理的情況。為了保證每個操作準時發生,CPU需要一個時鍾,時鍾控制著CPU所執行的每一個動作。時鍾就像一個節拍器,它不停地發出脈沖,決定CPU的步調和處理時間,這就是我們所熟悉的CPU的標稱速度,也稱為主頻。主頻數值越高,表明CPU的工作速度越快。

主頻、外頻以及倍頻
主頻也叫時鍾頻率,單位是MHz,用來表示CPU的運算速度。CPU的工作頻率(主頻)包括兩部分:外頻與倍頻,兩者的乘積就是主頻。倍頻的全稱為倍頻系數。CPU的主頻與外頻之間存在著一個比值關系,這個比值就是倍頻系數,簡稱倍頻。倍頻可以從1.5一直到23以至更高,以0.5為一個間隔單位。外頻與倍頻相乘就是主頻,所以其中任何一項提高都可以使CPU的主頻上升。由於主頻並不直接代表運算速度,所以在一定情況下,很可能會出現主頻較高的CPU實際運算速度較低的現象。因此主頻僅僅是CPU性能表現的一個方面,而不代表CPU的整體性能 。
處理器主頻以每秒處理器周期可運行的百萬次計算。通常,具有較高MHz或GHz的處理器能夠提高電腦運行創新、娛樂、通信和生產力應用的性能。但主頻只是影響系統整體性能的一個方面,主頻高的機器整體性能並非就一定高。

我們知道,電腦有許多配件,配件不同,速度也就不同。在286、386和早期的486電腦里,CPU的速度不是太高,和內存保持一樣的速度。後來隨著CPU速度的飛速提升,內存由於電氣結構關系,無法象CPU那樣提升很高的速度(就算現在內存達到400、533,但跟CPU的幾個G的速度相比,根本就不是一個級別的),於是造成了內存和CPU之間出現了速度差異,這時就提出一個CPU的主頻、倍頻和外頻的概念,外頻顧名思義就是CPU外部的頻率,也就是內存的頻率,CPU以這個頻率來與內存聯系。CPU的主頻就是CPU內部的實際運算速度,主頻肯定是比外頻高的,高一定的倍數,這個數就是倍頻。舉個例子,你從電腦垃圾堆里揀到一個被拋棄的INTEL 486 CPU,上面印著486 DX/2 66。這個486的CPU的主頻是66MHZ,DX/2代表是2倍頻的,於是算出CPU的外頻是33MZ,也就是內存的工作頻率,這同時也是前端匯流排FSB的頻率。因為CPU是通過前端匯流排來與內存發生聯系的,所以內存的工作頻率(或者說外頻也行)就是前端匯流排的頻率。剛才這個垃圾堆里的486 CPU,前端匯流排的頻率就是33MZ。這樣的前端匯流排結構一直延續到486之後的奔騰(俗話說的586)、奔騰2、奔騰3,例如一顆奔3 933MHZ的CPU,外頻133,也就是說它的前端匯流排是133MHZ,內存工作頻率也是133。
到了奔騰4年代,內存和CPU的工作模式發生了改變,前端匯流排的概念也變得有些復雜。奔騰4 CPU採用了Quad Pumped(4倍並發)技術,該技術可以使系統匯流排在一個時鍾周期內傳送4次數據,也就是傳輸效率是原來的4倍,相當於用了4條原來的前端匯流排來和內存發生聯系。在外頻仍然是133MHZ的時候,前端匯流排的速度增加4倍變成了133X4=533MHZ,當外頻升到200MHZ,前端匯流排變成800MHZ,所以你會看到533前端匯流排的P4和800前端匯流排的P4,就是這樣來的。他們的實際外頻只有133和200,但由於人們保留了以前老的概念——前端匯流排就是外頻,所以習慣了這樣的叫法:533外頻的P4和800外頻的P4。其實還是叫533前端匯流排或533 FSB的P4比較合適。
那內存的情況怎麼樣呢?外頻不完全等於前端匯流排了,那外頻還等於內存的頻率嗎?內存發展到了DDR,跟原來相比,一個時鍾周期內可以傳送比原來多一倍的數據,DDR就是DOUBLE DATA RATE的縮寫,意思就是雙倍的數據傳輸速率。在133MHZ的外頻下,DDR的傳輸速度是266,外頻提高到200MHZ的時候,DDR的傳輸速度是400,DDR266的內存和DDR400的內存就是這個意思。
再看一下現在外頻、內存頻率、CPU的前端匯流排的的關系。在以前P3的時候,133的外頻,內存的頻率就是133,CPU的前端匯流排也是133,三者是一回事。現在P4的CPU,在133的外頻下,前端匯流排達到了533MHZ,內存頻率是266(DDR266)。問題出現了,前端匯流排是CPU與內存發生聯系的橋梁,P4這時候的前端匯流排達到533之高,而內存只有266的速度,內存比CPU的前端匯流排慢了一半,理論上CPU有一半時間要等內存傳數據過來才能處理數據,等於內存拖了CPU的後腿。這樣的情況的確存在的,845和848的主板就是這樣。於是提出一個雙通道內存的概念,兩條內存使用兩條通道一起工作,一起提供數據,等於速度又增加一倍,兩條DDR266就有266X2=533的速度,剛好是P4 CPU的前端匯流排速度,沒有拖後腿的問題。外頻提升到200的時候,CPU前端匯流排變為800,兩條DDR400內存組成雙通道,內存傳輸速度也是800了。所以要P4發揮好,一定要用雙通道內存,865以上的主板都提供這個功能。但845和848主板就沒有內存雙通道功能了。

剛才說的是INTEL P4的FSB概念,它的對手AMD的CPU有所不同。

舊的462針腳的AMD CPU,採用ev6前端匯流排,相當於外頻的兩倍,也就是133外頻時,AMD 462腳的CPU的FSB是266,使用DDR266內存和他搭配就剛剛好,如果用兩條DDR266做成雙通道,雖然內存有533的傳輸速度,但對於266的FSB,作用不大,所以雙通道內存對CPU的幫助不明顯。

新的AMD 754/939 64位CPU,內部就集成了內存管理器(以前內存管理器在主板心片里),所以AMD 64位CPU的前端匯流排FSB頻率與CPU實際頻率一致。

CPU緩存(Cache Memoney)位於CPU與內存之間的臨時存儲器,它的容量比內存小但交換速度快。在緩存中的數據是內存中的一小部分,但這一小部分是短時間內CPU即將訪問的,當CPU調用大量數據時,就可避開內存直接從緩存中調用,從而加快讀取速度。由此可見,在CPU中加入緩存是一種高效的解決方案,這樣整個內存儲器(緩存+內存)就變成了既有緩存的高速度,又有內存的大容量的存儲系統了。緩存對CPU的性能影響很大,主要是因為CPU的數據交換順序和CPU與緩存間的帶寬引起的。

緩存的工作原理是當CPU要讀取一個數據時,首先從緩存中查找,如果找到就立即讀取並送給CPU處理;如果沒有找到,就用相對慢的速度從內存中讀取並送給CPU處理,同時把這個數據所在的數據塊調入緩存中,可以使得以後對整塊數據的讀取都從緩存中進行,不必再調用內存。

正是這樣的讀取機制使CPU讀取緩存的命中率非常高(大多數CPU可達90%左右),也就是說CPU下一次要讀取的數據90%都在緩存中,只有大約10%需要從內存讀取。這大大節省了CPU直接讀取內存的時間,也使CPU讀取數據時基本無需等待。總的來說,CPU讀取數據的順序是先緩存後內存。

最早先的CPU緩存是個整體的,而且容量很低,英特爾公司從Pentium時代開始把緩存進行了分類。當時集成在CPU內核中的緩存已不足以滿足CPU的需求,而製造工藝上的限制又不能大幅度提高緩存的容量。因此出現了集成在與CPU同一塊電路板上或主板上的緩存,此時就把 CPU內核集成的緩存稱為一級緩存,而外部的稱為二級緩存。一級緩存中還分數據緩存(I-Cache)和指令緩存(D-Cache)。二者分別用來存放數據和執行這些數據的指令,而且兩者可以同時被CPU訪問,減少了爭用Cache所造成的沖突,提高了處理器效能。英特爾公司在推出Pentium 4處理器時,還新增了一種一級追蹤緩存,容量為12KB.

隨著CPU製造工藝的發展,二級緩存也能輕易的集成在CPU內核中,容量也在逐年提升。現在再用集成在CPU內部與否來定義一、二級緩存,已不確切。而且隨著二級緩存被集成入CPU內核中,以往二級緩存與CPU大差距分頻的情況也被改變,此時其以相同於主頻的速度工作,可以為CPU提供更高的傳輸速度。

二級緩存是CPU性能表現的關鍵之一,在CPU核心不變化的情況下,增加二級緩存容量能使性能大幅度提高。而同一核心的CPU高低端之分往往也是在二級緩存上有差異,由此可見二級緩存對於CPU的重要性。

CPU在緩存中找到有用的數據被稱為命中,當緩存中沒有CPU所需的數據時(這時稱為未命中),CPU才訪問內存。從理論上講,在一顆擁有二級緩存的CPU中,讀取一級緩存的命中率為80%。也就是說CPU一級緩存中找到的有用數據占數據總量的80%,剩下的20%從二級緩存中讀取。由於不能准確預測將要執行的數據,讀取二級緩存的命中率也在80%左右(從二級緩存讀到有用的數據占總數據的16%)。那麼還有的數據就不得不從內存調用,但這已經是一個相當小的比例了。目前的較高端的CPU中,還會帶有三級緩存,它是為讀取二級緩存後未命中的數據設計的—種緩存,在擁有三級緩存的CPU中,只有約5%的數據需要從內存中調用,這進一步提高了CPU的效率。

為了保證CPU訪問時有較高的命中率,緩存中的內容應該按一定的演算法替換。一種較常用的演算法是「最近最少使用演算法」(LRU演算法),它是將最近一段時間內最少被訪問過的行淘汰出局。因此需要為每行設置一個計數器,LRU演算法是把命中行的計數器清零,其他各行計數器加1。當需要替換時淘汰行計數器計數值最大的數據行出局。這是一種高效、科學的演算法,其計數器清零過程可以把一些頻繁調用後再不需要的數據淘汰出緩存,提高緩存的利用率。

CPU產品中,一級緩存的容量基本在4KB到18KB之間,二級緩存的容量則分為128KB、256KB、512KB、1MB等。一級緩存容量各產品之間相差不大,而二級緩存容量則是提高CPU性能的關鍵。二級緩存容量的提升是由CPU製造工藝所決定的,容量增大必然導致CPU內部晶體管數的增加,要在有限的CPU面積上集成更大的緩存,對製造工藝的要求也就越高。

雙核心CPU的二級緩存比較特殊,和以前的單核心CPU相比,最重要的就是兩個內核的緩存所保存的數據要保持一致,否則就會出現錯誤,為了解決這個問題不同的CPU使用了不同的辦法:

Intel雙核心處理器的二級緩存
目前Intel的雙核心CPU主要有Pentium D、Pentium EE、Core Duo三種,其中Pentium D、Pentium EE的二級緩存方式完全相同。Pentium D和Pentium EE的二級緩存都是CPU內部兩個內核具有互相獨立的二級緩存,其中,8xx系列的Smithfield核心CPU為每核心1MB,而9xx系列的Presler核心CPU為每核心2MB。這種CPU內部的兩個內核之間的緩存數據同步是依靠位於主板北橋晶元上的仲裁單元通過前端匯流排在兩個核心之間傳輸來實現的,所以其數據延遲問題比較嚴重,性能並不盡如人意。
Core Duo使用的核心為Yonah,它的二級緩存則是兩個核心共享2MB的二級緩存,共享式的二級緩存配合Intel的「Smart cache」共享緩存技術,實現了真正意義上的緩存數據同步,大幅度降低了數據延遲,減少了對前端匯流排的佔用,性能表現不錯,是目前雙核心處理器上最先進的二級緩存架構。今後Intel的雙核心處理器的二級緩存都會採用這種兩個內核共享二級緩存的「Smart cache」共享緩存技術。

AMD雙核心處理器的二級緩存
Athlon 64 X2 CPU的核心主要有Manchester和Toledo兩種,他們的二級緩存都是CPU內部兩個內核具有互相獨立的二級緩存,其中,Manchester核心為每核心512KB,而Toledo核心為每核心1MB。處理器內部的兩個內核之間的緩存數據同步是依靠CPU內置的System Request Interface(系統請求介面,SRI)控制,傳輸在CPU內部即可實現。這樣一來,不但CPU資源佔用很小,而且不必佔用內存匯流排資源,數據延遲也比Intel的Smithfield核心和Presler核心大為減少,協作效率明顯勝過這兩種核心。不過,由於這種方式仍然是兩個內核的緩存相互獨立,從架構上來看也明顯不如以Yonah核心為代表的Intel的共享緩存技術Smart Cache。

Ⅸ 聯想U盤上的PPT和BT開關是什麼意思呀

看樣子你這個u盤應該是藍牙u盤,BT 應該是開啟藍牙功能,ppt就是普通u盤,或者ppt演示了(如果是ppt演示,u盤應可以分2部分,一部分插電腦上,一部分可以進行翻頁)

熱點內容
eth輕松礦工原版 發布:2025-05-22 21:28:12 瀏覽:21
用btc好還是用usdt好 發布:2025-05-22 21:28:10 瀏覽:477
幣圈情報站第三集 發布:2025-05-22 21:14:11 瀏覽:864
灰度解禁ltc 發布:2025-05-22 21:08:53 瀏覽:926
eth10官方錢包 發布:2025-05-22 21:08:52 瀏覽:376
eos區塊鏈BM是哪國人 發布:2025-05-22 21:08:18 瀏覽:596
區塊鏈防止破解 發布:2025-05-22 21:08:18 瀏覽:55
eth轉入etc 發布:2025-05-22 21:04:06 瀏覽:611
礦機到期可以不續 發布:2025-05-22 20:56:00 瀏覽:778
礦機熱有什麼解決辦法 發布:2025-05-22 20:42:20 瀏覽:954