From: kolding@cs.washington.edu (Eric Koldinger)
Subject: Re: IBM AS/400 is the world's slowest computer
Organization: Computer Science & Engineering, U. of Washington, Seattle
Date: Fri, 25 Dec 92 03:39:18 GMT

In article <BzsIFK.EMF.2@cs.cmu.edu> lindsay+@cs.cmu.edu (Donald Lindsay) writes:
>kolding@cs.washington.edu (Eric Koldinger) writes:
>>The AS/400 uses a tagged memory-system and tagged registers to
>>protect capabilities (or pointers, as they call them).  There are
>>also a number of operations that only take place on capabilities.
>>This makes it rather unlikely that they'd use a stock micro-processor
>>from the workstation group.
>
>I don't think that RPG programmers deal with capabilities, so, the
>stock microprocessor needs only a stock RPG.

RPG doesn't use the capability features, but OS/400 certainly does.  Don't
forget that a computer is more than just the applications that it runs.  RPG
coulde easily be implemented on any machine out there, but you wouldn't call it
an AS/400.  Just because I can run C on it, I don't call it a PDP-11, eh?

>What other languages are of importance on the AS/400? What is the OS
>written in, and are capabilities actually explicit at the source
>level?

Last I checked (4 years ago), the AS/400 supported RPG III, COBOL (I think),
Pascal, PL/I, and they were coming out with a C compiler.  You don't generally
use the capabilities at the applications level, and the languages provide no
real ability to manipulate capabilities (I've often wondered exactly what C
ended up looking like on that machine, as pointers and ints are definitely not
the same, and casting an int to a pointer makes no sense).

The OS (and the various levels of "microcode", which are actually what most
people would consider to be part of the OS) are written in IBM proprietary
languages that all start with the letters PL/.   Depending on which level of
the machine you're programming for, the language may or may not be able to
manipulate capabilities explicitly.  Having never actually used these
languages, I can't say more than that.

>My experience with software-based capabilites has been positive, so
>it's not clear to me, offhand, that a stock RS/6000 is out of the
>question.

There's a fundamental difference between hardware and software capabilities.
Software capabilities can be forged, however improbable.  For example, Amoeba
capabilities are just long integers (32, 64 bits?).  You can forge one, but I
wouldn't bet on it.  Hardware capabilities are secure and cannot be forged.  On
the AS/400 there is no way to turn an integer into a capability, even for the
OS (although certain layers of the "microcode" probably can).  Software
capabilities also do not (efficiently) support the fine grained protection of
hardware capabilities.  On an architecture like the AS/400, EVERY memory
reference is checked against a capability, and individual bytes can be
protected.  Software capabilities are typically used to protect larger grained
objects, and are only checked when that object is "bound" to your protection
domain.

A stock RS/6000 could certainly run most (all?) AS/400 applications, probably
faster than an AS/400.  It couldn't, however, (efficiently) support the AS/400
OS, or the full architectural specification.

Someone from IBM Rochester might want to correct me if my memory is failing
here.  Merry Christmas...
-- 
    				|   Eric Koldinger
    Your tax dollars at play.	|   University of Washington
	 			|   Department of Computer Science
				|   kolding@cs.washington.edu
Newsgroups: comp.arch