[comp.arch] Open Systems

aronsson@sics.se (Lars Aronsson) (07/18/88)

Hugh LaMaster writes (lamaster@ames.arc.nasa.gov.UUCP - <11783@ames.arc.nasa.gov>):
> ... Personally, I would be satisfied if all vendors
>agreed on a standard data representation - specifically, IEEE floating
>point 32 bit and 64 bit, ASCII, and two's comp. integers, so that DATA
>files could be moved between machines, a requirement in our environment.
>
>  Hugh LaMaster, m/s 233-9,  UUCP ames!lamaster
>  NASA Ames Research Center  ARPA lamaster@ames.arc.nasa.gov

Are none of you arch guys into OSI (Open Systems Interconnection -
International Standard for data communication)? Have a look at the
following two draft CCITT Recommendations / ISO International
Standards:

%L X.208
%L ISO 8824
%T Open System Interconnection - 
Specification of Abstract Syntax Notation One (ASN.1)
%E Mr. J. White, Telenet Communication Corp., Reston, Virginia, USA
%I ISO and CCITT
%D 1988(new)
%O CCITT 1985-1988: Question 40. Final text in COM VII-255.

%L X.209
%L ISO 8825
%T Open System Interconnection - 
Specification af Basic Encoding Rules for Abstract Syntax Notation One (ASN.1)
%E Mr. J. White, Telenet Communication Corp., Reston, Virginia, USA
%I ISO and CCITT
%D 1988(new)
%O CCITT 1985-1988: Question 40. Final text in COM VII-256.

As in standard UNIX refer(1), %L is label, %T title, %E editor, %I
publisher, %D date, and %O "other information".

The first paper defines a (next to) formal notation (ASN.1) for
specifying and naming structured data types in an (intensionally)
general manner. This is just yet another notation. Most programming
languages allow you to specify new data types.

The second paper is the cookie. It specifies rules for encoding data
having the data types and structures defined using ASN.1 down to octet
(byte) streams (i.e.  bits). Since the encoding is unique, you can
also decode the structures.

Functions that encode your local data types (e.g. C structs or Pascal
records) into octet streams according to these standards and decode
such octet streams back to your local types are grouped together in
the presentation layer of the OSI stack. The encoded data are passed
between application programs (possibly on different machines) by means
of the session layer, which in turn uses the transport layer and so
on.

Since data streams on a communication channel never contain dynamic
data structures and pointers, these are not specified in the
standards.

So, we do in fact have an International Standard to specify *any*
(static) data structure and type. Not only ASCII characters and IEEE
floating point numbers.

Would anyone care to design a computer architecture implementing
support for these data types in hardware? Of course one might have to
add specifications for dynamic structures. The advantage would be to
get rid of the presentation layer in the OSI stack and, of course
since this is the goal for OSI, to get really open (interconnectable,
compatible) data systems. Note that ASCII, the American Standard Code
for Information Interchange, also started out as a communications
standard.