BBS.ChinaUnix.net
首页 | 新闻 | Linux | FreeBSD | AIX | Windows | 博客 | 论坛 | 存储 | 网络 | 人才 | Wiki | 资料 | 读书 | 手册 | 下载 | 空间 | 搜索
  会员: 密码: 免费注册 | 忘记密码 | 会员登录 | 搜索 | 帮助 


奥运快报: 
奥运热点:
 

科普一下CPU知识。
首页 » 论坛 » IT业界新闻与评论 »  
[打印] [订阅] [收藏] [本帖文本页] [推荐此主题给朋友,立即获积分]
jamesr   帅哥
大天使
人在CU飘,挨刀我就跑



UID:362823
注册:2006-1-13
最后登录: 2008-09-03
帖子:2268
精华:1

可用积分:3034 (小富即安)
信誉积分:100
专家积分:50 (本版:0)
空间积分:2
推广积分:0

状态:...离线...

[个人空间] [短信] [博客]


1楼 发表于 2008-7-3 15:12 
实在是忍不住了!
懂HDL的竟然不知道microarchitechture!还在哪里叫着:“decode模块相同,所以两个芯片相同。”

我来科普一下(不一定准确,懂IC的来纠正,不懂的别瞎搀和)。
1、CPU干了什么工作?
CPU最核心的工作其实只有2个:
1)访问内存
2)根据指令要求计算,读写寄存器文件
2、CPU是怎么干这两个工作的?
我们编写程序,最终交给CPU的形式就是可执行文件。可执行文件最重要的就是代码段。
代码最终呈现给CPU的格式由CPU的指令集(ISA)规定,同样的代码可以在AMD的CPU上正确执行,也可以在Intel的CPU上正确执行,说明该代码使用的ISA再两个CPU上都实现了。反过来,使用3DNow!扩展指令集的代码就不能在Intel的CPU上正确执行。

CPU逻辑上一次从指定位置(PC寄存器的值)读取一个指令,并把PC的值改成下一个指令的位置。这个过程叫做Instruction Fetch。
取得的这一个指令可能有不同的格式,比如有些的加法指令,有些的访问内存指令。要分辨这些格式,并对不同的格式做出不同处理。这个分辨的过程就是Instruction Decode,decode的code是什么呢?就是Opcode(Operation Code),也就算我们所说的指令。由于x86早期内部不是现在这样流水线化的,所以现在在x86上,还需要一步把x86指令转换成内部流水化内核的指令(microcode)。
然后CPU对已经分辨出是什么类型的指令进行具体的操作了,是访存指令的去计算访问内存的具体位置,是加法指令的去做加法。这个过程叫着Execute。
然后CPU就访存(访存指令),这个过程比较长,叫做Memory Access。
最后把结果(ALU的或读内存的)写到寄存器。这个过程叫做Write-back
这个就是经典的MIPS 5级流水线,现在的CPU完成的基本工作都在这里了。
这里插两幅图:


但现代CPU不是单纯的RISC或者CISC,它有更多其他的技术,比如龙芯2采用的乱序超标量技术。
同样,先要IF,但龙芯2是4发射,一次可以读取4条指令。
然后ID,一次decode4条指令,但由于要乱序执行,就得对4条指令的依赖关系进行判断,做出相关的处理。
然后ALU,选择准备好的指令发射到最多4个执行单元(Load/store Unit,2 ALU,2FPU之中选)、MEM,作后WB的时候又得按指令的顺序进行,保证数据不会因为乱序执行而错乱。乱序超标量需要做大量的辅助工作,所以龙芯2的流水线从传统的7级超标量流水线(如R10000系列),分割到了9级。这一层次就叫做mircoarchitecture了,里面有大量的技术来保证指令快速,正确的运行。由于采用这种设计,龙芯2基本上可以接近或达到每个时钟周期运行2条指令(IPC=2)这样的水平。
这里插一幅图:

