Computer System

 

Component: At system-level, components are CPU, memory (instruction memory, data memory), disk, etc.

Connector: system bus acts as connector between components.

Interface: input/output ports are interface

Link: Wire function as link

Example: To simplify our discussion here, we use the following system-level diagram:

 

 

 

 

 

 

 

 

We have components: CPU, Memory, MMU (Memory Management Unit), Disk and Disk Controller, Display Controller and Monitor and NIC (Network Interface Card); system bus is a connector.

 

<! - - Namespace Declaration - ->

<?xml version = “1.0”  encoding = “UTF-8” ?>

<xArch  xmlns = “http://www.ics.uci.edu/pub/arch/xArch/instance.xsd”

xmlns:instance = “http://www.ics.uci.edu/pub/arch/xArch/instance.xsd”

xmlns:types = “http://www.ics.uci.edu/pub/arch/xArch/types.xsd”

xmlns:xlink = “http://www.w3.org/1999/xlink”

xmlns:xsi = “http://www.w3.org/2000/10/XMLSchema-instance”>

 

<types:archStructure xsi:type = “types:ArchStructure”>

 

            <! - - Component: CPU Description - ->

<types:component instance:id = “CPUComp” xsi:type = “types:Component”>

<types:description xsi:type = “instance:Description”>CPU</types:description>

<types:interface instance:id = “CPUCompBottom” xsi:type = “types:Interface”>

<types:description xsi:type = “instance:Description”> CPU.Bottom </types:description>

<types:direction xsi:type = “instance:Direction” >inout</types:direction>

<types:type xlink:type = “simple” xlink:href = “ #tBottomType”/>

</types:interface>

<types:type xlink:type = “simple” xlink:href = “#tCPU” />

 

<! - - subArchitecture description - ->

      <types: subArchitecture>         

      <types: archStructure>

 

      <! – component: RegisterFile description - ->

      <types:component instance:id = “RegisterFileComp” xsi:type = “types:Component”>

      <types:description xsi:type = “instance:Description”>int 10h</types:description>

      <types:interface instance:id = “RegisterFileCompRight” xsi:type = “types:Interface”>

      <types:description xsi:type = “instance:Description”>RegisterFile.Right </types:description>

      <types:direction xsi:type = “instance:Direction” >inout</types:direction>

      <types:type xlink:type = “simple” xlink:href = “ #tRightType”/>

      </types:interface>

      <types:type xlink:type = “simple” xlink:href = “#tRegisterFile” />

      </types:component>

 

<! – Component: MMU description - ->

      <types:component instance:id = “MMUComp” xsi:type = “types:Component”>

      <types:description xsi:type = “instance:Description”>int 10h</types:description>

      <types:interface instance:id = “MMUCompRight” xsi:type = “types:Interface”>

      <types:description xsi:type = “instance:Description”>MMU.Right </types:description>

      <types:direction xsi:type = “instance:Direction” >inout</types:direction>

      <types:type xlink:type = “simple” xlink:href = “ #tRightType”/>

      </types:interface>

      <types:type xlink:type = “simple” xlink:href = “#tMMU” />

      </types:component>

 

<! – Component: Cache description - ->

      <types:component instance:id = “CacheComp” xsi:type = “types:Component”>

      <types:description xsi:type = “instance:Description”>int 10h</types:description>

      <types:interface instance:id = “CacheCompRight” xsi:type = “types:Interface”>

      <types:description xsi:type = “instance:Description”>Cache.Right </types:description>

      <types:direction xsi:type = “instance:Direction” >inout</types:direction>

      <types:type xlink:type = “simple” xlink:href = “ #tRightType”/>

      </types:interface>

      <types:type xlink:type = “simple” xlink:href = “#tCache” />

      </types:component>

 

</types: archStructure>

 

      <types: signatureInterfaceMapping>

      <types: outerSignature xsi:type= “simple” xlink:href = “CPURight”/>

      <types: innerInterface xsi:type= “simple” xlink:href= “RegisterFileRight” />

<types: outerSignature xsi:type= “simple” xlink:href = “CPURight”/>

      <types: innerInterface xsi:type= “simple” xlink:href= “MMURight” />

<types: outerSignature xsi:type= “simple” xlink:href = “CPURight”/>

      <types: innerInterface xsi:type= “simple” xlink:href= “CacheRight” />

      </types: signatureInterfaceMapping>

</types:subArchitecture>

</types:component>

 

            <! - - Component: LocalDisk Description - ->

<types:component instance:id = “LocalDiskComp” xsi:type = “types:Component”>

<types:description xsi:type = “instance:Description”>LocalDisk</types:description>

<types:interface instance:id = “LocalDiskCompRight” xsi:type = “types:Interface”>

<types:description xsi:type = “instance:Description”> LocalDisk.Right </types:description>

