信息安全方向,设计软件CPU

eeq619   2009-9-16 19:06 楼主
    用软件模拟 自动机 用于加密解密中,本次的想法是用于认证。
    同时,能够和硬件实现加密算法的,就互相参考。

    第一节 虚拟机问题
    第二节 输入输出
    第三节 指令系统的操作数和操作符的问题。

回复评论 (12)

    比如,对一个1024字节的数 IN0 作输入,也就是作为一个明文(对应的是密文)。

    要设计的系统,如果最多的话,需要1024种操作符。而且需要全部对其完成“取指,分析,译码,执行”等几步骤。

    要实现的指令系统,需要1024种译码电路。

    (1)算法指令。包括:关系,逻辑,算术运算操作。
   (2)控制指令。转移,跳转。
    (3)处理内存、寄存器、EPROM中的数据。
    (4)特殊寄存器处理。

    需要用软件实现。



     
点赞  2009-9-16 19:13
    同时,对设计加密解密芯片有支持作用。
点赞  2009-9-16 19:14
    有两个方向:

     从设计来说,有从上级和下级同时开始设计。象《计算机体系结构》,指令系统就作为 软件 和 硬件的界面。
     确定后,可从虚拟机的两端同时设计。

     
点赞  2009-9-16 19:19
技术讲解?你的软件虚拟cpu有啥特殊的吗?或者说与众不同的
点赞  2009-9-16 23:56
楼主要做甚?
点赞  2009-9-17 00:32
  想用于认证。

  就是客户端可以通过软件CPU将输入数据D1变换成D1——1,而服务端也是通过软件CPU将输入法数据D1变换成D1——1的话,就通过认证。
点赞  2009-9-17 08:32
  假设输入数据是二进制,共10位,则需要1024种指令。

  对这些指令都要进行译码。

  还有PC指令计数器等内容。
点赞  2009-9-17 19:42
  译码的结果,是对数据进行处理。这些数据分布在:

  1、寄存器;
  2、内存;
  3、虚存;
  4、外部磁盘;
  
  同时需要处理指令数据,即完成控制类信息。
 
  一般的汇编语言编成的程序,还必须和外部输入进行处理。
点赞  2009-9-17 19:44
想弄一个类似java的?
点赞  2009-9-17 20:48
面对不同人群,对简单计算器CPU的解释(以前的帖子)

============================================================

计算器是怎样工作的?
我们看到的,是 1、输入部分 和 2、输出部分。

输入部分送信号和数据给计算器的内部计算结构:键盘。

输出部分,我们所看到的结果:显示屏。

==========================================

从 数字的显示 开始谈起
先说说看得到的。

我们可能用过CALL机。可以显示:

0,1,2,3,4,5,6,7,8,9,A,b,C,d,e,f。

对于学过计算机原理的人说,就是十六进制的16个数。

这16个数,都是由7段“条条”组成。横的:3 条,竖的:左边 2 条。竖的:右边 2条。

怎样显示呢?

每个条纹,是有开关可以通电的。因为是数字电路,所以只有两种电平:正电平,负电平。

正电平时,显示条纹。注意:这个条纹一般是电势差,换句话说,除了给出信号的电平外,

接上这个条纹的,还有一个“地”电平。

         反复送高电平,就不停地显示。称之为刷新。REFRESHING。

============================================================================

那么算盘是怎么工作的?

算盘又是输入又是输出。它却好象是10进制的

============================================================================

FIREFOX 你让我大吃一惊
发现算盘真的又是输入又是输出
又是键盘又是显示屏耶
图形界面,而且立体
不耗电很环保,音响效果也很好
-----那你说说这是什么原理呀
曾经有把名贵的算盘摆在我面前而没有珍惜
现在非常怀念。那是百张翻打第一的奖品
当然获奖者不是我,她把奖品送给我
她说:太沉了不好使,我说:这是铸铜柜架的耶
市面上买不到的``````,最后它不知所终

============================================

开玩笑打的。你的回帖也让我吃惊。实际上我不知道算盘的工作原理揭示了什么。好些国内一批心算高手就是从珠算练习起步的。中间阶段是一个没有任何珠子的算盘,算珠的拨动完全靠想像。到高级阶段这个算盘筐子也不需要了,一个虚拟的算盘完全在脑海中自动运算。许多高手的运算速度完全超过了计算器处理的速度。这样的例子,生活中太多了。象棋,围棋中的盲棋;一切的学习模仿都是这样吧

对此不太好比喻。这里到底发生了什么。强为之比喻,只能用大脑=生物计算机 来形容。

