通用计算机指令,单一指令计算机

单一指令计算机(英语:one instruction set computer,OISC)也称URISC),它是一种抽象计算机,该计算机只有一条指令。巧妙地选取这一条指令,并且给予无限的资源,单一指令计算机就能成为和其他多指令计算机一样的图灵机。在教学上,这种计算机被推荐来帮助理解计算机架构,同时,也能用它来研究计算机的结构模型。[1]

中文名

单一指令计算机

外文名

one instruction set computer缩    写

OISC

又    称

最简指令计算机

单一指令计算机机器架构

编辑

语音

在图灵完备模型中,每个存储位置可以存储任意整数,并且根据模型可能存在任意多个位置。 指令本身作为这样的整数序列驻留在存储器中。

存在一类具有基于位操作的单指令的通用计算机,例如位复制或位反转。 由于它们的内存模型是有限的,就像在真实计算机中使用的内存结构一样,这些位操作机器相当于真实计算机而不是图灵机。

当前已知的OISC大致可分为三大类:

位操纵机

Transport Triggered Architecture机器

基于算术的图灵完备机器

位操纵机:位操作机器是最简单的一类。

BitBitJump:一个名为BitBitJump的位复制机在内存中复制一位,并无条件地将执行传递给指令的一个操作数指定的地址。 该过程证明能够进行通用计算(即能够执行任何算法并解释任何其他通用机器),因为复制位可以有条件地修改随后将执行的代码。

Toga电脑:另一台称为Toga计算机的机器反转一点并根据反转结果有条件地执行执行。

多位复印机:另一位操作机器,类似于BitBitJump,同时复制几个位。在这种情况下,通过在内存中保留预定义的跳转表来解决计算普遍性的问题。

传输触发架构:传输触发架构(TTA)是一种设计,其中计算是数据传输的副作用。通常,公共地址空间内的一些存储器寄存器(触发端口)在指令引用时执行指定的操作。例如,在使用单个内存到内存复制指令的OISC中,这是通过触发在写入时执行算术和指令指针跳转的端口来完成的。

基于算术的图灵完备机:基于算术的图灵完备机器使用算术运算和条件跳转。与之前的两台通用计算机一样,这个类也是图灵完备的。该指令对整数运算,整数也可以是存储器中的地址。

基于不同的算术运算,该类有几种已知的OISC:

加法(addleq,如果小于或等于零则增加和分支)

减少(DJN,如果非零则减量和分支(跳跃))

增加(P1eq,如果等于另一个值则加1和分支)

减法(subleq,如果小于或等于则减法和分支)

单一指令计算机指令类型

编辑

语音

单指令的常见选择是:

如果小于或等于零,则减去和分支

如果否定则减去并分支

如果借用,则反向减去并跳过

移动(用作传输触发架构的一部分)

如果非零则减去和分支(SBNZ a,b,c,定义)

Cryptoleq(异构加密和未加密计算)

在给定的实现中仅使用这些指令中的一个。因此,不需要操作码来识别要执行的指令;指令的选择是机器设计中固有的,OISC通常以其使用的指令命名。上述每条指令均可用于构建图灵完备OISC。

本文仅介绍非传输触发的基于减法的指令。然而,可以使用基于其他算术运算的指令(例如,加法)来构造图灵完备机器。例如,一种称为DLN(递减和跳转,如果不为零)的变化只有两个操作数,并使用递减作为基本操作。

单一指令计算机如果不等于零减去并且分支

SBNZ a,b,c,d指令(“减去和分支,如果不等于零”)从地址b的内容中减去地址a的内容,将结果存储在地址c,然后,如果结果不是 0,将控制转移到地址d(如果结果等于零,则按顺序执行下一条指令)。

单一指令计算机如果小于或等于零减去并且分支

subleq指令(“SUbtract和分支,如果小于或EQual为零”)从地址b的内容中减去地址a的内容,将结果存储在地址b,然后,如果结果不是肯定的,则将控制转移到 地址c(如果结果为正,则按顺序执行下一条指令)。

subleq a, b, c   ; Mem[b] = Mem[b] - Mem[a]

; if (Mem[b] ≤ 0) goto c

通过将第三个操作数设置为依次等于下一个指令的地址,可以抑制条件分支。 如果未写入第三个操作数,则表示存在此抑制。

使用两个操作数和一个内部累加器也可以有一种变体,其中累加器从第一个操作数指定的存储单元中减去。 结果存储在累加器和内存位置,第二个操作数指定分支地址:

subleq2 a, b     ; Mem[a] = Mem[a] - ACCUM

; ACCUM = Mem[a]

; if (Mem[a] ≤ 0) goto b

尽管每个指令仅使用两个(而不是三个)操作数,但是相应地需要更多指令来实现各种逻辑操作。

单一指令计算机合成指令

只使用subleq指令就可以合成多种类型的高阶指令。

无条件分支:

JMP c

subleq Z, Z, c

可以通过重复减法进行加法,没有条件分支; 例如,以下指令导致位置a处的内容被添加到位置b处的内容:

ADD a, b

subleq a, Z

subleq Z, b

subleq Z, Z

