Dismiss
InnovationQ will be updated on Sunday, Oct. 22, from 10am ET - noon. You may experience brief service interruptions during that time.
Browse Prior Art Database

Dynamic Scatter Loading of Microcode Modules

IP.com Disclosure Number: IPCOM000087800D
Original Publication Date: 1977-Mar-01
Included in the Prior Art Database: 2005-Mar-03
Document File: 2 page(s) / 15K

Publishing Venue

IBM

Related People

Batey, MA: AUTHOR

Abstract

In a microprogrammable processor, microcode modules are typically of two types, resident or transient. Resident modules are loaded into, and remain in, contiguous storage space in the main store, but transient modules are divided into blocks which, on an ""on-demand'' basis, are scatter-loaded into available areas of main store. Typically, each block of a transient module may consist of 256 bytes. Within each block, a certain number of bytes, used as a system control area, must be reserved to accommodate extra block references. While microcode is being written, care must be taken by the coder that interblock references are arranged (i.e., any instruction which refers to another location in the module).

This text was extracted from a PDF file.
This is the abbreviated version, containing approximately 52% of the total text.

Page 1 of 2

Dynamic Scatter Loading of Microcode Modules

In a microprogrammable processor, microcode modules are typically of two types, resident or transient. Resident modules are loaded into, and remain in, contiguous storage space in the main store, but transient modules are divided into blocks which, on an ""on-demand'' basis, are scatter-loaded into available areas of main store. Typically, each block of a transient module may consist of 256 bytes. Within each block, a certain number of bytes, used as a system control area, must be reserved to accommodate extra block references. While microcode is being written, care must be taken by the coder that interblock references are arranged (i.e., any instruction which refers to another location in the module). This becomes difficult if the coder is using extended mnemonics which expand on assembly into different instruction sequences, or is writing on a higher level language requiring macros which are expanded during compiling.

An example of an extended mnemonic is GOTO which, upon assembly, may generate a single jump instruction if the target address is within a specified range, or a multi-instruction branch sequence if the target is outside the specified range.

Because of these and other problems, compilers are increasingly being used to generate microcode, typically generating assembler source text, including labels. The source code is then assembled and the resulting object code modules loaded into the processor as if hand-coded in assembler language. The main problem that such compilers must overcome is that of identifying and dealing with references from one block of source code to a location in another block where, without scatter loading, the reference could be made with a single instruction (using the relative position of the target).

The approach embodied here is as follows. The code generator allows the maximum possible space requirement for each instruction which could lead to an extra block reference and which could be subsequently expanded, and produces assembler source code which will assemble into could lead to an extra block reference and which could be subsequently expanded, and produces assembler source code which will assemble into 256 byte-blocks. It also produces a relocate list containing one entry for each occurrence of such instructions. Each entry in the relocate list contains the module address of an instruction, expressed as the relative block number within the module and the offset within that block.

When generating a jump branch instruction (other than to represent an explicit branch instruction in the program being compiled), the generator checks that the target is within the same block of code. Unless it is known that it is in the same block, a GOTO instruction is generated and a label on the target is inserted. A GOTO instruction will also be substituted if there is another GOTO instr...