Play Video
1
Lecture -3 Instruction Set Architecture - I
Lecture -3 Instruction Set Architecture - I
::2008/09/29::
Play Video
2
Understand Reduced Instruction Set Computer (RISC)
Understand Reduced Instruction Set Computer (RISC)
::2014/09/13::
Play Video
3
Very Reduced Instruction Set Computing Machine Emulator
Very Reduced Instruction Set Computing Machine Emulator
::2013/11/12::
Play Video
4
Instruction Set Architecture
Instruction Set Architecture
::2013/11/24::
Play Video
5
lec 4 - Instruction Set : Vocabulary of the Machine
lec 4 - Instruction Set : Vocabulary of the Machine
::2012/02/12::
Play Video
6
Lecture -4 Instruction Set Architecture - II
Lecture -4 Instruction Set Architecture - II
::2008/09/29::
Play Video
7
Advanced Redstone Computer Tutorial 6: SRCIS16 Instruction Set
Advanced Redstone Computer Tutorial 6: SRCIS16 Instruction Set
::2013/07/27::
Play Video
8
Texplained: What is x86..??What is an Instruction Set Architecture..??32-Bit vs. 64-Bit
Texplained: What is x86..??What is an Instruction Set Architecture..??32-Bit vs. 64-Bit
::2012/08/26::
Play Video
9
8051 Instruction Set Video Tutorials
8051 Instruction Set Video Tutorials
::2013/12/28::
Play Video
10
Ask Alf: Single Cycle Instruction Set
Ask Alf: Single Cycle Instruction Set
::2012/05/29::
Play Video
11
How a CPU Works
How a CPU Works
::2013/03/15::
Play Video
12
Microprocessor Operation, Instruction Set & Microprocessor Architecture
Microprocessor Operation, Instruction Set & Microprocessor Architecture
::2013/10/10::
Play Video
13
Cigar Oasis Wi-Fi Attachment Setup Instructions (Computer)
Cigar Oasis Wi-Fi Attachment Setup Instructions (Computer)
::2014/09/02::
Play Video
14
The K
The K'nuter - K'NEX Computer
::2011/01/04::
Play Video
15
The Parallel Revolution Has Started: Are You Part of the Solution or Part of...
The Parallel Revolution Has Started: Are You Part of the Solution or Part of...
::2009/01/13::
Play Video
16
Computer Organization: Instruction formats in computer organization
Computer Organization: Instruction formats in computer organization
::2013/02/02::
Play Video
17
How to hook up Solar Panels (with battery bank) - simple
How to hook up Solar Panels (with battery bank) - simple 'detailed' instructions - DIY solar system
::2013/05/10::
Play Video
18
Six Sigma Instruction Set Architecture Presentation
Six Sigma Instruction Set Architecture Presentation
::2013/12/19::
Play Video
19
LEGO GHOSTBUSTERS ECTO-1 Set 21108 - Time-lapse Build, Stop Motion, Unboxing & Review!
LEGO GHOSTBUSTERS ECTO-1 Set 21108 - Time-lapse Build, Stop Motion, Unboxing & Review!
::2014/07/14::
Play Video
20
How to Use Google Chromecast: Full Setup and Demonstration
How to Use Google Chromecast: Full Setup and Demonstration
::2013/09/08::
Play Video
21
Computer Classic: "System Technology" circa 1960 System Development Corporation
Computer Classic: "System Technology" circa 1960 System Development Corporation
::2012/08/22::
Play Video
22
ip Wireless Security Camera Set-Up Instructions / INFO: FOSCAM, China Cam, ezCam
ip Wireless Security Camera Set-Up Instructions / INFO: FOSCAM, China Cam, ezCam
::2010/08/10::
Play Video
23
Instruction format
Instruction format'' by Shikha Khullar, Biyani Girls College, Jaipur
::2014/04/30::
Play Video
24
Solar panels for the beginner How to Part one Missouri Wind and Solar simple instructions
Solar panels for the beginner How to Part one Missouri Wind and Solar simple instructions
::2013/09/08::
Play Video
25
Set-up Instructions to Operate USB Relay Board
Set-up Instructions to Operate USB Relay Board
::2014/01/04::
Play Video
26
Gaming PC Build instructions (Step by Step) Part 1
Gaming PC Build instructions (Step by Step) Part 1
::2011/05/31::
Play Video
27
Newegg TV: How To Build a Computer - Part 2 - The Build
Newegg TV: How To Build a Computer - Part 2 - The Build
::2011/06/02::
Play Video
28
Beginners Guide to Setting Up and Using the GoPro Hero 3 & 3+
Beginners Guide to Setting Up and Using the GoPro Hero 3 & 3+
::2013/12/23::
Play Video
29
x64 Assembly and C++ Tutorial 35: Set Byte Instruction and the C++ Bool
x64 Assembly and C++ Tutorial 35: Set Byte Instruction and the C++ Bool
::2011/11/05::
Play Video
30
Wireless ip Camera Set-Up Instruction VIDEO: For ezCam, FOSCAM, BestCam, Wanscam and Others
Wireless ip Camera Set-Up Instruction VIDEO: For ezCam, FOSCAM, BestCam, Wanscam and Others
::2012/04/27::
Play Video
31
Superoptimizing LLVM
Superoptimizing LLVM
::2014/12/12::
Play Video
32
How to build a computer in 30 minutes with EasyPCbuilder! - Gaming PC
How to build a computer in 30 minutes with EasyPCbuilder! - Gaming PC
::2013/04/18::
Play Video
33
Mod-02 Lec-04 Instructions, Addressing Modes
Mod-02 Lec-04 Instructions, Addressing Modes
::2011/09/14::
Play Video
34
Set up a Baofeng UV-5R Repeater System
Set up a Baofeng UV-5R Repeater System
::2013/12/24::
Play Video
35
How to Use the Magic Jack Plus without a Computer
How to Use the Magic Jack Plus without a Computer
::2012/11/14::
Play Video
36
Computer Instruction @ KCLS
Computer Instruction @ KCLS
::2009/10/05::
Play Video
37
Google Hangout Tutorial - How To Use Google Hangouts - 2013 2014 Update - Sue Soucy
Google Hangout Tutorial - How To Use Google Hangouts - 2013 2014 Update - Sue Soucy
::2013/12/02::
Play Video
38
One Button Talking Watch Instructions
One Button Talking Watch Instructions
::2013/12/04::
Play Video
39
Zmodo NVR Setup Instructions - PART 1
Zmodo NVR Setup Instructions - PART 1
::2012/09/11::
Play Video
40
Moe Norman explains Lead & Lag, and setup club position, Golf instruction tip
Moe Norman explains Lead & Lag, and setup club position, Golf instruction tip
::2013/12/30::
Play Video
41
Reusing an Old PC as a Server Part 1 (Setup Instructions)
Reusing an Old PC as a Server Part 1 (Setup Instructions)
::2008/01/27::
Play Video
42
May 2013 Engineering Software as a Service
May 2013 Engineering Software as a Service
::2013/07/16::
Play Video
43
Raspberry Pi: Speaking Alarm Clock with Step-by-Step instructions
Raspberry Pi: Speaking Alarm Clock with Step-by-Step instructions
::2014/08/30::
Play Video
44
How To Setup VPN on Windows 7 as Home Solution
How To Setup VPN on Windows 7 as Home Solution
::2009/10/09::
Play Video
45
Computer Science 61C - Lecture 27: Single Cycle CPU Datapath
Computer Science 61C - Lecture 27: Single Cycle CPU Datapath
::2011/10/28::
Play Video
46
xbmc set up and config
xbmc set up and config
::2013/07/12::
Play Video
47
Art Model Reference (DLDS # 18) - 4K Timed Nude Figure Life Models Session
Art Model Reference (DLDS # 18) - 4K Timed Nude Figure Life Models Session
::2014/12/17::
Play Video
48
A Beginner
A Beginner's Guide to Water Cooling Your Computer
::2012/09/04::
Play Video
49
Best Game Camera - Ltl Acorn 5210mm Wireless Trail Camera Set Up Instructions
Best Game Camera - Ltl Acorn 5210mm Wireless Trail Camera Set Up Instructions
::2012/03/19::
Play Video
50
Mobius Camera - The 1080p Action Cam, Dash-Cam, Anything Cam -  Full review (with samples).
Mobius Camera - The 1080p Action Cam, Dash-Cam, Anything Cam - Full review (with samples).
::2013/07/08::
NEXT >>
RESULTS [51 .. 101]
From Wikipedia, the free encyclopedia
Jump to: navigation, search
Not to be confused with 1-bit.

A one instruction set computer (OISC), sometimes called an ultimate reduced instruction set computer (URISC), is an abstract machine that uses only one instruction – obviating the need for a machine language opcode.[1][2][3] With a judicious choice for the single instruction and given infinite resources, an OISC is capable of being a universal computer in the same manner as traditional computers that have multiple instructions.[2]:55 OISCs have been recommended as aids in teaching computer architecture[1]:327[2]:2 and have been used as computational models in structural computing research.[3]

Machine architecture[edit]

In a Turing-complete model, each memory location can store an arbitrary integer, and – depending on the model – there may be arbitrarily many locations. The instructions themselves reside in memory as a sequence of such integers.

There exists a class of universal computers with one instruction based on bit manipulation such as bit copying or bit inversion. Since their memory model is the same as the memory structure used in real computers, those bit manipulation machines are equivalent to real computers rather than to Turing machines.[4]

Currently known OISCs can be roughly separated into three broad categories:

  • Transport Triggered Architecture Machines
  • Bit Manipulating Machines
  • Arithmetic Based Turing-Complete Machines

Transport Triggered Architecture (TTA) is a design in which computation is a side effect of data transport. Usually some memory registers (triggering ports) within common address space, perform an assigned operation when the instruction references them. For example, in an OISC using a single memory-to-memory copy instruction, this is done by triggering ports that perform arithmetic and instruction pointer jumps when written to.

Bit Manipulating Machines are the simplest class. A bit copying machine, called BitBitJump, copies one bit in memory and passes the execution unconditionally to the address specified by one of the operands of the instruction. This process turns out to be capable of universal computation (i.e. being able to execute any algorithm and to interpret any other universal machine) because copying bits can conditionally modify the code that will be subsequently executed. Another machine, called the Toga computer, inverts a bit and passes the execution conditionally depending on the result of inversion. Yet another bit operating machine, similar to BitBitJump, copies several bits at the same time. The problem of computational universality is solved in this case by keeping predefined jump tables in the memory.

Arithmetic Based Turing-complete Machines use an arithmetic operation and a conditional jump. Unlike the two previous classes which are universal computers, this class is universal and Turing-complete in its abstract representation. The instruction operates on integers which may also be addresses in memory. Currently there are several known OISCs of this class, based on different arithmetic operations: addition (Addleq), decrement (DJN), increment (P1eq), and subtraction (Subleq). The latter is the oldest, the most popular and, arguably, the most efficient.

Instruction types[edit]

Common choices for the single instruction are:

Only one of these instructions is used in a given implementation. Hence, there is no need for an opcode to identify which instruction to execute; the choice of instruction is inherent in the design of the machine, and an OISC is typically named after the instruction it uses (e.g., an SBN OISC,[2]:41 the SUBLEQ language,[3]:4 etc.). Each of the above instructions can be used to construct a Turing-complete OISC.

This article presents only subtraction-based instructions among those that are not transport triggered. However it is possible to build Turing complete machine using an instruction based on other arithmetic operations, e.g., addition. For example, one variation known as DLN (Decrement and jump if not zero) has only two operands and uses decrement as the base operation. For more information see Subleq derivative languages.

Subtract and branch if not equal to zero[edit]

The SBNZ a,b,c,d instruction ("Subtract and Branch if Not equal to Zero") subtracts the contents at address a from the contents at address b, stores the result at address c, and then, if the result is not 0, transfers control to address d (if the result is equal zero, execution proceeds to the next instruction in sequence).[3]

Subtract and branch if less than or equal to zero[edit]

The subleq instruction ("SUbtract and Branch if Less than or EQual to zero") subtracts the contents at address a from the contents at address b, stores the result at address b, and then, if the result is not positive, transfers control to address c (if the result is positive, execution proceeds to the next instruction in sequence).[3]:4-7

Pseudocode:

    subleq a, b, c   ; Mem[b] = Mem[b] - Mem[a]
                     ; if (Mem[b] ≤ 0) goto c

Conditional branching can be suppressed by setting the third operand equal to the address of the next instruction in sequence. If the third operand is not written, this suppression is implied.

A variant is also possible with two operands and an internal accumulator, where the accumulator is subtracted from the memory location specified by the first operand. The result is stored in both the accumulator and the memory location, and the second operand specifies the branch address:

    subleq2 a, b     ; Mem[a] = Mem[a] - ACCUM
                     ; ACCUM = Mem[a]
                     ; if (Mem[a] ≤ 0) goto b

Although this uses only two (instead of three) operands per instruction, correspondingly more instructions are then needed to effect various logical operations.

Synthesized instructions[edit]

It is possible to synthesize many types of higher-order instructions using only the subleq instruction.[3]:9-10

Unconditional branch:

    JMP c ==    subleq Z, Z, c

Addition can be performed by repeated subtraction, with no conditional branching; e.g., the following instructions result in the content at location a being added to the content at location b:

    ADD a, b == subleq a, Z
                subleq Z, b
                subleq Z, Z

The first instruction subtracts the content at location a from the content at location Z (which is 0) and stores the result (which is the negative of the content at a) in location Z. The second instruction subtracts this result from b, storing in b this difference (which is now the sum of the contents originally at a and b); the third instruction restores the value 0 to Z.

A copy instruction can be implemented similarly; e.g., the following instructions result in the content at location b getting replaced by the content at location a, again assuming the content at location Z is maintained as 0:

    MOV a, b == subleq b, b
                subleq a, Z
                subleq Z, b
                subleq Z, Z

Any desired arithmetic test can be built. For example, a branch-if-zero condition can be assembled from the following instructions:

    BEQ b, c == subleq b, Z, L1
                subleq Z, Z, OUT
            L1: subleq Z, Z
                subleq Z, b, c
           OUT: ...

Subleq2 can also be used to synthesize higher-order instructions, although it generally requires more operations for a given task. For example no fewer than 10 subleq2 instructions are required to flip all the bits in a given byte:

    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

Emulation[edit]

The following program (written in pseudocode) emulates the execution of a subleq-based OISC:

integer 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 < 0 or b < 0):
        program_counter = -1
    else:
        memory[b] = memory[b] - memory[a]
        if (memory[b] > 0):
            program_counter = program_counter + 3
        else:
            program_counter = c

This program assumes that memory[] is indexed by nonnegative integers. Consequently, for a subleq instruction (a, b, c), the program interprets a < 0, b < 0, or an executed branch to c < 0 as a halting condition. Similar interpreters written in a subleq-based language (i.e., self-interpreters, which may use self-modifying code as allowed by the nature of the subleq instruction) can be found in the external links below.

Compilation[edit]

There is a compiler called Higher Subleq written by Oleg Mazonka that compiles a simplified C program into subleq code.[5]

Subtract and branch if negative[edit]

The subneg instruction ("SUbtract and Branch if NEGative"), also called SBN, is defined similarly to subleq:[2]:41,51-52

    subneg a, b, c   ; Mem[b] = Mem[b] - Mem[a]
                     ; if (Mem[b] < 0) goto c

Conditional branching can be suppressed by setting the third operand equal to the address of the next instruction in sequence. If the third operand is not written, this suppression is implied.

Synthesized instructions[edit]

It is possible to synthesize many types of higher-order instructions using only the subneg instruction. For simplicity, only one synthesized instruction is shown here to illustrate the difference between subleq and subneg.

Unconditional branch:[2]:88-89

    JMP c ==    subneg POS, Z, c
                ...
             c: subneg Z, Z

where Z and POS are locations previously set to contain 0 and a positive integer, respectively;

Unconditional branching is assured only if Z initially contains 0 (or a value less than the integer stored in POS). A follow-up instruction is required to clear Z after the branching, assuming that the content of Z must be maintained as 0.

Reverse subtract and skip if borrow[edit]

In a Reverse Subtract and Skip if Borrow (RSSB) instruction, the accumulator is subtracted from the memory location and the next instruction is skipped if there was a borrow (memory location was smaller than the accumulator). The result is stored in both the accumulator and the memory location. The program counter is mapped to memory location 0. The accumulator is mapped to memory location 1.[2]

Example[edit]

To set x to the value of y minus z:

 # First, move z to the destination location x.
RSSB temp # Three instructions required to clear acc, temp
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

Transport triggered architecture[edit]

A transport triggered architecture uses only the move instruction, hence it was originally called a "move machine". This instruction moves the contents of one memory location to another memory location:[2]:42[6]

   move a to b ; Mem[b] := Mem[a]

sometimes written as:

   a -> b ; Mem[b] := Mem[a]

Arithmetic is performed using a memory-mapped arithmetic logic unit and jumps are performed using a memory-mapped program counter.

A commercial transport triggered architecture microcontroller has been produced called MAXQ, which hides the apparent inconvenience of an OISC by using a "transfer map" that represents all possible destinations for the move instructions.[7]

See also[edit]

References[edit]

  1. ^ a b Mavaddat, F.; Parhami, B. (October 1988). "URISC: The Ultimate Reduced Instruction Set Computer". Int'l J. Electrical Engineering Education (Manchester University Press) 25 (4): 327–334. Retrieved 2010-10-04.  This paper considers "a machine with a single 3-address instruction as the ultimate in RISC design (URISC)". Without giving a name to the instruction, it describes a SBN OISC and its associated assembly language, emphasising that this is a universal (i.e., Turing-complete) machine whose simplicity makes it ideal for classroom use.
  2. ^ a b c d e f g h Gilreath, William F.; Laplante, Phillip A. (2003). Computer Architecture: A Minimalist Perspective. Springer Science+Business Media. ISBN 978-1-4020-7416-5.  Intended for researchers, computer system engineers, computational theorists and students, this book provides an in-depth examination of various OISCs, including SBN and MOVE. It attributes SBN to W. L. van der Poel (1956).
  3. ^ a b c d e f Nürnberg, Peter J.; Wiil, Uffe K.; Hicks, David L. (September 2003), "A Grand Unified Theory for Structural Computing", Metainformatics: International Symposium, MIS 2003, Graz, Austria: Springer Science+Business Media, pp. 1–16, ISBN 978-3-540-22010-7  This research paper focusses entirely on a SUBLEQ OISC and its associated assembly language, using the name SUBLEQ for "both the instruction and any language based upon it".
  4. ^ Oleg Mazonka, "Bit Copying: The Ultimate Computational Simplicity", Complex Systems Journal 2011, Vol 19, N3, pp. 263-285
  5. ^ Oleg Mazonka A Simple Multi-Processor Computer Based on Subleq
  6. ^ Jones, Douglas W. (June 1988). "The Ultimate RISC". ACM SIGARCH Computer Architecture News (New York: ACM) 16 (3): 48–55. doi:10.1145/48675.48683. Retrieved 2010-10-04.  "Reduced instruction set computer architectures have attracted considerable interest since 1980. The ultimate RISC architecture presented here is an extreme yet simple illustration of such an architecture. It has only one instruction, move memory to memory, yet it is useful."
  7. ^ Catsoulis, John (2005), Designing embedded hardware (2 ed.), O'Reilly Media, pp. 327–333, ISBN 978-0-596-00755-3 

External links[edit]


Wikipedia content is licensed under the GFDL License
Powered by YouTube
MASHPEDIA
LEGAL
  • Mashpedia © 2014