第一条指令从位置Z(即0)处的内容中减去位置a处的内容,并将结果(在a处的内容的负数)存储在位置Z中。第二条指令从b中减去该结果,存储在 b这个差异(是原来在a和b的内容之和); 第三条指令将值0恢复为Z.

复制指令可以类似地实现; 例如,以下指令导致位置b处的内容被位置a处的内容替换,再次假设位置Z处的内容被维持为0:

MOV a,b

subleq b, b

subleq a, Z

subleq Z, b

subleq Z, Z

可以构建任何所需的算术测试。 例如,一个”分支 - 如果 - 零“服从以下指令汇编条件:

BEQ b,c

subleq b, Z, L1

subleq Z, Z, OUT

L1: subleq Z, Z

subleq Z, b, c

OUT: ...

Subleq2也可用于合成高阶指令,尽管它通常需要针对给定任务执行更多操作。例如,转换给定字节中的所有位需要不少于10个subleq2指令:

NOT a

subleq2 tmp          ; tmp = 0 (tmp = temporary register)

subleq2 tmp

subleq2 minus_one    ; acc = -1

subleq2 a            ; a' = a + 1

subleq2 Z            ; Z = - a - 1

subleq2 tmp          ; tmp = a + 1

subleq2 a            ; a' = 0

subleq2 tmp          ; load tmp into acc

subleq2 a            ; a' = - a - 1 ( = ~a )

subleq2 Z            ; set Z back to 0

仿真

以下程序(以伪代码编写)模拟基于subleq的OISC的执行:

int memory[], program_counter, a, b, c

program_counter = 0

while (program_counter >= 0):

a = memory[program_counter]

b = memory[program_counter+1]

c = memory[program_counter+2]