不知道大脑处理外界信号的模式到底是什么样的。有人说,大脑在一系列类似的外界信号刺激后,会形成固定神经元兴奋通路和处理模式〔NLP?〕。这样,背负着太多的过去,思维模式不去寻找最简单高效的道理而去走复杂迂回的通路。

也许,自己想办法丢掉没用的东西,RESET and FORMAT,把自己当作一个一无所知的婴儿,静下来,对身体、心灵活动做最彻底透彻地观察,领悟;重新学习和认知世界,倒是一条好办法。

[ 本帖最后由 firefox 于 08-5-4 02:30 编辑 ]

==============================================

你解释得很好,人脑的复杂和奇妙是无与伦比的,人有直觉想象和灵感,人能创造和制造
我只是佩服你由复杂的计算机简化为算盘的反应

我是学财经,有过珠算考级的的经历,其实我对算盘的机械计算原理还是知道一些,只是怀念那个时候,一方面在学计算机,同时又在练算盘``````

我也想过把自己的人生RESET OR FORMAT 一下,可是难啊,运行中的人生,那怕是痛苦的,我也不舍得中止,它也是我生命中的一部分,血肉相关`````

===========================================

为什么显示屏要刷新?怎样刷新?
一个数字位有七段。前面讲过,横的有三段,竖的,左边有二段,右边有二段。

为什么要刷新?

这是由显示七段的特征决定的。如果没有电势差加在七段的某一段,这一段就不会显示。
所以,要不停地送电势差。可以理解,送一次电信号(电势差),就会显示一位,然后,能量会以光能的形式耗尽。因为显示屏显示数字位时,是要消耗能量的。

怎样刷新?

1、人眼是视觉方面的错觉的。只要刷新的间隔在一个时间间隔内,比如说,是0?1秒,就会错觉该位的七段是在连续显示。
2、所以CPU和软件是这样处理的:软件是在不停地循环运行,每隔0?1秒,就送一次电信号。
3、送电信号的处理方式:
给个程序代码吧:
for (;;)
                /*for 指令表示将反复循环运行花括号内的三个程序段,三个程序段从送到尾运行完,就再重复一次。这样,反复循环*/
            {
                   /*主要检测程序段*/  
                   /*等待键盘输入,并作相应处理,以及显示结果的程序段*/
                   port_1?3=0x 01;   /*第1个端口的第3位送高电平*/
            }
       4、所以,计算器中的程序,只要一按ON键,就反复运行 for 语句下的循环。
       5、具体的 for 循环,可能还要复杂一点。





显示屏的刷新,在CPU中央处理单元和软件中,是如何处理的呢?

============================================

CPU和软件怎么知道你按了哪个键?
每个键,在弹起,而没有按下时,都不会有信号传给CPU和软件。

键的按下与否,是有一个开关来进行判断的。

“计算器”有许多键,所以有许多小的开关。是开关和连接到CPU的线路的开关阵列。

给个程序代码吧:
for (;;)
                /*for 指令表示将反复循环运行花括号内的三个程序段,三个程序段从送到尾运行完,就再重复一次。这样,反复循环*/
            {
                   /*主要检测程序段*/  
                   /*等待键盘输入,并作相应处理,以及显示结果的程序段*/
                   port_1?3=0x 01;   /*第1个端口的第3位送高电平*/
            }

其中“等待键盘输入”,就是如下的程序段:

if port_2?3== 0x 01 bian_liang_de_di_3_bit=0x 3;
            /*如果(IF) 专门用于检测键盘是否按下3,的端口PORT 2的第3位 ,的开关,是高电平(0X01),
那么,显示屏的所对应的显示变量赋值3*/

            上面这句话怎样理解呢?

       1、计算器是根据对应的变量来确定显示什么的。显示屏每位都对应一个变量。
       2、如果显示屏某位对应的变量是3,或者6,那么,再驱动显示3,或者6。
       3、显示的数字位,和实际在内存中计算的位,是不同的。
       4、比如,两个三位十进制数123+456相加。
       5、123,和456,在内存中是有存储的。
       6、显示屏上的三位十进制数123,是只管显示。CPU和软件计算时,是只看内存的。CPU和软件是只对内存中的数进行计算。
       7、内存对应三位是123,那么,就会显示在显示屏上。是一个对应的关系的。

==============================================

计算器的体系结构、物理组织是怎样的呢?
计算器的体系结构、物理组织是怎样的呢?

计算器,除了有输入部分、输出部分,还有CPU(CENTRAL PROCESS UNIT中央处理单元),内存单元,程序的存储硬件单元。

以及把它们连接起来的电路,这些外围电路,统称为外围电路。

开机时的动作:
第一步,自检。有一个专门自检的电路。检测内存:能否正确地读出刚写入的内容。还有外围电路有没有故障。
第二步,程序进入主循环。
第三步,反复刷新显示“0”。

程序存储在哪里?

它是已经编好的。不象PC机和台式机和笔记本计算机的程序,可以修改。计算器的程序是不能修改的。
它一般存储在一个只能读的存储组织中,通常称为EPROM(ELECTRONIC PROGRAMMABLE READ ONLY MEMORY)。

有的计算器,是将程序和CPU放在整个CPU单元中的。总之,计算器中的程序
不能修改。

[ 本帖最后由 thail08 于 08-5-4 06:19 编辑 ]

============================================

算盘和古代先人的结草计数差不多吧。

也和鲁滨逊在荒岛上的划道道计算日子差不多。

================================================================================

thail08 是华为公司的精英吧
这是我看到的关于计算器(机)工作原理的通俗说明,我看懂了。我外甥九岁,能用两种代码写计算的程序,到现在都不用自己写了,相关计算模块都是现成的。可他问过我和老师,计算机是怎么工作的(指硬件原理)?我们都答不出来。我只能告诉他,PS2游戏机的工作原理``````

算盘决不是结草计数或囚徒划道道计算日子。由此可见,你对算盘没有使用过。算盘是机械计算的肇始,是人类最了不起的发明之一,它的原理是人脑和它并用,使用者必须明白计算和它的原理才能使用。之后文艺复兴时期西方人在此之上制作了更复杂的机械计算机,你见过现代的手摇式计算机吗?
电子计算机是在相关技术成熟后,瓜熟蒂落的。说实在的它本身并不怎样出众,倒是对它的运用人们发挥了无比的创意和热情。
-----国外某著名电脑展馆,向人们详尽展示了电脑的发展和形式,展示电脑的强大和精致。但是,展馆的最后高潮部分是,一个玻璃柜中的一把中国算盘,上面说:紧急情况下,电脑失灵时,请砸碎玻璃,用它帮你解决问题

最后,和你讨论一下关于电脑和算盘对使用者的影响和意义。毫无疑问,电脑无所不能,特别是对付日常的简单计算,但是,使用者在得到高效方便的同时,自的某种能力会丧失,人的情况就是这样,不用再废;相反,在处理简单的累加等方面,算盘不必计算器逊色,而且使用者手脑并用,人的能力会保持和精进。就象FOX说的,高手心算能力的奇迹

我们已经是这样了,但是,我想,如果我以后会有孩子,我一定要让他先学会算盘,然后,作为奖励,才让他玩电脑`````

