当前位置:首页 » 比特币问答 » 比特币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部分,一部分插电脑上,一部分可以进行翻页)

热点内容
公信宝挖矿算力 发布:2025-05-23 02:09:12 浏览:146
数字货币人参 发布:2025-05-23 02:09:10 浏览:356
香港全球数字货币大会 发布:2025-05-23 02:01:05 浏览:331
怎么查看联通卡套餐的合约 发布:2025-05-23 01:40:24 浏览:910
尼日利亚比特币交易网站 发布:2025-05-23 01:39:47 浏览:867
央行数字货币以后应用在哪里 发布:2025-05-23 01:38:36 浏览:539
美国对比特币背书 发布:2025-05-23 01:34:17 浏览:83
什么卡挖eth80算力 发布:2025-05-23 00:59:00 浏览:609
rtx3080eth速度 发布:2025-05-23 00:46:28 浏览:251
2018年数字货币价格预测 发布:2025-05-23 00:37:45 浏览:887