免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: kgisme170
打印 上一主题 下一主题

xchg命令是如何在cpu层面实现的? [复制链接]

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
11 [报告]
发表于 2010-12-28 21:06 |只看该作者
回复  garyv


    我觉得是不可以没有temp的,至少temp应该是1bit
wwthappy 发表于 2010-12-28 17:27



    不要用软件的思维去思考硬件,硬件不像软件那么回事

论坛徽章:
0
12 [报告]
发表于 2010-12-28 21:41 |只看该作者
回复 11# cjaizss


    不是软件硬件的问题啊,确实得要用交换啊,要不怎么整呢?用verilog写估计也得这么写:
   
   always @(posedge clk)
    begin
  
       temp[7:0] =        a[7:0];
       a[7:0]       =        b[7:0];
       b[7:0]       =  temp[7:0];

    end

   这里module没有写端口(只有a,b和clk),只是一个程序块。综合后生成的硬件就能完成xchg指令。这个代码综合后至少需要2个周期才能完成交换,(阻塞赋值非阻塞忘记了,好久没用了,用错请见谅)估计没有指令能在一个周期完成交换吧!
   这里的temp综合后就是一个芯片内部的寄存器,但是没有引出端口,硬件对程序员就不可见,仅次而已。

论坛徽章:
0
13 [报告]
发表于 2010-12-28 21:45 |只看该作者
只要一个变量是内存, 那么考虑处理器内部时钟频率和处理器内部总线频率和外部总线频率就不应该有一个时钟搞定这种想法.
从现在体系结构和工艺上讲,一个次搞定根本不可能.

至于是否存在2个寄存器直接对换的技术. 不考虑寄存器重命名. 而是考虑直接数据交换技术的话
先从系统思维角度来看.数据真正的存储状态,在触发器中.确切的说在门电路元件中,再确切在漏电流电压对栅极的影响.
如果是直接对换,那么不应该是非主从触发器.因为如果输入状态能瞬时影响输出状态,那么2组数据会相互串扰,当然可以通过电路延时来做到精确一致,防止不确定情况发生,但是过于依赖电气的精确必然工艺要求非常搞.
而所谓主从触发器也不过是将时钟二分频的一种做法.这实际在触发器级别-比寄存器级别更低级别上-有临时存储.而且不只增加一个TEMP是个2个TEMP.

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
14 [报告]
发表于 2010-12-29 12:18 |只看该作者
本帖最后由 cjaizss 于 2010-12-29 12:22 编辑
回复  cjaizss


    不是软件硬件的问题啊,确实得要用交换啊,要不怎么整呢?用verilog写估计也得这么 ...
wwthappy 发表于 2010-12-28 21:41



    这么写可以,阻塞写法,但注意这只是写法而已,实际并不是那么回事,我在前面说了,两个D触发器互换值就是D,Q对接
  另外,对于verilog,非阻塞的写法更接近硬件行为
  关键要明白是如何综合的.
   对于CPU这样的复杂电路,xchg指令并不一定会马上导致两个寄存器值互换,只要语意上对就行了,但这个已经和硬件上的寄存器互换不一样了.
  always@(...posedge clk)
   ...
   else if(xchg)
      begin
      A<=B;
      B<=A;
      end

论坛徽章:
0
15 [报告]
发表于 2010-12-30 15:06 |只看该作者
回复 13# epegasus


    不信8051能在一个机器周期内完成的人可以看下面的连接(注意里面的"XCH A, @Ri"指令,就是1个cycle完成):

   http://blog.163.com/qian-fly1987 ... 490782009917403096/

    8051是intel在上个世纪70年代设计出的一款mcu核,相信现在的处理器都可以做到最短指令时间完成。

论坛徽章:
7
丑牛
日期:2013-10-18 14:43:21技术图书徽章
日期:2013-11-03 09:58:03辰龙
日期:2014-01-15 22:57:50午马
日期:2014-09-15 07:04:39丑牛
日期:2014-10-16 14:25:222015年亚洲杯之伊朗
日期:2015-03-16 10:24:352015亚冠之城南
日期:2015-05-31 09:52:32
16 [报告]
发表于 2010-12-30 16:24 |只看该作者
回复 15# garyv


    查了下.上面写的周期叫机器周期.
8051有时钟周期 机器周期 指令周期 ,从下到上的分级别. 一个机器周期包含多个时钟周期.
并且XCH能操作内部RAM. 8051分内部RAM和外部RAM2种.虽然都统一编制,但是明显内部RAM很有限.而且可以对位寻址. 它更像是处理器内部的寄存器.

论坛徽章:
0
17 [报告]
发表于 2010-12-30 18:07 |只看该作者
回复 16# smalloc


    你说的是对的,8051的一个机器周期=12个振荡周期,1个振荡周期=1/(Core clk),它的最短指令执行时间是一个机器周期或12个振荡周期。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP