Vision Architecture Status Feb83
Vision Architecture Status Feb83
\
b) read access to the current code object For this to really work, we need to extend the notion of overlap
to cover the case exel'lplified by MOVE8 [B5+X6], X6.
The ACD roakes a distinction bet~een read access to the If MOVE8 encounters a page fault at [B5+X6+1] , the value of X6
current code object and read access to the saroe object roay already have been l'Iodified to the value at [B5+X6].
~hen it does not happen to be the current code object. To avoid this, the definition of "overlap" l'Iust incorporate the
It does this by stating that read access to the current cOl'lponents of an address calculation for the source operands.
code object is al~ays granted regardless of the contents
of the Obj'ect Descriptor for the, code object.
7. Code object size
,Currently, this ca'n be iropleroe~ted on the VCF60 and the
, VCF50, only by, doing extra ~ork in CALLX and EXIT, ~hich A Vision mode code object is limited in size to 2~24 bytes.
',will slo~, these il'lpprtant instructions do~n. . This is not currently stated explicitly in the ACO but could be
l.Jetherefore feel that very strong reasons are needed asSUl'\ed froro the forroat of the external procedure l'Iarker.
to retain this exceptional treatl'lent of the current code We no~ l'Iake this assuroption explicit.
object in the Vision architecture. If you feel you have
such strong reasons, ~e would like to hear them by Feb 15.
On the HP3000, P-relative addressing of data is a basic 8. OST and CST descriptors
addressing roode and the only one available to offer
protection to third-party soft~are. On Vision, no l.Je will extend the MOVEfSP8 instruction to allow software to
perforl'lance benefits derive from keeping data in your get access to the current values of the CST and OST descriptors.
code segroent rather than in soroe data segroent, and third-
party software can be protected by separate privilege
level and by exploiting the group structure. 9; Bounds checking on variable length instructions
Some instructions such as MaVEC and CMPC involve a sequence of
5. Interruptible instructions byte operations over a length given in the instruction.
The way bounds checking is perforl'led optil'lally in such an
Questions have been raised regarding the expected behavior when instruction depends on the organization of the hardware. On the
an interruptible instruction is resul'led and finds that its data VCF60, bounds checking is performed in parallel with an actual
on the stack has been corrupted. In particular, ~hat should access. On the VCF50, bounds checking is done explicitly in
happen when the lIP bit is set but the word popped frol'l the stack microcode As a consequence, on the VCF60 it is fastest to start up
(which represents how roany til'les around the loop have already the loop of MOVEC or CMPC and trap out when the end of the object
been performed) is found to be negative? is reached before the loop counter is exhausted. In contrast, on
The expected behavior in this and siroilar cases is allowed to be the VCF50 it is fastest to check whether both first and last byte
il'lplementation dependent, as long as the "damage" does not extend are within bounds and not do any bounds checking for interl'lediate
to another task. For exarople, it is acceptable to iml'lediately bytes once the loop starts.
continue to the next instruction when this happensj it is not The issue then arises when and how a bounds violation roust be
acceptable to hang in an infinite microcode loop. reported and how much of the instruction should be preSU!1led to
have been cOl'lpleted when this occurs.
l.Je have decided that hardware should be left free to choose the
6. "Overlap" sequence that is optil'lal for it. The definition for MOVEC ~ill
no~ state that if MOVEC cannot be completed due to a bounds violation,
The notion of overlap between source and destination of an the effect of MOVEC is that a contiguous but unspecified nUl'lber of
instruction needs soroe revision to get' around,sol'le nasty bytes has been l'Ioved, all ~ithin the object's bounds.
roicrocode iroplications. An instruction such as A siroilar l'Iodification ~ill serve for CMPC.
MOVE8 source, destination
10. Pagecfault trap
is only guaranteed to obtain the expected result when the
destination does not "overlap" the source. This is to allo~ The pararoeters for the page fault trap are currently listed as
hardware to do the roove in either one 64-bit gulp or two, 32-bit including an 8-byte Virtual Page Nurober (left justified) and
gulp or (probably incase of misaligroents) insomenul'lber of odd- a 4-byte.;P~ge" Offset (right justified).
sized gulps, and yet be able to recover from a page fault in l.Je have collapsed these no~ to a single a-byte Virtual Address.
the l'Iiddle of the l'Iove. The exclusion of overlap roakes it
permissible to restart the instruction even if the destination
had been partially l'Iodified.
11. Architecturally fixed object numbers 14. "MENSAC" instructions
We have received a request fro~ HPE-I to dedicate certain objects We have decided in principle to adopt the ~e~ory diagnostic
in group zero for certain uses and to fix these objects capabilities proposed by Jim Yichelroan and Ji~ Chiochios.
architecturally. In the version 5 ACD, four objects are fixed by We are in the process of refining all the encodings to assist
their logical address (the NIL object, trap code object, channel the hardware in iropleroenting these.
interrupt code object and processor interrupt code object) and The latest iteration is reflected in a roemo by Brian Button
four are fixed by their virtual address (SYSCOM area, hasn table, dated Feb 1.
page directory and PME). We have been asked to extend this list
and also to J1Iove the logical object nu~bers for trap code object,
etc. downward so that SYSCOM area, etc. can be given a logical 15. STATUSC'and STATUSD
object number that is the same as its virtual object number.
The current definition of STATUSC and STATUSD is based on the
We believe that the only object nUJ1lbers (logical or virtual) that difference in behavior of changes in status in a shared-~eJ1lory
need to be fixed architecturally are those that ~ust be known to J1Iultiprocessor syste~. Ite~s in STATUSC, when changed, do not
both software and roicrocode. Any other object numbers can be fixed affect any other processor in the systeJ1l; whereas changes to
by software convention, not "architectural mandate. STATUSO must be propagated to all other processors in the shared-
We are willing to move the logical object,nuro~ers for trap code memory ulultiprocessor syste~.
object, etc. downward in order to make it possible for HPE-I to
implement the sche~e they proposed as a software convention. We are currently investigating whether the responsibility'for
The revised numbering is shown below. More object numbers will notifying other processors can be relegated to syste~ software;
be fixed only after it has been demonstrated that both software this would J1Iake the multiprocessor imple~entation potentially
and hardware (microcode) are affected. simpler, faster and more reliable.
Until this investigation is cOJ1lplete, we will hold off on other
logical address changes to STATUSC and STATUSD that have been proposed, such as
reJ1loving the J1Iode bit froJ1l STATUSC.
NIL object
trap object
group
group
0,
0,
object
object
°10 It is quite possible that the eventual result will be to ~ove all
items of STATUSC and STATU SO into the SYSCOM area.
channel interrupt object group 0, object 11
processor interrupt object group 0, object 12
switch handler (nm) object group 0, object 13 16. PROBE and BPROBE.
PROBE is intended for use by systeJ1l intrinsics to allow theJ1l to
test whether the caller has passed a legal address (range) to the
12. Deci~al instructions intrinsic.
Jim Miller has made a proposal, with Alan Hewer, for a change
We have decided to allow conversions fro~ 54-bit integers to in the definition of PROBE and for a new variant (BPROBE) of
both 8-byte deci~al and 16-byte deci~al and vice versa. PROBE that takes the address to be probed from a base register
All these instructions will be ~oved to the CONVERT escape rather than fro~ ~e~ory. The change in PROBE closes a protection
group. hole having to do with the fact that the value of S in the
We have also decided to co~bine the ZEXT3 and TRUNC3 instructions environment of the procedure doing the PROBE is larger than the
of the previous status me~o into a single MOVE3 instruction. value of S that applied in the environment of the caller.
We will include a fuller description of these later. The variant BPROBE would help ~ake passing address par~eters
An updated opcode chart, though still tentative, is included. in base registers ~ore,effective.
Updated ACO pages for these two instructions are provided.
Note that the encodings for "ring" have been changed as well.
13. IEEE floating point
The Proposed Standard fo~ floating point arithooetic has co~e
one i~portant step closer to beco~lng the Standard for floating
point aritrjuletic.
In the latest round of balloting so~e ~all ~end~ents were passed.
We will i,nclude a description of this later. In the Man time,
please consult Bill Ames.
17. CHECKA and CHECKB.
CUrrently, the definition of CHECKA,B includes a special way - all references to "tme of day" should be replaced with "til1le
of treating the operand of the instruction. If the bit CBA of century"
or eBB is not set, the specification prohibits trapping on
an illegal operand. This was done so that mplel1lentations - MOVEtSP4; setting CBA and CBB does not require special privilege.
could il1lplel1lent CHECKA,B without having to do an operand fetch; Privilege level 3 is sufficient.
this could speed up the (frequent) case where CBA,CBB is clear MOVEfSP4; CBA and CBB do not warrant their own selector.
at the expense of the case where the bit is set. Accessing CBA and CBB must now be done using MOVEfSP STATUSB1.
However, it turns out that in l1lany situations the operand fetch
does not slow down execution and the special prohibition on - The breakrange trap does not return the operand responsible for
operand traps incurs a cost smply because it involves a special tripping the breakrange. -rt is up to software to deterl1line what
case. values changed within the breakrange. It is precisely because it
In retrospect, it is therefore clear that CHECKA and CHECKB were is not very feasible for hardware to keep track of the operand
overspecified. A better statel1lent is that CHECKA and CHECKB are responsible that the VISION architecture has a break range for write
not required to trap an operand violation if CBA,CBB are clear. but not for read and not for execute.
section 7.1.2 still l1lentions SI. This is an unintended carry-over
18. Ring level for code running on the ICS frol1l the version 3 ACD. Because of the redefinition of the
dispatcher marker, in version 5 QI and SI are one and the saroe.
We are looking into the possibility of relegating l1l0re code that Hence any reference to SI should be deleted.
l1lust run on the lCS to ring level 1 rather than level O.
This would allow better granularity on protection in systero code. - TCBX is no longer architecturally defined. In version 5 the TCB
It would also allow the trap object to run at level 1. is accessible to software, so a MOVEf/tSP is no longer needed
Changes to IEXIT lJJould be required to allow it to exit into code to manipulate a TCBX pointer. The TCB-extension is a software
that runs at a higher level. concept only.
We hope to have a proposal by next month.
- clarification: MOVEtSP4 task clock enable has no effect when
executed on the ICS.
- corrections and clarifications prove necessary in the definitions
of CALLX, EXIT and POOEL. Updated ACO pages are provided.
VISION ARCHITECTURE CONTROL DOCUMENT 02/08 VISION ARCHITECTURE CONTROL DOCUMENT 02/08
DO NOT COPY -- HP PRIVATE INFORMATION DO NOT COpy -- HP PRIVATE INFORMATION
~
+100
!10 DISABLE
! 18
+!01
NOP
+!02
EXIT
+!03
SEXIT
*ENABLE *INTERRUPT*UNTRY
TESTSTRI P* *QUAD4 *
+!04
TESTA
PSEB
EXTEND
*POP8
+!05
TESTB
PSDB
DELETE
BRX
+!06
TESTOV
DI8P
CHECKA
*
+!07
MrEAU
TRY
CHECKB
*POP16
-- lIP := OJ
S := 8 + 4; {pushes garbage}
PUSH4 P[32 .. 63];
PUSH4 Q[32 .. 63] j
Q := 8j
!20 * *PUSH2 ** * * P := P + target * 2;
!28 PUSH1 PUSH8 TESTDOlJN UP DOlJN PUSH16
. ! 30 POPl POP2 * *
*TEST4F TEST4D TESTREF * TEST16D Traps: STKOVF
138 * TEST2 TEST8 TEST8D TEST8F TEST16F CODEBNDSV
140 AND4 * * MPY4F MPY8 * MPY8F MPY16F DBCALL
!48 NOT4 DIV4
*REM4 NEG4 DIV4F DIV8 *REM8 DIV8F DIV16F
!50 OR4 NEG4F NEGB NEG8F NEG16F
158 XOR4 MOD4 ABS4 ABS4F ABS8 MOD8 ABS8F ABS16F 6.2.6.3 CALLX loi.r4
160 CMP1 CMP2 CMP4 CMP4F CMP8 BCMP8 CMP8F CMP16F
168 MOVE1 MOVE2 MOVE4 * MOVE8 B8ET8 *ADD8F MOVE16 External call. A procedure marker is pushed onto the stack and
170 TESTBIT I8C42 ADD4 ADD4F ADD8 BGET4 ADD16F control is passed to the entry point specified in the
178 * MPY4 SUB4 SUB4F SUB8 B8ET4 SUB8F 8UB16F OD for "loi". "Loi" contains the high 32 bits of a
180 MOVEADR BMOVEADR* * * * * *8L16D logical address into the target object.
188 * * MOVEf8P4 MOVEf8P8 TEST8EMASL4D 8L8D
190 * * MOVEtSP4 MOVEtSP8 MOVE8EMA8R4D SR8D 8R16D
198 CHECKLO CHECKHI DUP OVPUNCH MOVE3 CMP4D CMP8D CMP16D lIP := l-IIP; if IIP=l and PTE=l then Trap"DBCALL"j
lAO L8L4 A8L4 BCMP4 GET8IGN ZEXT2 ADD4D ADD8D ADD16D lIP := OJ
!A8 LSR4 ASR4 BADD4 VALN r - SUB4D SUB8D SUB16D PUSH8 Preturn;
lBO LSL8 ASL8 BSUB4 VALD i" MPY4D MPY8D MPY16D (8-4)[0 .. 2] := STATU8A[0 .. 2];
lB8 LSR8 ASR8 * * i" DIV4D DIV8D DIV16D PUSH4 Q[32 .. 63] j
lCO PROBE BPROBE MOVEBIT MOVEC * * MOVEBLR CMPB Q '= 8'
lC8 DPF ~ REP CMPC * TRANSL MOVEBRL CMPT if'loi'non-existent-object then Trap"CODEODTV";
lDO POLY4F POLY8F POLY16F SCANUNTIL* * * * if 00 (loi) . ITP <> VisionCode then Trap"CODETYPV";
lD8 * * *BRGL *BRNU *PUSH4 VECTOR SYS CONVERT if STATUSA. XL > OD (loi) . PR then Trap"CODERINGV";
@lEO BRG BRGE PUSHADR POP4 BPOP8 STATUSA.XL := OD(loi).KLj
@lE8 BRGU BRNL BRNE BR TESTLSB TESTl TEST4 BTEST8 Ptarget[ 0 .. 31] '= loi;
@!FO BRN BRE BRL BRLE CALL CALLX * BREAK Ptarget[32 .. 63] '= OD(loi).EPlJO * 4;
lF8 BRU BREU BRLU BRNG * * * ERROR P := Ptarget;
Note 1: the rows~arked with "@" contain the instructions that Traps: STKOVF
can be packed two per word. CODEODTV
CODETYPV
Note 2: the instructions VECTOR ,SYS and CONVERT are escapes to CODEBNDSV
a secondary set of opcodes. CODERNGV
DBCALL
6-13 6-47
VISION ARCHITECTURE CONTROL DOCUMENT 02/08 VISION ARCHITECTURE CONTROL DOCUMENT 02/08
DO NOT COPY -- HP PRIVATE INFORMATION DO NOT COPY -- HP PRIVATE INFORMATION
6.2.6.5 EXIT
6.2.4.9 SCANUNTIL liroit.r4, charset.ror, string.ror, index.rw4
Exit froro procedure. This instruction can be used to return
froro a procedure called lIJith CALL or CALLX. The Scan string until condition satisfied. The string of characters
procedure roarker located at 0 contains the necessary (bytes) pointed to by "string" is scanned for a character
inforroation to restore the context of the caller. that satisfies a particular condition. Scanning starts
If r.he caller executed in a different code object at the byte index "index" into the string and will not
than the current one, a nUillber of checks are lIlade. go beyond "lilllit". SCANUNTIL sets "index" to the value
of the first byte scanned that satisfies the condition
if such a byte exists; it leaves "index" at the value of
if (0-8)[0] = 1 then begin "lilllit", otherwise. The condition to be satisfied by the
{external exit} character is encoded as a 256-bit bit array (siroilar to a
Pobject := (0-12) [0 .. 31]; Pascal set). Bits found set in the bit array "charset"
Poffset :=.~0-8)[8 .. 31]~.zero-extended; signify that the corresponding character satisfies the
ST_return .- (0-8)[0 .. 7J, condi tion.
if STATUS.XL > ST return.XL then Trap"CODERINGV"; If the logical address of "charset" is lIJithin 32 bytes
if Pobject non-exIstent then Trap"CODEODTV"; of the object's upper bound, an addressing viOlation trap
if OD(Pobjectl. TYPE <> VisionCode then Trap"CODETYPV"; is raised. This instruction lIlust be interruptible.
if ST return.XL > STATUSB.XTL then Trap"INSXTL";
end -
else begin MOVEADR string, Stj
{internal exit} if lIP = 0 then C .= index
Pobject := P[0 •. 31]; else POP4 C;
Poffset := (0-8)[0 .. 31]; lIP '= o·
ST_return := STATUSA; CC :: CCL;
end; Notyetdone := C <= liroit;
o offset := (0-4)[0 .. 31]; while Notyetdone do begin
if 0 offset < 0 or 0 offset> 0[32 .. 63] - 12 Char := (St + C ) [0 .. 7]; {zero-extend}
then-Trap"STKCONSISTV" ; TESTBIT Char, charset;
if Poffset[31] = 1 and {iNpleroentation choice} if CC = CCG then begin
then Trap" INSODDP" ; Notyetdone := false;
Poffset[31] '= 0; index : = C;
8[32 .. 63] '= 0[32 .. 63] - 12; end
0[32 .. 63] '= O_offset; else begin
P[0 .. 31] '= Pobject; C := C + 1;
P[32 .. 63] Poffset; Notyetdone := C <= lilllit;
STATUSA '= ST_return; {SIT and DBP bits not to take { if iropleroentation chooses to acknollJledge
effect until next instruction} an external interrupt here, then
PUSH4 C; set lIP := 1; Notyetdone := false;
end;
Status: restored froro roarker on external exit end;
Traps: INSXTL
CODEODTV
CODERINGV
CODETYPV Status: CC
STKCONSISTV Traps: AddressingV
CODEBNDSV
INSODDP
6-49 6-40
VISION ARCHITECTURE CONTROL DOCUMENT 02/08 VISION ARCHITECTURE CONTROL DOCUMENT 02/08
DO NOT COPY -- HP PRIVATE INFORMATION DO NOT COPY -- HP PRIVATE INFORMATION
Traps: INSCHKHI
6-59 6-51
VISION ARCHITECTURE CONTROL DOCUMENT 02/08 VISION ARCHITECTURE CONTROL DOCUMENT 02/08
DO NOT COPY -- HP PRIVATE INFORMATION DO NOT COPY HP PRIVATE INFORMATION
4-16 4-17
VISION ARCHITECTURE CONTROL DOCUMENT 02/08 VISION ARCHITECTURE CONTROL DOCUMENT 02/08
DO NOT COPY -- HP PRIVATE INFORMATION DO NOT COPY -- HP PRIVATE INFORMATION
The IEXIT description uses these uninterruptible sequences: Note 1: i~ple~entations ~ay substitute for the test Q = Q1 the
test (Q-4)[0 .. 31] = QI[32 .. 63].
RESTORE_RETURN(Bregs): begin Note 2: "todispatch" su~~arizes the condition that dispatching
if (TCB.RSWIP = 0) or Bregs then begin is both desired (DRF=l) and possible (DDC=O, IE=l).
BPOP8 B5; .. BPOP8 BO;
POP4 X15; .. POP4 XO;
end- Status: restored froA Aarker
POP8 sTATUSB; TCB.RSW1P·= 0; Traps: INSPRIV
Q := S; EXIT; STKUNF
end STKCONSISTV
SWITCHC
RESTORE_HP3000: begin 'POP2' DeIQ; Q:= S - DeIQ; AddressingV on all base register loads
'POP8' STATUSB; 'POP2' Z.OFFSET;
'POP2' DL.OFFSET; 'POP2' DB. OFFSET;
'POP2' DB.DST;
end
6-66
6-65
VISION ARCHITECTURE CONTROL DOCUMENT 01/20 VISION ARCHITECTURE CONTROL DOCUMENT 02/08
DO NOT COpy -- HP PRIVATE INFORMATION DO NOT COpy -- HP PRIVATE INFORMATION
The ShlITCH instruction provides a switch of the execution The RShlITCH is the reverse operation to a corresponding SYT
environment of a process from Native mode directly to instruction which occured from Compatibility mode and basically
Compatibility mode. The Native mode stack is capped with a returns execution control back onto the Compatibility mode stack
Switch Stack Marker, the appropriate mode flags changed, and environment. The Native mode stack is flushed to leave the old
control passed to the Compatibility ShlITCH trap routine on the switch stack marker, the process mode flag set to Compatibility
Compatibility mode stack which executes above the previous mode, and a relaunch of the Compatibility mode process occurs.
interrupt stack marker. Any interference, such as Page Faults,
aborts the operation after setting the 'switch in progress' This instruction requires Ring level 1.
flag which then takes effect on the subsequent IEXIT to the
process. if STATUSC.ICS = 1 or STATUSS.IE o
then Trap" INSShlITCH"
This instruction requires Ring level 1. else
begin
if STATUSC.ICS = 1 or STATUSB.IE 0 S := Q+8;
then Trap" I NSShl ITCH " TCB.SN := Sj
else TCB.XM := lj
begin TCS.RShlIP := 1;
PUSH EXTERNAL PROCEDURE MARKER; \ execute_case_l_of_IEXIT;
PUSH8 STATUSS; - / SbJitch Marker end;
TCB.SN := Sj
TCB XM . = l'
TCS : SlJ I P : = 't;
execute_case_l_of_IEXITj
end;
10-15
10-16
VISION ARCHITECTURE CONTROL DOCUMENT 02/08 VISION ARCHITECTURE CONTROL DOCUMENT 02/08
DO NOT COPY -- HP PRIVATE INFORMATION DO NOT COPY -- HP PRIVATE INFORMATION
6-52 6-53
VISION ARCHITECTURE CONTROL DOCUMENT 07/31 VISION ARCHITECTURE CONTROL DOCUMENT 02/08
DO NOT COPY -- HP PRIVATE INFORMATION DO NOT COPY -- HP PRIVATE INFORMATION
6.2.7.3 MOVEfSP8 selector.rl, destinaiton.m8 6.2.8 Instructions that interact mith the address space
Move from special register. This instruction is used to
obtain the contents of a special hardmare register
or dedicated memory location identified by the 6.2.8.1 PROBE ring_access.r1, address.m, length.r4, s_upper.r4
value of "selector". Values of "selector" not
represented in the folloming list cause the trap Probe access rights. This instruction sets condition codes
"SELECTORV" to be raised. dependent on the legality of accessing the address
range given by "address" and "length". PROBE tests
mhether in the ring level specified by "ring" the type
selector ibits req'd XL Assembler Alias of access represented by "access" mould be legal
everywhere in the logical address range starting at
o program counter 64 3 GetP "address" and ending at "address"+"length"-l.
1 ODTO.LA 64 1 A negative "length" is considered illegal; a zero
2 TCB.LA 64 1 GetTCB length represents the case mhere the address range mill
3 interval timer 64 1 not be used, yet the address Nay have to be loaded into
4 task clock' 64 1 a base register.
5 time of century 64 1 If the object is the stack object, then the ending
6 QLLA 64 1 address is cONpared against "s upper" instead of the
7 DST descriptor 64 1 present value of S or SL. -
8 CST descriptor 64 1 PROBE requires ring 1 privilege.
ring '= ring access[0 .. 3];
Traps: SELECTORV access '= ring=access[4 .. 7];
INSPRIV
Encodings: ring access
o o instruction fetch
6.2.7.4 MOVEtSP8 selector.r1, source.r8 1 1 meNory read-
2 2 memory=mrite
Move to special register. This instruction stores the 3 3
value of "source" into the special hardware 4 caller's
register or dedicated memory location identified
by "selector". Values not in this list will cause a SELECTORV trap.
The resulting conditon code settings are as folloms:
selector #bits req'd XL Assembler Alias CCL: the object does not exist or the indicated
access is illegal or the length is negative.
0 interval timer 64 0
1 task clock 64 0 CCE: the indicated access is legal but the indicated
2 time of century 64 0 address range is not wholly mithin the object.
3 QL LA 64 0
4 DST descriptor 64 0 CCG: the indicated access is legal at the indicated
5 CST descriptor 64 0 privilege level over the entire address range
specified; or: the object exists, the access is
legal and the length is zero.
Traps: dependent on selector
SELECTORV Status: CC
INSPRIV Traps: INSPRIV
SELECTORV
6-54
6-56
VISION ARCHITECTURE CONTROL DOCUMENT 02/08
DO NOT COpy -- HP PRIVATE INFORMATION
Status: CC
Traps: SELECTORV
6-56.5
VCF 60 SPU BLOCK DIAGRAM
POWER OPTIONAL
SYSTEM
FLOATING
CENTRAL POINT
PROCESSOR
PSCB
PROCESSOR
I
YODEY ~
INTERFACE w::;.~--~
I MENORY
ARRAY F CHANNEL
ADAPTER
II
DEVICE
, ADAPTER
, ,
, ,I RS2S2C
I
If' /~
r_erE-
I
I
I llENORY
_ r
snnsc
~~------------'\~V-~\V~-~~
F= ARRAY
/"