CMP设计分享 http://blog.sciencenet.cn/u/accsys 没有逆向思维就没有科技原创。 不自信是科技创新的大敌。

博文

我自己造的计算机我做主

已有 5373 次阅读 2017-11-22 07:55 |个人分类:计算机制造|系统分类:科研笔记| 动态计算机, FPGA


姜咏江

       我在2006年自己造的计算机,是从器件设计开始,设计制造的有52条指令的计算机(见图)。别小瞧它!这可是一台通用计算机,只不过是运行在二进制层面上的。所以只有相当水平的计算机专业人士才可以认可它。

       这是一个8位的计算机,内有求255以内自然数阶乘的程序。255的阶乘结果有多大?告诉你,有210个字节!这个计算机能够丝毫不差的将结果算出来,而且能够用走马灯和液晶屏显示给你看。这个计算机的指令系统在后面,为了用户能够方便地使用这台计算机,我还专门设计了编辑编译软件。不过这台计算机的存储器太小,编辑编译的工作还得在你手头的电脑上完成。不过这丝毫不会降低你深入理解计算机的核心。当你手动开关和按钮,将编译好的二进制程序送入这台计算机,并且很快就会得到结果的时候,一定会很兴奋。我当时的兴奋劲儿,你也许能够理解,因为这是我自己制造的计算机。


       一晃,十年的时间过去了。利用这台计算机的硬件,我当时还制造了动态计算机PMC362。针对动态计算机的设计,当时我还申请了国家专利,然而。。。

       除了每年我给20多个研究生讲自己如何制造计算机,或者有一些读了我的《自己设计制作CPU与单片机》一书的人,中国的计算机业界却是无动于衷,大家的眼睛总是盯着西方的高人嘛,因而我想推广动态计算机的设计在国内十分艰难。不过国外倒是有人找过我,告诉我,我的专利已经失效等,让我明白了权利。不论如何,研究给我带来的兴趣,远远超过了其它。自娱自乐是每个科研人独享的乐趣不是?

       我设计制造的这台计算机用于研究生或者本科生教学最好不过,因为通过它,你可以从无到有,从硬件到软件,系统地学习和掌握计算机的全部理论知识。现在大学计算机专业的教学课程设置实在是不敢恭维,最重要是缺乏系统性,将一些完全可以在使用中自学的东西拿到大学课堂上讲,实在是浪费学生的生命!一句话,中国的大学缺少真正的计算机科学教育家。我在十年前这样说过,现在还这样说。没有自己设计制造过计算机的人,成不了真正的计算机专家。

       计算机科学是一个非常系统的体系,它和计算机应用是截然不同目标的东西。将计算机应用做为计算机专业的主要内容,真不知道那些专家们是如何考虑的。中国要成为世界强国,实现中华民族伟大复兴,在计算机科学最核心的领域不能走在前面,不去造就一大批未来的人才,在如此信息化的人类时代,恐怕成为空谈是有可能的。

       说远了。还是劝有心人,自己去制造一台计算机试试,你的收获会无比的大。

检验程序运行的例子

call 乘积子程序地址;call 自然数和子程序地址;call转十进制子程序地址;call 阶乘子程序地址。

它们对应的具体输入是:88 300E 80 (调用8位无符号整数乘积);88 70 0F 80 (调用小于22的自然数和程序);88 92 3F 80 (调用将8位正十六进制数化成十进制数程序(液晶版));88 60 0E 80(调用255以内阶乘,阶乘结果的最后2位是十六进制数是字节数)。‘88’是call的编码,后面十六进制的16位地址输入时低字节在前,高字节在后,‘80’是程序输入结束代码。

1  PMC教学计算机指令集

序号

功能设想

英文助记符

操作码

次数

操作码

(2进制)

1

把R数据存储单元内容送到累加器da

LDA  R

81

3

10000001

2

数据存储单元R的内容与累加器da的内容相加结果送da

ADD  R

82

3

10000010

3

用累加器da的内容减去数据存储单元R的内容结果送da

SUB  R

83

3

10000011

4

将R存储单元内容输出

OUT  R

84

3

10000100

5