==============================================================================

老泰的帖子,我也看懂个大概,除了算法部分(我的弱项). 但,技术终归是技术而已,如果被这些知识禁锢自己的思想,倒不一定是个好事情.

这里是讨论和解决心灵困扰的论坛.发些大多数人看不懂的专业知识,我个人认为意义不大.我要打些自己专业上的东西,估计别人也不看.但,我们可以挑出思维的圈子,从知识中反思人生和哲学思想. 在西方,哲学就包括科学.

扯个我认为有趣的知识吧:一个特定的生物物种,如何在众多的各有优势的生物群落中取得自己的立足和生存之路(在生物学中,叫做占领特定的生态位)?它们主要采取两种策略: R策略和K策略.

R策略: 这类物种对特定的环境适应能力一般,但它们通过具有很高的繁殖率,扩散能力强,这样,总有一部分它们的后代能到达它们能适应的环境,从而生存下来。细菌,昆虫,野草都是这类生物的典型代表。
K策略:相反,这类物种对环境的适应能力很强,体型大,生命周期长,繁殖率不高,后代需要亲代的照顾直到成熟。包括:狮子,老虎,鲸鱼.其中最典型代表,就是我们人类本身!

这些需要我们反思什么呢? 如何适应社会环境和生存? 采取R策略还是K策略?是到处寻找能适合自己生存的外在环境,还是自己主动调节自己,让外在环境适应自己?

这是运用在社会学上的反思,我们也可以把它,把自己学到的知识,都可以进行扩展,运用到哲学,生存,经济学,生活中,包括解决自己的生活中的难题.

只有如此,学习才有价值和意义.

================================================================================

华为公司倒是呆过4年整,不过不是精英。呵呵。

生存法则,自然界和人类社会不同。都非常的复杂。都有复杂的规则。

在人类社会,就是愿意学习和运用吧。做个有用的人。

=============================================================================

点赞  2009-9-19 22:59

你想计算的数,计算器是怎么知道的?怎么用它们进行计算的?
假设你要计算求和:123+456。

