Matter Energy Computer 施工贴

查看数: 1479 | 评论数: 13 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2021-2-4 16:45

正文摘要:

本帖最后由 QQ酱49791 于 2021-2-4 16:49 编辑 去年年底,我立了个Flag,要用AE2手搓一台类似于红石计算机的可编程计算机。*这个甚至可以当作一个升学资料(什 反正当作社团活动是可以的) 使用AE2搓计算机?这 ...

回复

QQ酱49791 发表于 2021-8-2 14:21:51
QQ酱49791 发表于 2021-8-2 14:21
重新来吧
这次不从边缘开始,从中心开始

开个新帖
QQ酱49791 发表于 2021-8-2 14:21:18
重新来吧
这次不从边缘开始,从中心开始

工作网络修改了一下,添加了无线终端快捷指令
版本变为rv8
QQ酱49791 发表于 2021-3-2 20:25:35
近期改动:
1、基础运算单元支持直接把元件抽走,加速。以及重构单元。
2、计划加入8位256进制运算器,包括:加法器、减法器、判等器、小于判断器、取小器、取大器
      乘法器……我裂开来,不是很会,不过算法是快速幂修改的快速加。
      除法/取模更加要命了
3、之前说过寻址方案用成型面板。但是考虑到成型面板会罢工(参考拜年纪里的压缩空间自动化,裂开,需要TileEntity更新)因此使用:ME箱子,其元件还能存储1个不同物品(不是一种)配合发信器,达到和之前所述成型面板一样的效果
QQ酱49791 发表于 2021-2-22 22:07:51
设计好了

首先是我们的设计观念:
CPU指AE2模组的CPU,Crafting Process Unit,用于存储进程。由于AE2的CPU的进程树是静态的,无法应对流控制,所以我们需要添加一个流控制器。
流控制器叙述比较麻烦,后面解释之前说用CPU当作任务栈,那么自然得有处理模板、ME接口,以及接受ME接口数据并处理的设备。我称之为数据运输器。
数据运输器负责根据参数,将一个【地址】中的数据,复制到另一个【地址】中,通过ME-IO端口实现。
【地址】则对应的是广义的存储设备:内存、输入仓、输出仓、基础计算单元输入接口、基础计算单元输出接口、寄存器等。
寄存器由32个ME箱子组成,分别作为第一级容器,最快,和其它的【输入仓】【内存整体】等同一等级。
基础运算单元则同样,其接口同样是第一级容器。
内存整体、输入输出仓、流控制器则访问要慢一点。
例如,30个A物品,寻址,到第31个ME箱子
          假如有8个基础运算单元接口,37则寻址到第6个基础运算单元,
                                                        40则寻址到输入仓,连接输入仓整体,再查看B物品的数量,搜寻具体目标输入仓。(可能是输出仓,内存等,不确定)

提供常数库:
0、1、2、4、8、16、32、64、128、256,与寄存器同级。



数据运输器和CPU网络:

操作ID:重命名圆石
地址表示:重命名沙石
流控制操作ID:重命名石头
实值和占位符:重命名铁锭

复制数据模板:地址1+地址2+上一个操作的ID=这一个操作的ID
流控制模板:上一个操作的ID(一般为将1 给到 流控制单元启动器)= 流控制操作ID
在写流控制之前,需要:将bool值给到流控制单元判断器,将1给到流控制单元启动器。

*触发流控制之后要重置所有CPU或者流控制完成后,只留下唯一一个新增运行中的和一个空闲的连入网络。
     为了处理递归只应当把移除栈顶。连接所有CPU会变成队列而非栈!


CPU网络存储系统:操作用的表示地址的元件存在低优先级中、一个只写存储总线,不断输入(伪合成)。





基础运算单元则目前计划有:
*通用:
    M位置是模式控制,设置为1则开始运算,变为0则允许输出。
       *因此基础运算单元应该在【数据运输器】操作的ME-IO端口附近。
    "|"后为输出,前为输入。

*符号:
0->A:将X的物品清空
A->B:将X的物品导入Y
I->A :将A灌满占位符
S(A):A对256取模
!256表示剩下能放256个实值物品的元件

注意:
运算器内置常数256和!256
对256取一次模的实现:如果X>=256,则X->!256

处理器:
小于?(A,B|C):I->A,将A中的占位符导到B,A中仍有占位符则A<B,输出为1,反之输出为0,M=0;

加法+ (A,B|C):clear(C),A->C,B->C,S(C),当C从>=256变成<256时,M=0。

减法 - (A,B|C):clear(C),C+=256,A->C,I->B,B的实值物品清空,C->B,S(C),当C从>=256变成<256时,M=0。


取模%(A,B|C):
    循环执行直到A空:
      扔掉上一个单元x。
      B灌满,占位符给到新的单元x,单元x抽取A中物品。
    将最后一个单元x中的实值物品给到C,M=0。


取较小值min(A,B|C):I->A,A排出实值物品,B->A,A排出实值物品至C,M=0。

取较大值max(A,B|C):I->B,B占位符出至A,B->A,A排除实值至C,M=0。


<=To be continued


流控制器:
1、流控制器单元
流控制器单元……其实就是一个特殊的内存,和运算单元类似。
比如说一个流控制器单位,当输入值>=1时则执行F1() (等价于合成F1),当输入值为0时则执行F0()(等价于合成F0)。则:
CPU网络有2输出总线为之控制:F0\F1。都有红石卡和合成卡。
两个输入端,I0和I1,当I1为1时根据对应的I0激活一个输出总线,然后将CPU重置并将自己设置为0.


先写个程序:输入n正整数个数,找出最大值
用 C.符号.slot 表示运算器地址。A为1,B为2,C为3,M为0
用 T.数字 表示寄存器地址。
St.内存
In.?.first:In.?的第一个单元(取出)
If.?.0判断
If.?.1激活

Main():
In.0.first,St.0
St.1,0
St.0,If.f1.0
1,If.f1.1

f10():
//None

f11():
//C--
St.0, C.-.1
1, C.-.2
1, C.-.0
C.-.3, St.0
//St.1=max(input, St.1)
In.0.first, C.max.1
St.1, C.max.2
1, C.max.0
St.1, C.max.3
//If
St.0, If.f1,0
1, If.f1.1



QQ酱49791 发表于 2021-2-7 08:04:25
重新构思

一个计算机,说白了就是要有很多个组件。这些组件互相通信即可。

对于一个通信,则是要求表明自己是谁,收件人是谁,内容是什么。收件人的查找应当通过寻址器来查找。

这个寻址器可能分很多级,比如说第一级是组件级,告诉寻址器去哪个组件找,然后如果找到是寄存器,那么直接存,如果是硬盘,先看是哪个256字节,再看是哪个16字节,最后再看要存到哪个字节。


craftkuro 发表于 2021-2-5 22:35:41
不明觉厉 刘明

(真的看不懂)

点评

你看不懂个龟龟  发表于 2021-2-5 23:16
全麦 发表于 2021-2-5 22:06:23
不明觉厉 火钳

[ MC百科(mcmod.cn) 除另有声明,所有开放公共编辑的内容均使用 BY-NC-SA 3.0 协议 ]

Minecraft百科CC协议
快速回复 返回顶部 返回列表