Introduction to
S/370 Principles of Operation


PREVIOUS
CONTENTS
NEXT


Storage


Let's pick up where we left off in our rampage through POPs, with Chapter Three, Storage. This is an important chapter, so we'll spend some time here. Once we've introduced some concepts associated with this chapter, we'll resume our more rapid perusal of POPs for the following chapters.

Here are the main sections of this chapter:


  • Storage Addressing
  • Address Types
  • Storage Key
  • Protection
  • Reference Recording
  • Change Recording
  • Prefixing
  • Address Spaces
  • ASN Translation
  • ASN Authorization
  • Dynamic Address Translation
  • Address Summary
  • Assigned Storage Locations

  • This chapter discusses the representation of information in main storage, as well as addressing, protection, and reference and change recording.

    Let's begin with the concept of "main storage". Checking the Index, we see pages associated with this term. Unfortunately, none of these pages seem to define the term "main storage". Let's speculate about what this term might mean. Since the word "main" qualifies the word "storage", one might be led to believe there are "non-main" kinds of storage.

    Sadly, POPs is not much help here. This has always bothered me. The term "main storage" appears in numerous places in IBM documentation, so a good definition would be helpful.

    Having spent some time in the field, I have an intuitive sense of what "main storage" means. For purposes of this tutorial, I will invent a definition for it, and distinguish it from a term I will make up, "supplemental storage".

    Defining Memory, Bits, Bytes, and Pages

    Let's begin with the definition of memory. Memory is a specialized kind of electronic circuit with the ability to retain binary values called "bits".

    Memory is physically packaged in several forms, but most resemble rows of "chips". Several memory circuits may be present in our S/370 system, but they all appear as a unified sequence of bits, bytes, and pages. We define these terms below.

    Memory is comprised of units called "bits". A bit is a portion of a memory circuit which has the ability to retain a binary value of zero or one. In the early days of computing, each bit was constructed of a physical "core" around which were wrapped wires used to pass voltage to each bit. Depending upon how this voltage was passed, the bit entered the zero or one state. Although the term is now obsolete, you will sometimes see references to "core memory" which is merely a reference to this old memory construction technique. We will not further concern ourselves with either the electronic or physical details of memory.

    In the S/370 architecture, a bit containing a zero value is sometimes said to be "off", while a bit containing a one value is sometimes said to be "on".

    Memory bits can be viewed to occur in consecutive sequence. Below, we number the first eight memory bits using standard S/370 notation (starting at zero on the left, identified as BIT 0 below):

    BIT BIT BIT BIT   BIT BIT BIT BIT
      0   1   2   3     4   5   6   7 ...
    

    We can continue numbering BITs up to the maximum number physically installed in the S/370 hardware, which quickly gets boring.

    The sequential collection of the first eight memory bits are commonly identified as a "byte", specifically BYTE 0 (again using standard S/370 notation). The sequential collection of the next eight memory bits are also identified as a byte, in this case BYTE 1, and so forth until all bytes have been numbered.

    BYTE BYTE BYTE BYTE   BYTE BYTE BYTE BYTE
       0    1    2    3      4    5    6    7 ...
    

    The reason we are numbering memory is that we frequently wish to refer to a specific bit or byte. We use the number we have assigned to the bit or byte to accomplish this reference.

    Each of the bytes in memory possess an attribute called an "address".

    Each byte's address is simply the number we assigned above, which uniquely identifies the byte. Memory addresses begin at zero and increase in whole number (integer) increments up to some maximum amount. POPs describes the memory address attribute in the "Storage Addressing" section of Chapter Three.

    The S/370 system may have several memory chips installed, to a usual maximum of 16 times 1024 times 1024 BYTEs (16,777,216 BYTEs).

    Having aggregated 8 bits into a byte, we can aggregate 4096 bytes into a "page". Each page of memory may also be numbered as demonstrated in the diagram below.

    PAGE PAGE PAGE PAGE   PAGE PAGE PAGE PAGE
       0    1    2    3      4    5    6    7 ...
    

    We now have three different ways of numbering memory: by bit, by byte, and by page. You will almost always see memory referred to by its byte address, but the other numbering techniques are occasionally used as well.

    It should be noted that the S/370 architecture imposes restrictions on which bits may be considered to reside in a byte, and which bytes may be considered to reside in a page. POPs mostly covers these restrictions in the "Integral Boundaries" section of Chapter 3, as well as introducing the concepts of halfword, fullword, and doubleword. Our definition of these terms appears below.

    Storage Types

    Main storage is the memory attached to the CPU that programs executing in the S/370 processor may access using byte addresses. Such bytes are composed of eight bits, each bit having the ability to retain a value of zero or one. Main storage is similar to the "Number Line" to which you were introduced in Kindergarten or First Grade; it starts at address zero and runs up through the maximum attached storage address.

    Supplemental storage is the memory attached to the CPU that programs executing in the CPU may access using other facilities than byte addresses. Examples of supplemental storage are the PSW, registers (GPRs, FPRs, and CRs), and storage keys. Typically there are specific instructions provided for manipulating each type of supplemental storage.

    There are substantially fewer supplemental storage locations than main storage locations.

    Storage Contents

    Main storage is used to contain data. This data can be numeric (in various formats such as binary, decimal, or floating point), character (typically in the EBCDIC character set), or S/370 machine instructions.

    Depending on the instructions used to manipulate main storage, it is possible to treat each of these categories as another; for instance characters can be treated like numbers, and so forth.

    One final comment on storage contents: the S/370 architecture defines a portion of main storage for its own use. This storage is frequently called "low storage", since it occupies physical Page Zero in a single processor system. We'll return to the subject of low storage when we discuss interrupts.


    Before we leave this section, I recommend you glance through the entire chapter. Storage is a fairly broad subject, and to discuss it in more detail than we have would seriously bog down our survey of POPs. We'll have to return to the subject at a later time.


    Next: Control

    Having briefly discussed storage, we now turn our attentions to the next of the main subject matters in POPs: control.


    PREVIOUS
    CONTENTS
    NEXT