指令集相同,opcode必然相同,而opcode相同,decode模块就相同吗?
以下是我从网上找来的一个decoder的verilog(一种硬件描述语言)代码,
描述的这个模块把4-bit的binary_in,decode成16-bit的decoder_out。

//-----------------------------------------------------
// Design Name : decoder_using_case
// File Name   : decoder_using_case.v
// Function    : decoder using case
// Coder       : Deepak Kumar Tala
//-----------------------------------------------------
module decoder_using_case (
binary_in   , //  4 bit binary input
decoder_out , //  16-bit  out
enable        //  Enable for the decoder
);
input [3:0] binary_in  ;
input  enable ;
output [15:0] decoder_out ;

reg [15:0] decoder_out ;

always @ (enable or binary_in)
begin
  decoder_out = 0;
  if (enable) begin
    case (binary_in)
      4'h0 : decoder_out = 16'h0001;
      4'h1 : decoder_out = 16'h0002;
      4'h2 : decoder_out = 16'h0004;
      4'h3 : decoder_out = 16'h0008;
      4'h4 : decoder_out = 16'h0010;
      4'h5 : decoder_out = 16'h0020;
      4'h6 : decoder_out = 16'h0040;
      4'h7 : decoder_out = 16'h0080;
      4'h8 : decoder_out = 16'h0100;
      4'h9 : decoder_out = 16'h0200;
      4'hA : decoder_out = 16'h0400;
      4'hB : decoder_out = 16'h0800;
      4'hC : decoder_out = 16'h1000;
      4'hD : decoder_out = 16'h2000;
      4'hE : decoder_out = 16'h4000;
      4'hF : decoder_out = 16'h8000;
    endcase
  end
end

endmodule

上面是case版本的,也用不用case的版本:

//-----------------------------------------------------
// Design Name : decoder_using_assign
// File Name   : decoder_using_assign.v
// Function    : decoder using assign
// Coder       : Deepak Kumar Tala
//-----------------------------------------------------
module decoder_using_assign (
binary_in   , //  4 bit binary input
decoder_out , //  16-bit out
enable        //  Enable for the decoder
);
input [3:0] binary_in  ;
input  enable ;
output [15:0] decoder_out ;
        
wire [15:0] decoder_out ;

assign decoder_out = (enable) ? (1 << binary_in) : 16'b0 ;

endmodule

如果用C语言来描述一下,就相当于

static inline void decoder_using_case (bool enable,uint4 *binary_in, uint_16 *decoder_out)
{
    if(enable)
        *decoder_out=1<<*binary_in;
    else
        *decode_out=0;
}

指令相同,具体如何decode由具体的CPU决定,我可以把32位加法指令操作部分decode成1,也可以decode成2,随我喜欢,decode模块怎么可能就一定相同?

大家可以看看这本书:《Computer Architecture A Quantitative Approach》已经出到第4版了。

[ 本帖最后由 jamesr 于 2008-7-3 15:17 编辑 ]



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

欢迎参加《Object-oriented Programming with ANSI-C》的翻译:
http://wiki.chinaunix.net/index.php/OOC


Everest 0.5正式发布!
空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘
小i   美女 (isjfk)
大法师


CU奥运火炬传递手2008
UID:584243
注册:2007-7-7
最后登录: 2008-09-06
帖子:11034
精华:0

可用积分:2612 (小富即安)
信誉积分:260
专家积分:971 (本版:0)
空间积分:0
推广积分:0

状态:...离线...

[个人空间] [短信] [博客]


2楼 发表于 2008-7-3 15:29 
牛弱智不是你的问题,但是对牛弹琴就是lz你不对了。你的帖子之所以没有价值不是因为你说的是不是真实的,而是因为你有没有说出来某些人想要的东西。



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

我想你一次 肩胛就开出寂寞的花 ...


攒钱计划(按顺序):
EF 50mm f/1.2L USM
EF 70-300mm f/4.5-5.6 DO IS USM
EF-S 17-55mm f/2.8 IS USM
空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘
prolj (非常女生)
法王
专业水帖