<types:direction xsi:type = “instance:Direction” >inout</types:direction>

<types:type xlink:type = “simple” xlink:href = “ #tRightType”/>

</types:interface>

<types:type xlink:type = “simple” xlink:href = “#tLocalDisk” />

</types:component>

 

<! - - Component: Disk Controller Description - ->

<types:component instance:id = “DiskControllerComp” xsi:type = “types:Component”>

<types:description xsi:type = “instance:Description”>DiskController</types:description>

<types:interface instance:id = “DiskControllerCompLeft” xsi:type = “types:Interface”>

<types:description xsi:type = “instance:Description”> DiskController.Left </types:description>

<types:direction xsi:type = “instance:Direction” >inout</types:direction>

<types:type xlink:type = “simple” xlink:href = “ #tLeftType”/>

</types:interface>

<types:interface instance:id = “DIskControllerCompRight” xsi:type = “types:Interface”>

<types:description xsi:type = “instance:Description”> DiskController.Right </types:description>

<types:direction xsi:type = “instance:Direction” >inout</types:direction>

<types:type xlink:type = “simple” xlink:href = “ #tRightType”/>

</types:interface>

<types:type xlink:type = “simple” xlink:href = “#tDiskController” />

</types:component>

 

<! - - Component: NIC(Network Interface Card) Description - ->

<types:component instance:id = “NICComp” xsi:type = “types:Component”>

<types:description xsi:type = “instance:Description”>NIC</types:description>

<types:interface instance:id = “NICCompLeft” xsi:type = “types:Interface”>

<types:description xsi:type = “instance:Description”>NIC.Left </types:description>

<types:direction xsi:type = “instance:Direction” >inout</types:direction>

<types:type xlink:type = “simple” xlink:href = “ #tLeftType”/>

</types:interface>

<types:interface instance:id = “NICCompRight” xsi:type = “types:Interface”>

<types:description xsi:type = “instance:Description”>NIC.Right </types:description>

<types:direction xsi:type = “instance:Direction” >inout</types:direction>

<types:type xlink:type = “simple” xlink:href = “ #tRightType”/>

</types:interface>

<types:type xlink:type = “simple” xlink:href = “#tNIC” />

</types:component>

 

<! - - Component: LAN(Local Area Network) Description - ->

<types:component instance:id = “LANComp” xsi:type = “types:Component”>

<types:description xsi:type = “instance:Description”>LAN</types:description>

<types:interface instance:id = “LANCompLeft” xsi:type = “types:Interface”>

<types:description xsi:type = “instance:Description”>LAN.Left </types:description>

<types:direction xsi:type = “instance:Direction” >inout</types:direction>

<types:type xlink:type = “simple” xlink:href = “ #tLeftType”/>

</types:interface>

<types:type xlink:type = “simple” xlink:href = “#tLAN” />

</types:component>

 

<! - - Component: Router Description - ->

<types:component instance:id = “ROUTERComp” xsi:type = “types:Component”>

<types:description xsi:type = “instance:Description”>ROUTER</types:description>

<types:interface instance:id = “ROUTERCompLeft” xsi:type = “types:Interface”>

<types:description xsi:type = “instance:Description”>ROUTER.Left </types:description>

<types:direction xsi:type = “instance:Direction” >inout</types:direction>

<types:type xlink:type = “simple” xlink:href = “ #tLeftType”/>

</types:interface>

<types:type xlink:type = “simple” xlink:href = “#tROUTER” />

</types:component>

 

<! - - Component: RemoteComputer Description - ->

<types:component instance:id = “RemoteComputerComp” xsi:type = “types:Component”>

<types:description xsi:type = “instance:Description”>RemoteComputer</types:description>

<types:interface instance:id = “RemoteCpomputerCompLeft” xsi:type = “types:Interface”>

<types:description xsi:type = “instance:Description”>RemoteComputer.Left </types:description>

<types:direction xsi:type = “instance:Direction” >inout</types:direction>

<types:type xlink:type = “simple” xlink:href = “ #tLeftType”/>

</types:interface>

<types:type xlink:type = “simple” xlink:href = “#tRemoteComputer” />

</types:component>

 

<! - - Component: HCI Device Description - ->

<types:component instance:id = “HCIDeviceComp” xsi:type = “types:Component”>

<types:description xsi:type = “instance:Description”>HCIDevice</types:description>

<types:interface instance:id = “HCIDeviceCompLeft” xsi:type = “types:Interface”>

<types:description xsi:type = “instance:Description”>HCIDevice.Left </types:description>

<types:direction xsi:type = “instance:Direction” >inout</types:direction>

<types:type xlink:type = “simple” xlink:href = “ #tLeftType”/>

</types:interface>

<types:type xlink:type = “simple” xlink:href = “#tHCIDevice” />

</types:component>

 