跳到程序存储器的R单元取指令执行

JMP  R

85

3

10000101

6

如果累加器da的值是0则跳到程序存储器的R单元取指令

JZ   R

86

3

10000110

7

如果累加器da的值为负则跳到程序存储器的R单元取指令

JN   R

87

3

10000111

8

调子程序

CALL R

88

3

10001000

9

输入数据到数据存储器的R存储单元

IN   R

89

3

10001001

10

将累加器da的内容送到数据存储器存储单元R

STR  R

8A

3

10001010

11

将数N送到累加器da

SDA  N

8B

2

10001011

12

将累加器da的内容入栈

PUSH

4C

1

01001100

13

将堆栈的内容送到累加器da

POP

4D

1

01001101

14

从子程序返回指令

RET

4E

1

01001110

15

将PTR的内容加1

INC

4F

1

01001111

16

将PTR的内容减1

DEC

50

1

01010000

17

将累加器da的内容送x寄存器

DATX

51

1

01010001

18

将累加器da的内容送y寄存器

DATY

52

1

01010010

19

将寄存器x、y的内容互换

XCHY

53

1

01010011

20

x的内容送da

XTDA

54

1

01010100

21

y的内容送da

YTDA

55

1

01010101

22

将累加器da的内容送到ptr低8位

DALP

56

1

01010110

23

将ptr的低8位内容送到累加器da

PLDA

57

1

01010111

24

将累加器da复位为0

ZERO

58

1

01011000

25

将数据输入到ptr指示的程序存储单元

INP

59

1

01011001

26

如果除数为0则跳转到程序的R单元指令执行

JERR R

9A

3

10011010

27

如果输入的数据是h80则跳转到程序的R单元指令执行

JEND R

9B

3

10011011

28

左移一位是1跳转到R单元指令执行

JL   R

9C

3

10011100

29

右移一位是1跳转到R单元指令执行

JR   R

9D

3

10011101

30

输入缓冲区空暂停

STPK

5E

1

01011110

31

求da值的按位逻辑非,结果在da

LNOT

5F

1

01011111

32

Da与R存储单元的逻辑与放入da

LAND R

A0

3

10100000

33

Da与R存储单元的逻辑或放入da

LOR  R

A1

3

10100001

34

Da与存储单元R的逻辑异或放入da

LXOR R

A2

3

10100010

35

将da左移一位送x,da不变

SHL

63

1

01100011

36

将da右移一位送x,da不变

SHR

64

1

01100100

37

执行下一条指令

NOP

65

1

01100101

38

将累加器da的内容送到指针ptr高8位

DAHP

66

1

01100110

39

将指针ptr的高8位内容送到累加器da

PHDA

67

1

01100111

40

输入数据送到ptr指示的数据存储单元

INPD

68

1

01101000

41

将da的值送到ptr指示单元

DAPD

69

1

01101001

42

将ptr指示单元内容送da

DPDA

6A

1

01101010

43

有符号da与R单元相乘,结果低字节送da,高字节送x

MULS R

AB

3

10101011

44

累加器da与R单元相除,商送da,余数送x

DIVI R

AC

3

10101100

45

累加器da与R单元带进位加,结果送da,进位保留

ADDC R

AD

3

10101101

46

累加器da与R单元带进位减,结果送da,进位保留

SUBC R

AE

3

10101110

47

无符号da与R单元相乘,结果低字节送da,高字节送x

MULT R

AF

3

10101111

48

无符号da×R+x,本位结果送da,进位字节送x

MADD R

B0

3

10110000

49

进位为1跳转

JCRY R

B1

3

10110001

50

清除进位

NCTY

B2

1

10110010

51

停止程序执行

STP

7F

1

01111111

52

程序输入结束

END

80

1

10000000





https://blog.sciencenet.cn/blog-340399-1086279.html

上一篇:对于公开的难题你不必在别人的方法上浪费时间
下一篇:再谈自己设计制造CPU与计算机
收藏 IP: 122.224.9.*| 热度|

4 张学文 吕洪波 吴昊 徐明昆

该博文允许注册用户评论 请点击登录 评论 (8 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-12-21 22:04

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部