Simplified Instructional Computer (SIC)



Simplified Instructional Computer (SIC) is a hypothetical computer that has hardware features which are often found in real machines. There are two versions of this machine:

  1. SIC standard Model
  2. SIC/XE(extra equipment or expensive)

Object program for SIC can be properly executed on SIX/XE which is known as upward compatability.

SIC Machine Architecture/Components –

  1. Memory –
    • Memory is byte addressable that is words are addressed by location of their lowest numbered byte.
    • There are 2^15 bytes in computer memory (1 byte = 8 bits)
      3 consecutive byte = 1 word (24 bits = 1 word)
  2. Registers –
    There are 5 registers in SIC. Every register has an address associated with it known as register number. Size of each register is 4 bytes. On basis of register size, integer size is dependent.

    I. A(Accumulator-0): It is used for mathematical operations.
    II. X(Index Register-1): It is used for addressing.
    III. L(Linkage Register-2): It stores the return address of instruction in case of subroutines.
    IV. PC(Program Counter-8): It holds the address of next instruction to be executed.
    V. SW(Status Word-9): It contains the variety of information



    Status Word Register:

    33333

    • mode bit refers to user mode(value=0) or supervising mode(value=1). It occupies 1 bit.[0]
    • state bit refers whether process is in running state(value=0) or idle state(value=1). It also occupies 1 bit.[1]
    • id bit refers to process id(PID). It occupies 3 bits.[2-5]
    • CC bit refers to condition code i.e. It tells whether device is ready or not. It occupies 2 bits.[6-7]
      Mask bit refers to interrupt mask. It occupies 4 bits.[8-11]
    • X refers to unused bit. It also occupies 4 bits.[12-15]
    • ICode refers to interrupt code i.e. Interrupt Service Routine. It occupies the remaining bits.[16-23]
  3. Data Format –
    • Integers are represented by 24 bit.
    • Negative numbers are represented in 2’s complement.
    • Characters are represented by 8 bit ASCII value.
    • No floating point representation is available.
  4. Instruction Format –
    All instructions in SIC have 24 bit format.

    666666

    • If x=0 it means direct addressing mode.
    • If x=1 it means indexed addressing mode.
  5. Instruction Set –
    • Load And Store Instructions: To move or store data from accumulator to memory or vice-versa. For example LDA, STA, LDX, STX etc.
    • Comparison Instructions: Used to compare data in memory by contents in accumulator. For example COMP data.
    • Arithmetic Instructions: Used to perform operations on accumulator and memory and store result in accumulator. For example ADD, SUB, MUL, DIV etc.
    • Conditional Jump: compare the contents of accumulator and memory and performs task based on conditions. For example JLT, JEQ, JGT
    • Subroutine Linkage: Instructions related to subroutines. For example JSUB, RSUB
  6. Input and Output –
    It is performed by transferring 1 byte at a time from or to rightmost 8 bits of accumulator. Each device has 8 bit unique code.
    There are 3 I/O instructions:

    • Test Device (TD) tests whether device is ready or not. Condition code in Status Word Register is used for this purpose. If cc is < then device is ready otherwise device is busy.
    • Read data(RD) reads a byte from device and stores in register A.
    • Write data(WD) writes a byte from register A to the device.

    References:
    Leland.L.Beck: An introduction to systems programming, 3rd Edition, Addison-Wesley, 1997.



    My Personal Notes arrow_drop_up

    Check out this Author's contributed articles.

    If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

    Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.




    Article Tags :

    2


    Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.