CU奥运火炬传递手2008
UID:293231
注册:2005-7-19
最后登录: 2008-09-06
帖子:12510
精华:3

可用积分:10272 (大富大贵)
信誉积分:560
专家积分:1241 (本版:0)
空间积分:0
推广积分:0

来自:乡下
状态:...保密...

[个人空间] [短信] [博客]


3楼 发表于 2008-7-3 15:35 
回复 #2 小i 的帖子

姐姐来了 姐姐你不是搞IC的啊?CU有多少搞IC的啊?lz还是去IC论坛吧。



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

别没事瞎搞意识强奸,大家都不是8岁小孩了,你又不是赵本山,想给别人洗脑啊?先回家对着镜子把自己洗成白痴去!
把自己塑造成神搞个人崇拜啊?你不就是会装13吗?对不起,俺是农民,就认实实在在看得见的,你那虚幻的太高深,俺不懂。
我是进来拜神的,顺便带点水,很多牛在天上飞,很多仙在空中飘,遮住了阳光,导致小菜无法进行光合作用,再没有水就没法活了。
空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘
jamesr   帅哥
大天使
人在CU飘,挨刀我就跑



UID:362823
注册:2006-1-13
最后登录: 2008-09-03
帖子:2268
精华:1

可用积分:3034 (小富即安)
信誉积分:100
专家积分:50 (本版:0)
空间积分:2
推广积分:0

状态:...离线...

[个人空间] [短信] [博客]


4楼 发表于 2008-7-3 15:35 


QUOTE:
原帖由 小i 于 2008-7-3 15:29 发表
牛弱智不是你的问题,但是对牛弹琴就是lz你不对了。你的帖子之所以没有价值不是因为你说的是不是真实的,而是因为你有没有说出来某些人想要的东西。

请教?

我不怕对牛弹琴,只怕更多的牛变成弱者。



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

欢迎参加《Object-oriented Programming with ANSI-C》的翻译:
http://wiki.chinaunix.net/index.php/OOC


Everest 0.5正式发布!
空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘
小i   美女 (isjfk)
大法师


CU奥运火炬传递手2008
UID:584243
注册:2007-7-7
最后登录: 2008-09-06
帖子:11034
精华:0

可用积分:2612 (小富即安)
信誉积分:260
专家积分:971 (本版:0)
空间积分:0
推广积分:0

状态:...离线...

[个人空间] [短信] [博客]


5楼 发表于 2008-7-3 15:41 


QUOTE:
原帖由 prolj 于 2008-7-3 15:35 发表
姐姐来了 姐姐你不是搞IC的啊?CU有多少搞IC的啊?lz还是去IC论坛吧。

不是。VHDL、Verilog上大学的时候专业关系玩过,不过都忘干净啦。不过大概怎么回事儿我还是知道的

QUOTE:
原帖由 jamesr 于 2008-7-3 15:35 发表
请教?

我不怕对牛弹琴,只怕更多的牛变成弱者。

他们想要的是证明龙芯抄袭的证据。你的东西再好,货不对版食不对味儿,铁定要被WSBS的



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

我想你一次 肩胛就开出寂寞的花 ...


攒钱计划(按顺序):
EF 50mm f/1.2L USM
EF 70-300mm f/4.5-5.6 DO IS USM
EF-S 17-55mm f/2.8 IS USM
空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘
sjj830210
禁止访问-新手




UID:719827
注册:2008-6-19
最后登录: 2008-08-05
帖子:11
精华:0

可用积分:8 (白手起家)
信誉积分:0
专家积分:0 (本版:0)
空间积分:0
推广积分:0

状态:...离线...

[个人空间] [短信] [博客]


6楼 发表于 2008-7-3 15:41 
*** 作者被禁止或删除 内容自动屏蔽 ***
prolj (非常女生)
法王
专业水帖


CU奥运火炬传递手2008
UID:293231
注册:2005-7-19
最后登录: 2008-09-06
帖子:12510
精华:3

可用积分:10272 (大富大贵)
信誉积分:560
专家积分:1241 (本版:0)
空间积分:0
推广积分:0