if (a 

program_counter = -1

else:

memory[b] = memory[b] - memory[a]

if (memory[b] > 0):

program_counter += 3

else:

program_counter = c

该程序假定memory[]由非负整数索引。 因此,对于subleq指令(a,b,c),程序将小于0,b小于0或执行的分支解释为c小于0作为暂停条件。 可以在下面的外部链接中找到以基于subleq的语言编写的类似解释器(即,自解释器,其可以使用subleq指令的性质所允许的自修改代码)。

编译

Oleg Mazonka编写了一个名为Higher Subleq的编译器,它将简化的C程序编译成subleq代码。[2]

单一指令计算机如果否定则减去并分支

subneg指令(“SUbtract and Branch if NEGative”),也称为SBN.

subneg a, b, c   ; Mem[b] = Mem[b] - Mem[a]

; if (Mem[b] 

通过将第三个操作数设置为依次等于下一个指令的地址,可以抑制条件分支。 如果未写入第三个操作数,则表示存在此抑制。

合成指令

仅使用subneg指令可以合成许多类型的高阶指令。 为简单起见,此处仅显示一条合成指令,以说明subleq和subneg之间的区别。

JMP c

subneg POS, Z, c

...

c: subneg Z, Z

其中Z和POS分别是先前设置为包含0和正整数的位置;

只有当Z最初包含0(或小于存储在POS中的整数的值)时,才能确保无条件分支。 假设Z的内容必须保持为0,则需要后续指令在分支后清除Z.

一个变体也可能有四个操作数-subneg4。 minuend和subtrahend的逆转简化了硬件的实现。 非破坏性结果简化了合成指令。

subneg4 s, m, r, j   ; subtrahend, minuend, result and jump addresses

; Mem[r] = Mem[m] - Mem[s]

; if (Mem[r] 

单一指令计算机如果借用则反向减去并跳过

在Reverse Subtract和Skip if Borrow(RSSB)指令中,累加器从存储器位置中减去,如果存在借位(存储器位置小于累加器),则跳过下一条指令。 结果存储在累加器和存储器位置。 程序计数器映射到内存位置0.累加器映射到内存位置1.

单一指令计算机例子

要将x设置为y减去z的值:

# First, move z to the destination location x.

RSSB temp # Three instructions required to clear acc, temp [See Note 1]

RSSB temp

RSSB temp

RSSB x    # Two instructions clear acc, x, since acc is already clear

RSSB x

RSSB y    # Load y into acc: no borrow

RSSB temp # Store -y into acc, temp: always borrow and skip

RSSB temp # Skipped

RSSB x    # Store y into x, acc

# Second, perform the operation.

RSSB temp # Three instructions required to clear acc, temp

RSSB temp

RSSB temp

RSSB z    # Load z

RSSB x    # x = y - z [See Note 2]

[注1]如果存储在“temp”的值最初为负值,并且在此例程中第一个“RSSB temp”之前执行的指令借用,那么例程工作将需要四个“RSSB temp”指令。

[注2]如果存储在“z”的值最初是负值,则将跳过最终的“RSSB x”,因此例程将不起作用。

参考资料

1.

Mavaddat F, Parhami B. URISC: The Ultimate Reduced Instruction Set Computer[J]. International Journal of Electrical Engineering Education, 1988, 25(4):327-334.

2.

Mazonka O, Kolodin A. A Simple Multi-Processor Computer Based on Subleq[J]. Eprint Arxiv, 2011.

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
计算机系统根底知识 一、单项选择题 1.计算机〔puter〕也称为电脑,是一种依靠〔 〕自动、高速、准确地完成各种信息存储、数据处理、数值计算、过程控制、数据传输 的电子设备。 A、程序B、规则C、技术D、操作 答:A 2.计算机科学的奠基人是英国科学家〔 〕〔Alan Mathison Turing,1912- 1954〕。 A·诺依曼 B、阿兰·图灵 C、爱萨克·牛顿D、帕斯卡 答:B 3.著名的·诺依曼原理的主要思想是〔 〕。 A、存储数据与数据控制 B、存储数据与程序控制 C、存储程序和程序控制 D、存储程序与数据控制 答:C 4.国际公认的第一台计算机是〔 〕2月由美国宾夕法尼亚大学研制成功的ENIAC〔电子数字积分计算机〕。 A、1945年 B、1946年 C、1947年 D、1948年 答:B 5.第一代计算机主要元器件采用电子管,称为电子管计算机。第二代计算机主要元器件 采用晶体管,称为晶体管计算机。第三代计算机主要元器件采用中小规模集成电路,称 为中小规模集成电路计算机。第四代计算机则采用〔 〕作为主要元器件。 A、大规模集成电路 B、超大规模集成电路 C、极大规模集成电路 D、大规模和超大规模集成电路 答:D 6.当前,计算机技术开展的主要趋势为:巨型化、微型化、网络化、〔 〕、多媒体化。 A、智能化 B、规模化 C、自动化 D、模糊化 答:A 7.电气与电子工程师协会IEEE于1989年提出按照计算机的运算速度、字长、存储容量等 综合性能来对计算机进展分类的标准将计算机分为巨型机、小巨型机、大型主机、超级 小型机、工作站和〔 〕六类。 A、微型计算机 B、群众计算机 C、廉价计算机 D、个人计算机 答:D 8.PC机以微处理器为核心,通用性非常强,它以设计先进、功能相对较强、应用软件主 富、〔 〕等优势占领了很大的计算机市场,从而极推动了计算机的普及。 A、构造复杂 B、应用单一 C、价格廉价 D、功能强大 答:C 9.通常,人们将PC机分为三类:台式机、〔 〕、个人数字助理。 A、便携机B、微型机 C、笔记本机 D、立式机 答:C 10.〔 〕是客观世界的一种本质属性,它同物质、能源一样重要,是人类生存和社会开展的三 大根本资源之一。 A、数据 B、信息 C、程序 D、软件 答:B 11. 〔 〕是指存储在*种媒体上的可以识别的物理符号,它通常作为信息的载体,用来表示信息 。 A、信息 B、程序 C、数据 D、软件 答:C 12.信息技术包含三个层次的容:〔 〕、信息系统技术、信息应用技术。 A、信息学技术 B、控制论技术 C、微电子技术 D、信息根底技术 答:D 1 3.信息处理通常也称为〔 〕。它是指利用计算机系统对信息进展采集、转换、分类、存储、计算、加工、查询、 检索、统计、分析、传输和输出等操作。 A、数据处理 B、信息加工 C、信息应用 D、数据加工 答:A 14.计算机在信息处理方面具有许多突出的优点,计算机具有极高的处理速度、强大可 靠的存储能力、准确主富的计算功能和〔 〕能力。 A、加工计算 B、输入输出 C、逻辑判断 D、存储传输 答:C 15.归纳起来,计算机的应用方面主要有〔 〕、自动控制、数据处理、信息加工、计算机辅助工作、人工智能、电子商务、办公自 动化等。 A、工程计算 B、科学工程 C、科学技术 D、科学计算 答:D 16.分布式客户机/效劳器计算〔Distributed Client/Server puting〕是在〔 〕开展起来后出现的计算模式。这种计算模式由于能够较好地利用网络资源、提高数据 管理效率、节约用户投资而被广泛使用。 A、计算机效劳器 B、汁算机网络 C、计算机主机D、计算机客户机 答:B 17.在信息技术领域中,数据一词所包括的涵很广泛。通常,数据是指记录在〔 〕上的可以识别的物理符号。国际标准化组织对数据所给出的定义是:"数据是对事实、 概念或指令的一种特殊表达形式,这种特殊的表达形式可以用人工的方式或者用自动化 的装置进展通信、翻译转换或者进展加工处理。〞 A、*种媒体 B、存储媒体 C、传输媒体 D、表现媒体 答:A 18.在计算机中,各种形式的数据以一种"特殊的表达形式〞—— 〔 〕形式来表示。人们以各种存储设备来存储数据;通过各种软件来管理数据;使用各种 应用程序来对数据进展加工处理。 A、十进制编码 B、二进制编码 C、八进制编码 D、十六进制编码 答:B 19.数据通常分为数值数据和非数值数据两大类。非数值型数据是指除了数值数据以外 的其他数据,它通常包括字符数据、〔 〕以及多媒体数据。 A、声音数据 B、图像数据 C、逻辑数据 D、文字数据 答:C 20.一般来说,信息既是对各种客观存在的事物的〔 〕的反映,又是各个事物之间作用和联系的

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值