1、 TIS-100 TESSELLATED INTELLIGENCE SYSTEM( 网状 智能系统 ) 参考手册 m- 对于 Randy 叔叔的突然离去 , 我们依然震惊不已 。 在 等待验尸官给出死亡原因的时候 ,我们尽力应付着一切。我一直在努力收拾他的东西,尤其是 他的 电脑。 当然,我看了一眼车库,那里面的东西对我来说就像一团垃圾。有机会的话我会发点图片。 眼下 , 这是他死的时候工作台上准备的机器 。 也许你能搞清楚他当时正在用这个干什么 。如果 他知 道有人将要完成他的工作 , 他肯定 会 很高兴 。 Love, Aunt Doris. 概述 Tessellated Intellig
2、ence System是 一个大规模并行计算机体系结构 , 由非均匀的互联的 异质节点构成 。 Tessellated Intelligence System非常适合 做需要处理复杂数据流 的应用 ,如自动金融贸易,大量 数据 的收集,以及对 百姓 的行为分析。 注 : 本手册中的注释会像这样指明需要特别注意的情况以及对于特定主题有着更多信息的其他文档。 系统的体系结构和组织 Tessellated Intelligence System包括大量 连接在本地基础上的 独立 节点。(参看 model-specific手册来了解特定设备上节点的精确数量 。 ) 节点类型可大致分类为处理型和存储型,
3、而各类别里 又有着些不同变种 。 一般来说,节点通过接口最多和四个邻节点相连。节点之间可以通过接口进行轻量消息传输。传输是由两个相邻节点配合完成的:其中一个节点向接口发出读入或写出的信号,然后此传输暂停,当另一个节点发出对应的信号时,该传输便完成了。 注 : 如果两个节点在消息传输时发出相同的指令 (读入或写出),节点会陷入僵局 并 产生硬件故障。参看分离的文档 “Tessellated Intelligence System Best Practices - Patterns of Node Communication“来了解如何有效而安全地使用接口 。 注 : 如果一个节点发出消息传输的指
4、令却不再被对应的节点响应,该节点会陷入僵局 并产生硬件 故障。(例外存在,参看特定节点类型的文件了解更多细节) 参看分离的文档“Tessellated Intelligence System Best Practices - Patterns of Node Communication“来了解如何有效而安全地使用接口。 注 : 本文档不包含针对数据传输时间或者吞吐量的操作或指令 ,因为这些数据因模型和硬件校正而不同 。参看 model-specific手册来了解对特定设备特性的详细描述。 节点类型 T20 保留 注 : 此节点类型标识符限于 Tessellated Intelligence S
5、ystem的特定模式,将不在本文档中描述 。 节点类型 T20 的资料仅分布在 包含该节点的类型系统。 根据法律要求,未经授权地要求复制描述这个节点的资料会报告给国家安全局。 ? 节点类型 T21 基本执行节点 1. 结构 基本执行节点负责协调 Tessellated Intelligence System的行为 。数据 处理可以发生在基本 执行节点中,或者可以 委派给专门的处理和存储节点。 基本执行节点 执行程序 , 程序 由 基本执行节点指令集 中的指令组成 。 基本执行节点的程序制定了 计算和数据传输 的操作 。指令 会依次被执行 ,第一条指令 最先执行。 当执行完程序中最后一条指令时,
6、会自动回到第一条指令继续执行。 基本执行节点支持这种循环 ,即执行的时候会自动循环 。 除了 Tessellated Intelligence System里所有节点普遍都有的数据传输的接口之外 , 基本执行节点还包含几个寄存器,他们在程序执行中可以被使用。基本执行节点本身没有额外的记忆体,如果需要额外的存储空间,这个节点就得和别的基本执行节点或者存储节点进行协调。 所有的寄存器 存储从 -999到 999(含)的整数值。 寄存器的值的表现形式是编译器定义的,基本执行节点的编程并不需要考虑此内容。 1-1. ACC 类型: 内部 描述: ACC 是一个基本执行节点的首要的存储寄存器。 ACC用
7、作内 源或多条指令的 目标 操作数,包括算术和条件指令。 1-2. BAK 类型: 内部(不可寻址) 描述: BAK是 ACC值的临时存储单元。只能通过 SAV 和 SWP指令控制它, 而且 不能直接读写 。 1-3. NIL 类型: 内部(特殊) 描述: 读入 NIL即读入 0。写入 NIL没有任何效果。 NIL可以作为目标操作数,使得该指令 只产生部分效果,结果会被抛弃。 1-4. LEFT, RIGHT, UP, DOWN 类型: 接口 描述: 4个寄存器 UP, DOWN, LEFT, 和 RIGHT分别对应于所有 基本执行节点 与相邻节点通信的 4 个接口 【译者注:分别对应上、下、
8、左、右】 。 在硬件方面,有些接口会与特定节点断开,这会永久阻碍读入或写出命令的执行。参看节点的接线图可以确定哪些接口可以使用。 1-5. ANY 类型: 接口(伪接口) 描述: 当 ANY 作为一条指令的来源 时,指令会读入第一个能够读取的接口的数值。当 ANY作为一条指令的目标时 , 这条指令输出的结果会传递给第一个从本节点通过任何接口读入数据的节点。 【译者注:经 本人实验,从 ANY读入时,如果同时有多个 接口 输入 , 优先级是:左 右 上 下; 向 ANY输出 时,如果同时有多个 接口 可以输出, 优先级是 上 左 右 下】 1-6. LAST 类型: 接口(伪接口) 描述: LA
9、ST 指最近用 ANY 伪接口读入或写出的接口。 如若不然,它的效果 和明确指定一个接口是相同的。 在使用 ANY 伪接口成功读入或写出而使得 LAST 被确定之前,从 LAST 读入或向 LAST 写出的结果是 实现 定义的行为。使用 LAST 伪接口的样例代码请参考另外的文件“Tessellated Intelligence System Best Practices - Pattems of Node Communication“。【译者注:这一块我也看不 大 懂。经本人实验,在使用 ANY伪接口成功读入或写出而使得 LAST被确定之后, LAST表现正常,反之则 LAST表示 0】2.
10、 指令集 和 指令参数【译者注: SRC 指 source(来源), DST 指 destination(目标)】 可以指定一个接 口或内部寄存器 。使用任何接口的时候,在连接该接口的对应节点完成读写通信之前, 指令 会停在这里。 另外, 参数也可以是 -999 到 999 之间的字面值整数 。 【译者注:也就是说你可以在这里直接输入 一个整数】 BAK既不是 也不是 。 BAK 的值只有通过特殊的指令 SAV和 SWP来访问。 参数是任意的文本名称,用于在程序中标记跳跃的目标位置。 2-1. 注释 句法: #注释文本 描述 : 所有 #和之后的文本会被程序忽略。 2-2. Labels(标签
11、) 句法: : 描述: 标签用于确定跳跃指令的目标位置。当程序跳跃到该目标时,此标签后面的指令会接着执行。 样例: LOOP: 本标签独占一行 。 L: MOV 8, ACC 标签 L和一条指令在同一行 。 2-3. NOP 句法: NOP 等效指令: ADD NIL 描述: NOP 是一条伪指令, 对于节点内部的状态和通信接口都无任何影响。 NOP 会被程序自动替换为 ADD NIL。 2-4. MOV 句法: MOV , 描述 : 读入 ,将结果写入 。 【译者注: MOV指 move(移动)】 样例: MOV 8, ACC 将 字面值 8写入 ACC。 MOV LEFT, RIGHT 从
12、接口 LEFT读入,写入 RIGHT。 MOV UP, NIL 从接口 UP读入,抛弃该结果 。 2-5. SWP 句法 : SWP 描述: 将 ACC和 BAK 的值交换。 【译者注: SWP指 swap(交换)】 2-6. SAV 句法: SAV 描述: 将 ACC 的值写入 BAK。 【译者注: SAV指 save(保存)】 注: 在两个注释符号( #)后面的文本会作为程序的标题, 并且 会显示在调试器上方便浏览程序。 2-7. ADD 句法: ADD 描述: 将 ACC 的值加上 的值,结果存入 ACC。 样例: ADD 16 ACC的值加上字面值 16。 ADD LEFT ACC的值
13、加上从 LEFT接口读入的值 。 2-8. SUB 句法: SUB 描述: 将 ACC 的值减去 的值,结果存入 ACC。 【译者注: SUB指 subtract(减)】 样例: SUB 16 ACC的值减去字面值 16。 SUB LEFT ACC的值减去从 LEFT接口读入的值。 2-9. NEG 句法: NEG 描述: ACC的值取反。 0保持不变。 【译者注: NEG指 negative(取负数)】 2-10. JMP 句法: JMP 描述 : 执行无条件转移。 跳到 标签 后的语句 接着执行。 【译者注: JMP 指 jump(跳跃)】 2-11. JEZ 句法: JEZ 描述: 执行
14、有条件转移。如果 ACC的值是 0, 跳到 标签 后的语句 接着执行。 【译者注:JEZ指 jump equal zero(等于 0就跳)】 2-12.JNZ 句法: JNZ 描述: 执行有条件转移。如果 ACC 的值不是 0, 跳到 标签 后的语句 接着执行。 【译者注: JNZ指 jump not zero(不是 0就跳)】 2-13.JGZ 句法: JGZ 描述: 执行有条件转移。如果 ACC 的值是正数(大于 0),跳到标签 后的语句接着执行。 【译者注: JGZ指 jump greater than zero(大于 0就跳)】 2-14.JLZ 句法: JLZ 描述: 执行有条件转移
15、。如果 ACC 的值是负数(小于 0),跳到标签 后的语句接着执行。 【译者注: JLZ指 jump less than zero(小于 0就跳)】 2-15.JRO 句法: JRO 描述: 执行无条件转移。跳到由该行往后数第 行接着执行。 【译者注: JRO指 jump relative offset(跳到相关行)】 样例: JRO 0 重复执行本行语句,效果是程序停止。 JRO -1 回到上一行执行。 JR0 2 向后隔一行执行。 JRO ACC 根据 ACC的值跳转执行。3. 范例程序 下面的样例程序从 LEFT 接口读入一串数据,把每个数据翻倍并写入 RIGHT 接口。基本执行节点有自
16、动循环功能,执行完最后一行指令会回到第一行继续执行。 MOV LEFT, ACC 从 LEFT接口读入数据,保存在 ACC 寄存器 ADD ACC 把 ACC的值加上它自己的值保存到 ACC,也就是翻倍数据 MOV ACC, RIGHT 从 ACC读出数据写入 RIGHT接口 下面的样例程序从 UP接口读入一串数据 ,把正数值写入 RIGHT接口,负数值写入 LEFT接口。数值 0被抛弃。 START: MOV UP, ACC 从 UP接口读入数据,保存在 ACC寄存器 JGZ POSITIVE 如果 ACC 的值大于 0,跳到 “POSITIVE“ JLZ NEGATIVE 如果 ACC 的
17、值小于 0,跳到 “NEGATIVE“ JMP START 该值既不大于 0也不小于 0,跳到 “START“ POSITIVE : MOV ACC, RIGHT 从 ACC读出数据写入 RIGHT接口 JMP START 跳到 “START“ NEGATIVE : MOV ACC, LEFT 从 ACC读出数据写入 LEFT接口 JMP START 跳到 “START“ 节点类型 T30 堆栈存储 节点 1. 结构 堆栈存储 节点允许对大量数据的读写操作 , 依据简单的基于堆栈的数据传输协议 。(参看model-specific手册来了解对战存储节点在特定设备上的容量。) 2. 数据传输协议
18、 所有 和堆栈存储节点的交互都要通过接口 。 向堆栈存储节点写入会把数据添加到堆栈的顶部 。 如果堆栈满了 , 写入操作会被暂停 , 直到有空间可用 。 从堆栈存储节点读出会把栈顶的数据移除 , 并返回改该数据 。 如果栈空了 ,读出操作会被暂停,直到有数据可用。 堆栈存储 节点通常连接到多个其他节点 ,即可以被连接着的节点使用。同时读出和写入堆栈存储节点会以不确定的顺序进行,不过每次独立的数据传输都会依据数据传输协议执行。若想找到更多关于多个节点有效且明确地使用堆栈存储节点的信息,参看分离的文档“Tessellated Intelligence System Best Practices -
19、 Patterns of Node Communication“。 节点类型 T31 随机存取存储 节点 注 : 随机存取存储节点在标准的 Tessellated Intelligence System设备中不可用 。有兴趣的用户可以使用 仿真程序和原型样品 。 说明书和行为还没有最终落实 , 因此在本文档中略去了 。 内嵌 交互测试器 1. 键盘快捷键 交互式调试器包含下列键盘快捷键 : Control-Z: 撤销上一步 Control-Y: 重做上一步 Control-X: 剪切选中的文本 Control-C: 复制选中的文本 Control-V: 粘贴 Control-箭头 : 切换到相
20、邻的执行节点 F1: 查看指令集快速参考 F2: 查看防篡改认证状态 ? F5: 开始运行当前程序 F6: 步进或暂停当前程序 2. 中断点 在一行的最前面输入一个感叹号 ( !) 即设置了一个中断点 。当中断点设置之后 ,程序在执行本行之前会暂停 ,这样方便你 调试那种步进太繁琐的代码 。 MOV LEFT, ACC !ADD ACC 程序在执行本行之前会暂停 。 MOV ACC, DOWN 可视化模块 1. 可视化模块 的 用法 TIS-100 包含可视化模块 , 它允许 通过 程序 创造并展示图像 。 模组的内容可以通过发送指令序列来定制 ,指令序列包含起始 X坐标 、起始 Y坐标 、一个或更多颜色数据和一个 终止用的负数 ( 通常是 -1) 。 坐标体系以 显示区 左上角的 ( 0,0) 建立 。 可视化 模块支持以下的颜色 : 0: 黑 1: 深灰 2: 浅灰 3: 白 4: 红 2. 可视化模块的分辨率 标准 TIS-100 可视化模块的分辨率为 30 单位宽 , 18单位高 。 “image console sandbox“( 图像操控沙盒 ) 包含 可视化模组更大 , 有 36 单位宽 , 22 单位高 。 3. 范例指令序列 0,0,3,-1 在显示区左上角一个像素画个 白点 0,0,4,4,4,4,4,-1 在显示区左上角 画一条水平红线