来自:乡下
状态:...保密...

[个人空间] [短信] [博客]


7楼 发表于 2008-7-3 15:47 
回复 #5 小i 的帖子

这事情根本就说不清,那些怀疑的人拿到了龙芯的Verilog也不一定死心,再说,光有Verilog有有个毛用啊?SUN的OpenSPARC开源了,有Verilog,有几个人能再弄一个xxxSPARC出来?lz在UNIX论坛讲IC本来就有点不合适。



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

别没事瞎搞意识强奸,大家都不是8岁小孩了,你又不是赵本山,想给别人洗脑啊?先回家对着镜子把自己洗成白痴去!
把自己塑造成神搞个人崇拜啊?你不就是会装13吗?对不起,俺是农民,就认实实在在看得见的,你那虚幻的太高深,俺不懂。
我是进来拜神的,顺便带点水,很多牛在天上飞,很多仙在空中飘,遮住了阳光,导致小菜无法进行光合作用,再没有水就没法活了。
空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘
sjj830210
禁止访问-新手




UID:719827
注册:2008-6-19
最后登录: 2008-08-05
帖子:11
精华:0

可用积分:8 (白手起家)
信誉积分:0
专家积分:0 (本版:0)
空间积分:0
推广积分:0

状态:...离线...

[个人空间] [短信] [博客]


8楼 发表于 2008-7-3 15:48 
*** 作者被禁止或删除 内容自动屏蔽 ***
版主 swordfish.cn   帅哥
广告杀手-精灵使
我为你翻山越岭, 却无心看风景.



CU奥运火炬传递手2008
UID:518526
注册:2007-1-15
最后登录: 2008-09-07
帖子:4143
精华:1

可用积分:7076 (富足长乐)
信誉积分:100
专家积分:190 (本版:1)
空间积分:0
推广积分:0

状态:...保密...

[个人空间] [短信] [博客]


9楼 发表于 2008-7-3 15:49 


QUOTE:
指令相同,具体如何decode由具体的CPU决定,我可以把32位加法指令操作部分decode成1,也可以decode成2,随我喜欢,decode模块怎么可能就一定相同?

中心思想在这里。但是前面的论证有点多余吧。



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

提问必看:提问的智慧
空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘
小i   美女 (isjfk)
大法师


CU奥运火炬传递手2008
UID:584243
注册:2007-7-7
最后登录: 2008-09-06
帖子:11034
精华:0

可用积分:2612 (小富即安)
信誉积分:260
专家积分:971 (本版:0)
空间积分:0
推广积分:0

状态:...离线...

[个人空间] [短信] [博客]


10楼 发表于 2008-7-3 15:52 


QUOTE:
原帖由 prolj 于 2008-7-3 15:47 发表
这事情根本就说不清,那些怀疑的人拿到了龙芯的Verilog也不一定死心,再说,光有Verilog有有个毛用啊?SUN的OpenSPARC开源了,有Verilog,有几个人能再弄一个xxxSPARC出来?lz在UNIX论坛讲IC本来就有点不合适。

重点不在于事实是什么,而是某些人想说什么。比如这个论坛上的某些人,认定了龙芯就是抄袭的,就算你举出了再多的证据,他所做的也是在这些证据中找出来能证明龙芯抄袭的东西。



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

我想你一次 肩胛就开出寂寞的花 ...


攒钱计划(按顺序):
EF 50mm f/1.2L USM
EF 70-300mm f/4.5-5.6 DO IS USM
EF-S 17-55mm f/2.8 IS USM
空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘

首页 » 论坛 » IT业界新闻与评论 »


 


Copyright © 2001-2008 ChinaUnix.net All Rights Reserved     联系我们:

感谢所有关心和支持过ChinaUnix的朋友们    转载本站内容请注明原作者名及出处

京ICP证041476号


清除 Cookies - ChinaUnix - Archiver - WAP - TOP

Processed in 0.071632 second(s), 5 queries , Gzip enabled