<! - - Connector: System Bus Description- - >

<types:connector instance:id = “SystemBusConn” xsi:type = “types:Connector”>

<types:description xsi:type = “instance:Description>SystemBus</types:description>

<types:interface instance:id = “SystemBusLeft” xsi:type = “types:Interface”>

<types:description xsi:type = “instance:Description”> SystemBus.Left</types:description>

<types:direction xsi:type = “instance:Direction:>inout</types:direction>

<types:type xlink:type = “simple” xlink:href = “#tLeftType”/>

</types:interface>

<types:type xlink:type = “simple” xlink:href= “#tSystemBus” />

</types:connector>

 

 

<! - - Connector: RibbonConnector Description- - >

<types:connector instance:id = “RibbonConnectorConn” xsi:type = “types:Connector”>

<types:description xsi:type = “instance:Description>RibbonConnector</types:description>

<types:interface instance:id = “RibbonConnectorLeft” xsi:type = “types:Interface”>

<types:description xsi:type = “instance:Description”> RibbonConnector.Left</types:description>

<types:direction xsi:type = “instance:Direction:>inout</types:direction>

<types:type xlink:type = “simple” xlink:href = “#tLeftType”/>

</types:interface>

<types:type xlink:type = “simple” xlink:href= “#tRibbonConnector” />

</types:connector>

 

<! - - Connector: Ethernet/HubSwitcher Description- - >

<types:connector instance:id = “EthernetHubSwitcherConn” xsi:type = “types:Connector”>

<types:description xsi:type = “instance:Description>EthernetHubSwitcher</types:description>

<types:interface instance:id = “EthernetHubSwitcherLeft” xsi:type = “types:Interface”>

<types:description xsi:type = “instance:Description”> EthernetHubSwitcher.Left</types:description>

<types:direction xsi:type = “instance:Direction:>inout</types:direction>

<types:type xlink:type = “simple” xlink:href = “#tLeftType”/>

</types:interface>

<types:type xlink:type = “simple” xlink:href= “#tEthernetHubSwitcher” />

</types:connector>

 

<! - - Connector: Internet Description- - >

<types:connector instance:id = “InternetConn” xsi:type = “types:Connector”>

<types:description xsi:type = “instance:Description>Internet</types:description>

<types:interface instance:id = “InternetLeft” xsi:type = “types:Interface”>

<types:description xsi:type = “instance:Description”> Internet.Left</types:description>

<types:direction xsi:type = “instance:Direction:>inout</types:direction>

<types:type xlink:type = “simple” xlink:href = “#tLeftType”/>

</types:interface>

<types:type xlink:type = “simple” xlink:href= “#tInternet” />

</types:connector>

 

            <! - - Link: CPU-System Bus Description -->

<types:link instance:id = “link1” xsi:type = “types:Link”>

<types:description xsi:type = “instance:Description”> CPU-SystemBus</types:description>

<types:point xsi:type = “types:Point”>

<instance:anchorOnInterface xlink:href = “#CPURight” xsi:type = “instance:XMLLink” xlink:type = “simple”/>

</types:point>

<types:point xsi:type = “types:Point”>

<instance:anchorOnInterface xlink:href = “#SystemBusLeft” xsi:type = “instance:XMLLink” xlink:type = “simple”/>

</types:point>

</types:link>

 

 

<! - - Link: Local Disk-RibbonConnector-Disk Controller Description -->

<types:link instance:id = “link5” xsi:type = “types:Link”>

<types:description xsi:type = “instance:Description”> Local Disk-RibbonConnector</types:description>

<types:point xsi:type = “types:Point”>

<instance:anchorOnInterface xlink:href = “#Local DiskLeft” xsi:type = “instance:XMLLink” xlink:type = “simple”/>

</types:point>

<types:point xsi:type = “types:Point”>

<instance:anchorOnInterface xlink:href = “#Bus1Right” xsi:type = “instance:XMLLink” xlink:type = “simple”/>

</types:point>

</types:link>

 

<types:link instance:id = “link6” xsi:type = “types:Link”>

<types:description xsi:type = “instance:Description”> Disk-RibbonConnector</types:description>

<types:point xsi:type = “types:Point”>

<instance:anchorOnInterface xlink:href = “#DiskRight” xsi:type = “instance:XMLLink” xlink:type = “simple”/>

</types:point>

<types:point xsi:type = “types:Point”>

<instance:anchorOnInterface xlink:href = “#RibbonConnectorLeft” xsi:type = “instance:XMLLink” xlink:type = “simple”/>

</types:point>

</types:link>

 

<! - - Link: Disk Controller-System Bus Description -->

<types:link instance:id = “link7” xsi:type = “types:Link”>

<types:description xsi:type = “instance:Description”> DiskController-SystemBus</types:description>

<types:point xsi:type = “types:Point”>

