Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
IBM System/38
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==Software architecture== ===Machine Interface=== The System/38 and its descendants use a machine interface architecture to isolate the [[application software]] and most of the operating system from hardware dependencies, including such details as address size and register size. Compilers for System/38 and its successors generate code in a high-level instruction set known as the ''Machine Interface'', or MI. MI is a virtual instruction set; it is not the instruction set of the underlying CPU. MI operates on ''objects'' instead of traditional memory addresses or registers.<ref>{{cite book | chapter-url = http://www.cs.washington.edu/homes/levy/capabook/Chapter8.pdf | title = Capability-Based Computer Systems | chapter = The IBM System/38 | first = Henry M. | last = Levy | publisher = Digital Press | year = 1984 | isbn = 0-932376-22-3}}</ref> Unlike some other virtual-machine architectures in which the virtual instructions are interpreted at runtime (see [[P-code machine]]), MI instructions are never interpreted. They constitute an intermediate compile time step and are [[binary translation|translated into the processor's instruction set]] as the final compilation step. The MI instructions are stored within the final program object, in addition to the executable machine instructions. If a program is moved from a processor with one native instruction set to a processor with another native instruction set, the MI instructions will be re-translated into the native instruction set of the new machine before the program is executed for the first time on the new machine. The TIMI (Technology Independent Machine Interface) of OS/400 is a backwards compatible extension of the System/38 MI. As a result, it is possible for a program originally developed on a System/38 to run on current [[IBM i]] hardware without ever being recompiled.<ref name="inside-as400" /> ===Microcode=== IBM referred to all code below the Machine Interface layer of the System/38 architecture as ''microcode'', and treated it as part of the hardware.<ref name="technical-developments">{{cite book | url = http://bitsavers.org/pdf/ibm/system38/IBM_System_38_Technical_Developments_Dec1978.pdf | title = IBM System/38 Technical Developments | publisher = IBM Product Design and Development, General Systems Division | orig-year = 1978 | year = 1980 | isbn = 0-933186-03-7 | id = G580-0237-1}}</ref> The term microcode was used to cover a wide array of low-level code, ranging from traditional [[microcode]], up to functionality typically associated with the [[Kernel (operating system)|kernel]]s of other operating systems, as well as the implementation of the integrated database.<ref>{{cite journal|url=https://www.computer.org/csdl/magazine/co/1981/09/01667517/13rRUwciPii|title=Design of a Small Business Data Processing System|first=Frank|last=Soltis|journal=[[IEEE Computer]]|date=September 1981|volume=14|pages=77–93|doi=10.1109/C-M.1981.220610|s2cid=398484|url-access=subscription}}</ref> There were two levels of microcode in the System/38: * ''Horizontal Microcode'' (HMC), which implemented a [[register–memory architecture|register-memory]]/memory-memory<ref name="ibm-imp-reference">{{cite web|url=http://bitsavers.org/pdf/ibm/system38/SC21-9037-3_IBM_System_38_Internal_Microprogramming_Instructions_Formats_and_Functions_Reference_4th_ed_198508.pdf|title=IBM System/38 Internal Microprogramming Instructions, Formats, and Functions Reference Manual|date=August 1985|edition=fourth|publisher=IBM|id=SC21-9037-3}}</ref> [[instruction set architecture]] known as the ''internal microprogramming (IMP) instruction set''<ref name="ibm-imp-reference" /> or the ''Internal Microprogrammed Interface'' (IMPI) using the native microcode of the System/38's processor.<ref>{{cite web|url=http://users.snip.net/~gbooker/AS400/arch.htm|title=Notes for storage research|author=David McKenzie|archive-url=https://web.archive.org/web/19991008185025/http://users.snip.net/~gbooker/AS400/arch.htm|archive-date=October 8, 1999|url-status=dead}}</ref> Certain low-level and performance sensitive functionality such as task (i.e. process) scheduling and message passing were implemented directly in microcode as part of the Horizontal Microcode. The Horizontal Microcode resided in [[control store]]; it corresponded to traditional microcode. * ''Vertical Microcode'' (VMC), which implemented the Machine Interface in terms of the IMPI architecture; this was implemented by translating MI code into IMPI code and executing it. It also implemented the integrated database, and other components of the operating system which could not be implemented in terms of MI instructions.<ref name="ibm-vmc-plm">{{cite web|url=http://bitsavers.org/pdf/ibm/system38/SY21-0889-5_IBM_System_38_Vertical_Microcode_Logic_Overviews_and_Component_Descriptions_6th_ed_198509.pdf|title=IBM System/38 Vertical Microcode Logic Overviews and Component Descriptions Manual|date=September 1985|edition=sixth|publisher=IBM|id=SY21-0889-5}}</ref> This was implemented using a mixture of [[PL/MP]] and IMPI assembly.<ref name="inside-as400" /> The Vertical Microcode resided in main memory. The use of the term microcode stemmed from a 1969 antitrust case against IBM which resulted in IBM unbundling software from its hardware products (i.e. requiring software to be purchased separately from the hardware). By treating the low level code of the System/38 as part of the hardware, IBM was able to treat the MI as the native instruction set of the System/38, and thus have the freedom to change the IMPI and microcode as the underlying hardware evolved.<ref name="inside-as400">{{cite book|title=Inside the AS/400, Second Edition|url=https://books.google.com/books?id=5DoPAAAACAAJ|isbn=978-1882419661|author=Frank G. Soltis|year=1997|publisher=Duke Press}}</ref> Early AS/400 systems inherited the System/38 microcode structure, but the term microcode was dropped, leading IBM to rename the layers to the ''Vertical Licensed Internal Code'' and ''Horizontal Licensed Internal Code''. ===Control Program Facility=== {{main|Control Program Facility}} The operating system of the System/38 is the ''Control Program Facility'' (CPF). CPF is not related to the [[System Support Program]] operating system of the IBM System/34 and System/36. CPF objects are files, programs, message queues, user profiles, and libraries. While CPF is considered to be the operating system of the System/38, it sits on top of the System/38 Machine Interface layer, and consequently much of the traditional operating system functionality of the platform is implemented in the Horizontal and Vertical Microcode.<ref name="inside-as400" /> The System/38 also has the distinction of being the first commercially available IBM [[Midrange computer]] to have a [[database management system]] (DBMS) integrated into the operating system. The operational control language of the System/38 is called ''CL'', for [[Control Language]]. CL programs, similar in concept to [[shell script]]s, can be [[Compiler|compiled]] and executed [[Native mode|natively]]. The System/38 was designed with security built in as part of its architecture. Each object or library can have access controlled on a user-by-user basis. This has been continued and expanded throughout the AS/400 and iSeries computer lines.
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)