Introduction
This article covers micro-operations, the essential components to help you understand how complicated tasks are, just a combination of smaller atomic operations that sum up to create them. We also cover how these atomic operations use registers and explain the register transfer language. Don’t worry if these terms sound scary. Reading the article will make these topics is easier to understand.
Recommended Topic, Microinstruction in Computer Architecture and Difference Between Jfet and Mosfet
What are micro-operations and Register Transfers?
Every complex instruction on a computer is a composition of smaller instructions that can’t be subdivided into smaller instructions. The smallest unit of instruction is a micro-operation performed by the CPU.
Micro-instructions involve the use of registers. These registers are essentially small chunks of very fast temporary memory. The values in the registers (and the secondary memory) can be understood as the state of a program. Here, with each operation, we manipulate the state to a more desired state by moving values of one register to another.
Using registers to move values from one register to another. Using these to store the result of arithmetic operations and also to store information from the secondary memory.
What is Register Transfer Language (RTL)?
This is a notational language, meant for the representation of various micro-operations that map closely to machine code instructions and as such is an important aspect that needs to be studied to understand and read and understand various resources that may use these notations to easily convey to the reader about the various register operations to be performed and about the transfer of information from one register to another.
Universalizing a notation to ensure consistency in notations is the best-case scenario and helps convey related information to almost everyone, unlike in a specific language that may be hard to read or understand. The common notations can be summed as described below (these notations are enough to describe almost all the common requirements).
For our understanding here, we’ll define 32 16-bit registers. The 16-bit register will have the following properties such as:
- A register can be represented as a box with the register name written inside it.
- Any register name can be referenced as x0, x1 …x31 or similar notations.
- Any bit in a register can be represented by a number from 0 to 15. Here 0 is the rightmost bit, and 15 is the leftmost bit.
- Similarly, the register can be divided into bytes, the left (high) byte H(15-8) and the right (low) byte L(7-0).
Denoting part of a register:
We use “()” in this notation. A register referring to the rightmost bit in the register can be written easily using this notation as x0(7-0).
Register Transfer:
We use an ‘<-’ in this notation. An instruction can be written as x0 <- x1, which implies that we are transferring information from the x1 register to the x0 register. This is the most basic notation to get started.
Conditional instruction execution:
We use “:” in this notation. An instruction can be written as P: x0 <- x1. Here the register transfer instruction will execute only if the P condition evaluates to true.
Concurrent instruction execution:
In this notation, we just add “,” to combine a bunch of instructions in RTL to be executed together, such as P: x0 <- x1, x1<-x2. Here both “ x0 <- x1” and “ x1 <- x2” are being executed when the P condition evaluates to true.
Renaming a previous register:
In the notation, we just use “:=” as an assign operation. “XA:=x0”. Here x0 name has been changed to “XA”.
You can also read about - Shift Registers in Digital Electronics