<instance:anchorOnInterface xlink:href = “#DiskControlleLeft” xsi:type = “instance:XMLLink” xlink:type = “simple”/>

</types:point>

<types:point xsi:type = “types:Point”>

<instance:anchorOnInterface xlink:href = “#SystemBusRight” xsi:type = “instance:XMLLink” xlink:type = “simple”/>

</types:point>

</types:link>

 

 

<! - - Link: NIC-System Bus Description -->

<types:link instance:id = “link8” xsi:type = “types:Link”>

<types:description xsi:type = “instance:Description”>NIC-SystemBus</types:description>

<types:point xsi:type = “types:Point”>

<instance:anchorOnInterface xlink:href = “#NICLeft” xsi:type = “instance:XMLLink” xlink:type = “simple”/>

</types:point>

<types:point xsi:type = “types:Point”>

<instance:anchorOnInterface xlink:href = “#SystemBusRight” xsi:type = “instance:XMLLink” xlink:type = “simple”/>

</types:point>

</types:link>

 

<! - - Link: NIC-EthernetHubSwitcher-LAN Description -->

<types:link instance:id = “link9” xsi:type = “types:Link”>

<types:description xsi:type = “instance:Description”>NIC-EthernetHubSwitcher</types:description>

<types:point xsi:type = “types:Point”>

<instance:anchorOnInterface xlink:href = “#EthernetHubSwitcherLeft” xsi:type = “instance:XMLLink” xlink:type = “simple”/>

</types:point>

<types:point xsi:type = “types:Point”>

<instance:anchorOnInterface xlink:href = “#NICRight” xsi:type = “instance:XMLLink” xlink:type = “simple”/>

</types:point>

</types:link>

 

<types:link instance:id = “link10” xsi:type = “types:Link”>

<types:description xsi:type = “instance:Description”>EthernetHubSwitcher-LAN</types:description>

<types:point xsi:type = “types:Point”>

<instance:anchorOnInterface xlink:href = “#EhterentRight” xsi:type = “instance:XMLLink” xlink:type = “simple”/>

</types:point>

<types:point xsi:type = “types:Point”>

<instance:anchorOnInterface xlink:href = “#LANLeft” xsi:type = “instance:XMLLink” xlink:type = “simple”/>

</types:point>

</types:link>

 

<! - - Link: EthernetHubSwither-Router-Internet-RemoteComputer Description -->

<types:link instance:id = “link11” xsi:type = “types:Link”>

<types:description xsi:type = “instance:Description”>EthernetHubSwitcher-Router</types:description>

<types:point xsi:type = “types:Point”>

<instance:anchorOnInterface xlink:href = “#EthernetHubSwitcher” xsi:type = “instance:XMLLink” xlink:type = “simple”/>

</types:point>

<types:point xsi:type = “types:Point”>

<instance:anchorOnInterface xlink:href = “#RouterLeft” xsi:type = “instance:XMLLink” xlink:type = “simple”/>

</types:point>

</types:link>

 

<types:link instance:id = “link12” xsi:type = “types:Link”>

<types:description xsi:type = “instance:Description”>Imternet-Router</types:description>

<types:point xsi:type = “types:Point”>

<instance:anchorOnInterface xlink:href = “#Internet” xsi:type = “instance:XMLLink” xlink:type = “simple”/>

</types:point>

<types:point xsi:type = “types:Point”>

<instance:anchorOnInterface xlink:href = “#RouterRight” xsi:type = “instance:XMLLink” xlink:type = “simple”/>

</types:point>

</types:link>

<types:link instance:id = “link13” xsi:type = “types:Link”>

<types:description xsi:type = “instance:Description”>Internet-RemoteComputers</types:description>

<types:point xsi:type = “types:Point”>

<instance:anchorOnInterface xlink:href = “#Internet” xsi:type = “instance:XMLLink” xlink:type = “simple”/>

</types:point>

<types:point xsi:type = “types:Point”>

<instance:anchorOnInterface xlink:href = “#RemoteComputerLeft” xsi:type = “instance:XMLLink” xlink:type = “simple”/>

</types:point>

</types:link>

 

<! - - Link: HCI Device-System Bus Description -->

<types:link instance:id = “link13” xsi:type = “types:Link”>

<types:description xsi:type = “instance:Description”>HCI Device-SystemBus</types:description>

<types:point xsi:type = “types:Point”>

<instance:anchorOnInterface xlink:href = “#HCIDeviceLeft” xsi:type = “instance:XMLLink” xlink:type = “simple”/>

</types:point>

<types:point xsi:type = “types:Point”>

<instance:anchorOnInterface xlink:href = “#SystemBusRight” xsi:type = “instance:XMLLink” xlink:type = “simple”/>

</types:point>

</types:link>

 

 

</types:archStructure>

… …