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>
… …