心算当然很快。但如果是5位以上的求和,以及有进位的求和,以及2位以上的相乘和相除,心算和笔算,都要经过专门和比较长时期的训练。

如果是小孩,更是要数年的时间来学习和温习。

回过头来说。

计算器怎么知道你想算什么?

先说计算是怎样进行的。这是关键。也就是计算机为什么叫计算机。

===============================================================================

计算机是怎样进行加法运算的?

有几个名词先要解释一下:
1、内存,ALU,
2、指令,操作数,操作符,
3、程序计数器PC(Program counter),
4、取指令,译码,执行,
5、CPU引脚(英文称为:PIN),连接内存和CPU引脚(PIN)的电路。
6、CPU内部结构。

============================================================================

1、内存:
  是计算机中存储器的一种。
  所谓存储器,就是你写入一个数之后,可以反复再读出来。
  可以反复进行这样的写入操作。

  内存和外存不一样。
  外存,一般有:硬盘,移动硬盘,U盘等。
  内存直接插在主板的槽里,共用主板和CPU的“三总线”。即:控制总线,地址总线,数据总线。

  内存的读写速度,一般比外存快一个数量级。即总体来说,要快10倍。当然,具体情况有所差异,有所不同,不能一概而论。

  内存所使用的材料,也和硬盘等外存的材料不一样。

  内存小容量,外存大容量。这和材料、成本、速度是相关的。

================================================================================

插上电工作的。。。。。。

================================================================================

6、CPU的内部结构和工作原理

  CPU一般包括:
  (1)运算逻辑单元ALU(Algorithm logic unit)。进行二进制的运算。最主要的操作就是二进制下某种码制下的加法操作。涉及多位加,多位减,多位乘,多位除。
  (2)取指、译码、执行部件:控制总线,从相关总线上取指令、取数据。
  指令则需翻译,否则ALU不认识。
  然后执行。
  其运算结果又从总线上发送出去。
  (3)CACHE:一种高速的存储部件。把内存和外存中计算要用到的数,存储在此。
  这是通过一些由硬件实现的算法实现的。象LRU (Least Recent Used)---最近最少使用的,就“交换”到内存或外存中去。
  因为计算机的数据处理有 20/80 特性:即20%的数据是在80%的场合要用到的,要用于计算的。
   
***这6部分的部件,都是集成在CPU中的,所以,一般判断芯片的复杂度,就用几千个门电路,几万个门电路,几十万个门电路,以及上千万个门电路来表示。
  (4)总线接口(PIN)--和引脚相连,总线的驱动部件(和接口引脚相连的外围芯片和外围电路,需要电的功率)。
  (5)程序计算器PC(Program Counter):指示程序下面要运行什么指令。
  (6)内部总线:传送数据。包括指令型数据,和数据型数据。虽然是内部的,但它通过一些相当于开关的电路,和外部电路相连。可以控制和驱动外围电路。

===========================================================================

所谓PIN,引脚,就是“管脚”,芯片的脚。类似镀金的东西。

=============================================================================

  所谓芯片有XXX百万个“门”,是指有等价的XXX百万个“门电路”。

  《计算机原理》中的“门电路”,主要有“与门 AND GATE”,或门 OR GATE,非门 NOT GATE。

  这些,是基本的“门”。

  比如说,
  非门,具体的物理结构,是通过设计一个晶体管(三极管)和相关的电阻、引脚,来实现的。

  与门和或门,一般是由一个二极管和相应的电阻和引脚组成。

  在芯片的内部,每个门非常“小”,现在密度已经到了“微米”级。1微米=1000纳米。

  每个门的长和宽,大概也就是几个微米。

  ******************
  学过《数字电路》教材的人知道,由这几种简单的数字门电路,结合布尔逻辑BOOLEAN LOGIC,可以最终设计出多位加法器,多位乘除法器,存储单元,运算结构,
  乃至最终形成整块CPU。

==================================================================================

1米=1000毫米
1毫米=1000微米

而且CPU可能是分成多层。

是通过平面印刷、遮掩、腐蚀等类似的方式生成的。

===============================================================================

应该是到45nm了
===============================================================================

1微米=1000纳米,NM

================================================================================

