用户
 找回密码
 立即注册
搜索

我从不觉得AMD的CPU有任何一点好

[复制链接]

0

主题

2

帖子

4

积分

新手上路

Rank: 1

积分
4
发表于 2006-2-20 08:34:00
<P>&nbsp;&nbsp; 兄弟不才,今天想凑凑热闹,给由来已久的CPU口水仗再多泼盆吐沫。<BR>&nbsp;&nbsp; 当然,我的水平距离能够讨论CPU的程度还差的很远,也可能这一辈子都不配谈论CPU。<BR>&nbsp;&nbsp; 但是今天喝多了,也不怕丢人,瞎吹吧。反正大家见过的只会吹的人也海了去了。<BR>就象会C语言,但是你还是设计不出来操作系统一样;我懂些VHDL,这种硬件描述语言理论上能设计出来CPU,但是让我谈论CPU的话,就相当于一个刚学会QBASIC语言的人给你们讲解Linux操作系统。</P>
<P>CPU严格来说应该包括个人电脑,大型工作站,以及一切嵌入式设备上的CPU。这么多里边,使用最广泛,最低廉的,莫过于Intel公司首创的8051单片机。这个单片机虽然简陋,但是麻雀随小,五脏俱全。必要时可以用它来说明许多现代CPU中的一些概念。<BR></P>
<P>为了比较Intel和AMD的CPU,并且顺便谈谈其他CPU,我们要明白的概念有:<BR>1)冯.诺依曼结构(操,姓冯的就是牛逼,传说在诺依曼他们村,冯这个姓氏表示贵族,骑士团王国的后裔)和哈佛结构<BR>2) 2级缓存对CPU的作用<BR>3) 缓存的类型<BR>4)2级缓存对外设,诸如显卡的作用<BR>5) 操作系统为了管理内存,它需要什么样的CPU</P>
<P>一,冯.诺依曼是单总线,哈佛是双总线,数据空间和指令空间分开。</P>
<P>&nbsp;&nbsp;&nbsp; 一条总线包括了数据线,地址线,控制线一共三组。<BR>&nbsp;&nbsp;&nbsp; 数据线一般而言是和字宽相等的,如32位机里一般数据线都是32根;<BR>&nbsp;&nbsp;&nbsp; 地址线则不这么确定,按道理说每一进程4G内存的话,必然需要2的32次方=4G,32根地址线才够用。<BR>&nbsp;&nbsp;&nbsp; 但是事实上,如8086,采用了段地址与偏移地址先错位,再相加的方式,于是内部16根地址线到了外部就变成了20根。<BR>&nbsp;&nbsp;&nbsp; 那得到了外部地址线的宽度,是不是就确定了地址线的根数了呢?还没!<BR>&nbsp;&nbsp;&nbsp; 比如SDRAM,运用在RISC(精简指令集计算机)上,要寻址的话,它并不是一次把地址并行输出,而是内存的存储单元排成了一个矩阵,这个地址要分两次输出,一次选行,一次选列。<BR>&nbsp;&nbsp;&nbsp; 这个矩阵的长高不确定的话,你实际的列并行输出宽度,行并行输出宽度都不确定。同时在输出行,列地址之间等待的时间间隔也很不一样。<BR>&nbsp;&nbsp;&nbsp; 现在个人电脑最常用的是DDRAM内存,这个内存我没有用过,但是可以确定的是,这种内存也绝对不是并行输出一次地址就可以寻址。并且以后的内存都不太可能采用这种方式,他们至少要包括行,列地址。<BR>&nbsp;&nbsp;&nbsp; 有人就要问,内存寻址既然有这么多方式,那么CPU如何知道它应该采用那种方式呢?<BR>&nbsp;&nbsp;&nbsp; 对,有一个单元,有人叫它内存控制器吧?这个单元可以包容很多种寻址方式,这个东西AMD把它集成在了CPU里边,Intel做在了主板上。<BR>&nbsp;&nbsp;&nbsp; 于是AMD的CPU,主板都不得不同时和内存配套。<BR></P>
<P>&nbsp;</P>
<P>二,2级缓存最广泛的说法就是预取指令,事实上现代CPU都普遍支持指令cache和数据cache。两种缓存是分开的。<BR>&nbsp;&nbsp;&nbsp; 由于从内存取需要等待比较长的时间,所以CPU的硬件机制会把当前指令后边的好几条指令预先取入CPU中,同时硬件还实现了一种算法,来淘汰掉缓存中认为是很少访问中的内容。<BR>&nbsp;&nbsp;&nbsp; 缓存的大小,和淘汰的算法很大程度上决定了CPU的速度<BR>三,缓存分为两种,一种叫写通型,一种叫写回型。<BR>&nbsp;&nbsp;&nbsp; 写通既当CPU得到运算结果,要保存数据时,先修改缓存中的数据,并同时修改这块缓存所对应的内存中的数据。<BR>&nbsp;&nbsp;&nbsp; 写回既cpu只把结果写入缓存,当这块缓存要被淘汰的时候,才把缓存内容写入到对应的内存地址中去。<BR>&nbsp;&nbsp;&nbsp; 一般而言,使用写回型缓存对硬件设计以及软件设计的要求要比写通型高,但是可以达到更快的速度,是一种更加先进的做法。<BR>&nbsp;&nbsp;&nbsp; 这方面,Intel无疑牛逼<BR></P>
<P>四,缓存只影响CPU的速度吗?<BR>&nbsp;&nbsp;&nbsp; NO!CPU和外设之间的通讯,虽然这些年新的手段不断出来,比如IIC,IIS,SIO,但是有一种手段是一直使用了30多年,现在还占主导地位,广泛应用中。<BR>&nbsp;&nbsp;&nbsp; 就是DMA传送方式,DMA传送是使用的总线,你可以把DMA控制器想象成另一个简单的CPU。<BR>&nbsp;&nbsp;&nbsp; 外设请求DMA控制器,DMA则请求CPU放弃使用总线,CPU应答DMA,DMA再应答外设。OK,这时候CPU就放弃使用总线了,它只执行缓存里边的指令,暂时不需要使用总线。<BR>&nbsp;&nbsp;&nbsp; 于是DMA拿过来总线,就象一个CPU一样,开始控制外设,内存之类的东西。<BR>&nbsp;&nbsp;&nbsp; 毫无疑问,缓存越多,DMA可以使用总线的时间就越多。DMA一般都是控制的硬盘,显卡........<BR>&nbsp;&nbsp;&nbsp; Intel和AMD谁的缓存多呢?这是一个关系到显卡,硬盘等外设效果的问题。<BR></P>
<P>五,我们必须承认,从操作系统的角度看,在CPU的设计上,Intel和AMD的产品做的都更象我们这个论坛做出来的产品,一个字,烂!<BR>&nbsp;&nbsp;&nbsp; 目前就我看到的,用过的,我认为ARM的CPU无疑是相当牛逼的。<BR>&nbsp;&nbsp;&nbsp; 但是Intel做的烂,是为了兼容它以前的产品,8088,80286等等,所有逻辑地址到物理地址的变换又得选段,又得选页。<BR>&nbsp;&nbsp;&nbsp; 而操作系统上,无论Linux和windows,都使用的flat模型,他们都没有使用奔腾的段地址变换,直接每段都代表0~4G。同时又都必须使用页地址变换。<BR>&nbsp;&nbsp;&nbsp; 不仅如此,其他的操作系统,如OSII,vxworks等,也都没有使用这个段机制,但页机制是必须的。<BR>&nbsp;&nbsp;&nbsp; 段机制除了给编程制造麻烦外,没有什么其他作用。如果你不在玩DOS的黄色小游戏的话。<BR>&nbsp;&nbsp;&nbsp; 不过我就纳闷AMD了,人家Intel是考虑自己的用户群的利益,兼容以前的机器,所以做出来这么个四不象,AMD这是干嘛?</P>
<P>&nbsp;还没说完,暂时先这五点,要说的多了,以后还会说。&nbsp;&nbsp; </P>
使用道具 举报 回复
发表于 2006-2-20 12:20:00
AMD为了活命啊,开始干不过,米办法只有照着老呗
使用道具 举报 回复 支持 反对
发表于 2006-2-20 08:37:00
<IMG src="smileys/smiley11.gif" border="0">
使用道具 举报 回复 支持 反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则