你想计算的数,计算器是怎么知道的?怎么用它们进行计算的?
  也就是怎么输入数据到计算机中的问题。

  for ( ; ; ) /*进入主循环*/
       {
    第一步,反复检测键盘是否有键被按下。
    第二步,相应的变量赋值。先按下3,则变量xian_si_v=3。再按下4,则变量xian_si_v=34。
    第三步,计算器启动显示机制,将34显示在屏幕上。
       }
    键盘的信息是怎样组织的?

  第一,不需要每个键都连一根线路到CPU。
  第二,可采用译码器机制。
  第三,假设键的数量,在32以内。则CPU只要端口的5根线,也就是5个管脚就可以了。

  具体是这样实现的:
  考虑10进制数。假设有2位的10进制数,则可以表示100个数。即0~99。

  再考虑2进制数。
  假设有1位的2进制数,则0,1可表示两个数。
  假设有2位的2进制数,则00,01,10,11可表示四个数。这里,为什么2位只有这四个数呢?
  因为,00加上1个,自然等于01,不用怀疑。如果再加上1个呢,怎么表示?也就是01+1=?

  01+1=?

  回头考虑10进制数的一位。它可取值的范围是:{0,1,2,3,4,5,6,7,8,9}。
  2+3=5,3+5=8,8+5时就有问题了,需要进位。

  个位是3,10位就是1了。

  再举一个例子。
  33+99=百位数是多少?十位数是多少?个位数是多少?
  显示分别是1---3---2。即个位数是2,十位数是3,百位数是1。

  同样,二进制数的取值范围只有{0,1}。也就是大家看到的所谓二进制数,都是由0和1组成。

  0+0时不进位,0+1和1+0时不进位,1+1时,低位=0,进位为1。

  再回过头来看,为什么说32个键的线路,只需要5个CPU的管脚就可以了呢?

  这是因为2^5=32,这里的 ^ ,即PC机键盘上的数字键6上面的符合,英文状态下同时按下SHIFT键和数字键6,就可以显示出来。它在计算机中,是用来表示指数运算的,正象*表示乘法运算一样。

  

===============================================================================

也就十进制数,两位可以表示100个数,从0到99。

同样,二进制数,一位可表示2个数,两位可表示4个数,三位可表示8个数,四位可表示16个数,五位可表示32个数。

10的0次方=1。10的1次方=10。10的2次方=100。

2的0次方=1。2的1次方=2。2的2次方=4。2的3次方=8。2的4次方=16。2的5次方=32。

那么,为什么说5根CPU的管脚线,可以控制最多32个键呢?

===============================================================================

5位编码器




=============================================================================

编码
00000,5个0表示,第一个键的线。
当CPU的5个管脚(指专用于控制键盘的5个管脚)
的电平分别是“低低低低高”时,就表示选中第一个键,可以由信号电路输出电平给它了(第一个键)。

反过来,当CPU的5个管脚,采集到“低低低低高”时,就表示第一个键按下了一次。

00001,表示第二个键的线。CPU的5个管脚检测到第二个键被按下了一次。
00010,表示第三个键的线。CPU的5个管脚检测到第三个键被按下了一次。

……
……
……
11110,表示第31个键的线。CPU的5个管脚检测到第31个键被按下了一次。
11111,表示第32个键的线。CPU的5个管脚检测到第32个键被按下了一次。

===============================================================================

一位二进制数是{0,1}。
两位二进制数是{00,01,10,11}。
三位二进制数是{000,001,010,011。100,101,110,111}。
四位二进制数是{
0000,0001,0010,0011。
0100,0101,0110,0111。
1000,1001,1010,1011。
1100,1101,1110,1111。}总共可用编码来表示16个数。
五位二进制数是{
00000,00001,00010,00011。
00100,00101,00110,00111。
01000,01001,01010,01011。
01100,01101,01110,01111。
---
10000,10001,10010,10011。
10100,10101,10110,10111。
11000,11001,11010,11011。
11100,11101,11110,11111。
}
=============================================================================

32个数表示32个键。

每个二进制数可表示一个编码,并不表示数,只是用这个数来表示一条线路。

上图中“CPU控制键盘的管脚1”,表示连接到相应的CPU管脚的线路。
=============================================================================

上图中的方框表示“32到5的编码器”。

其表现形式是功能和原理图,具体的印刷图要复杂些。

=============================================================================

如果电参数等匹配的话,简单的计算器电路就这样。

但要达到这样的效果,MCU(在嵌入式系统中CPU称为MCU)和外围电路需要特殊设计,需要大规模生产,才能将成本降下来。

而现实中的电路,会有各种干扰和噪声,需要进行功率转换、信号转换、信号匹配、屏蔽干扰、信号过滤、噪声消除的特殊电路。

比如,有的外围器件,功率会非常大,光是一块10来W,几十W的CPU,是不可能驱动的。
它们的电流和电压的有效范围也可能非常大。

这时,硬件设计师因为经常设计和选择器件,就得心应手了。
点赞  2009-9-19 22:59
    个人博客地址:

     http://hi.baidu.com/ftai.
点赞  2009-9-19 23:00
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复