專利名稱:使cpu與和外面的數(shù)據(jù)處理裝置交互作用的硬件隔離的方法和裝置的制作方法
本申請(qǐng)是1990年4月29日遞交的題為“使CPU與和外面的數(shù)據(jù)處理裝置交互作用的硬件隔離的方法和裝置”、申請(qǐng)?zhí)枮?0102595.X的中國(guó)專利申請(qǐng)的分案申請(qǐng)。
本申請(qǐng)所作的改進(jìn)涉及允許一個(gè)數(shù)據(jù)處理系統(tǒng)中的中央處理單元(CPU)與不同于控制著該數(shù)據(jù)處理系統(tǒng)的工作的操作系統(tǒng)的裝置發(fā)生交互作用的改進(jìn)了的方法和裝置。也就是說(shuō),操作系統(tǒng)在它的起動(dòng)配置中并沒(méi)有該外來(lái)裝置的配置數(shù)據(jù),而本發(fā)明所作的改進(jìn)在于能使CPU控制該裝置和/或與該裝置交換數(shù)據(jù)和命令。
先有技術(shù)中的數(shù)據(jù)處理系統(tǒng)中都包括一個(gè)系統(tǒng)配置,由這個(gè)系統(tǒng)配置指定構(gòu)成一個(gè)具體的處理系統(tǒng)的裝置和程序。配置文件中包含作為啟動(dòng)系統(tǒng)的過(guò)程的一部分由操作系統(tǒng)執(zhí)行的命令。
在典型情況下,數(shù)據(jù)處理系統(tǒng)中包括使所用的配置裝置初始化的啟動(dòng)碼。這個(gè)過(guò)程包括讀取指定電路板、磁盤(pán)和其它與系統(tǒng)相連的裝置的配置表。如果一個(gè)裝置沒(méi)有經(jīng)過(guò)這樣的配置,一般情況下它就不能與系統(tǒng)的處理器相連并進(jìn)行數(shù)據(jù)傳送,其原因是操作系統(tǒng)不能控制這種數(shù)據(jù)傳送,也就是說(shuō),對(duì)于操作系統(tǒng)而言,該裝置屬于“外來(lái)”裝置。操作系統(tǒng)將拒絕與偽裝置信號(hào)源進(jìn)行數(shù)據(jù)傳送同時(shí)把它們消除掉。
本改進(jìn)通過(guò)提供一種用來(lái)使CPU和與它相關(guān)的系統(tǒng)硬件和操作系統(tǒng)隔離或叫解耦,同時(shí)使CPU與外來(lái)裝置相連使它們相互作用的方法和裝置,使CPU和這些外來(lái)裝置相連并發(fā)生交互作用。
在最佳實(shí)施例中,在CPU中執(zhí)行一條指令的一個(gè)專用的應(yīng)用程序把一組預(yù)定的虛擬地址之一放在CPU虛擬地址總線上,邏輯電路將對(duì)這些地址進(jìn)行譯碼并且禁止CPU的地址選通信號(hào)送入相關(guān)連的其它系統(tǒng)硬件,而把這個(gè)地址選通信號(hào)送入外來(lái)裝置中。這些操作將允許CPU使用外來(lái)裝置而不是系統(tǒng)硬件來(lái)執(zhí)行由指令定義的功能。舉個(gè)例子來(lái)說(shuō),指令可以設(shè)定CPU和外來(lái)裝置之間的命令和/或數(shù)據(jù)傳送。附圖的簡(jiǎn)要說(shuō)明
圖1表示利用一條通信線路的標(biāo)準(zhǔn)互連計(jì)算機(jī)系統(tǒng);圖2表示在容錯(cuò)環(huán)境中S/88處理器的互連;圖3表示較佳實(shí)施例中S/370處理器與S/88處理器的互連;圖4表示以較佳實(shí)施例的方式將一臺(tái)S/370系統(tǒng)連接到一臺(tái)S/88系統(tǒng);圖5表示較佳實(shí)施例中用一臺(tái)分離的S/88處理器來(lái)支持S/370與S/88之間的數(shù)據(jù)交換;圖6A,6B與6C表示采用原有技術(shù)IBM系統(tǒng)/88模塊、以高速數(shù)據(jù)通信線(HSDI)互連的多個(gè)模塊,以及在具有單一系統(tǒng)映象的容錯(cuò)環(huán)境中通過(guò)網(wǎng)絡(luò)互連的多個(gè)模塊;圖7表示本發(fā)明的一種改進(jìn)模塊,它提供了S/370處理器在一個(gè)S/370操作系統(tǒng)的控制下執(zhí)行S/370的應(yīng)用程序,憑借處理器是互相連接的并且與S/88處理器,I/O和主存儲(chǔ)器互相連接這種方式使之成為能夠容錯(cuò);圖8更詳細(xì)地展示了成對(duì)的S/370單元與S/88單元互相連接構(gòu)成一個(gè)處理器單元還展示了容錯(cuò)操作而把它們與另一個(gè)完全相同的合伙處理器單元之間的連接;圖9A與9B示出了在兩塊板上的成對(duì)的S/370與S/88單元的一種物理組裝方式以便把它們插入一個(gè)處理系統(tǒng)外殼的底板中;圖10概念性地示出了S/88主存儲(chǔ)器以及該存儲(chǔ)器中專用于S/370處理器單元而S/88操作系統(tǒng)并不知道的段;
圖11圖示了一臺(tái)S/370處理器的較佳形式的一些部件以及將其與一臺(tái)S/88處理器和存儲(chǔ)器相連的裝置;圖12更詳細(xì)地示出了圖11中的部件以及一臺(tái)S/88處理器的一個(gè)較佳形式的各種部件;圖13圖示了S/370總線適配器;圖14A,14B與15A-C概念性地示出了數(shù)據(jù)經(jīng)過(guò)S/370總線適配器的輸出通道的定時(shí)與移動(dòng);圖16更詳細(xì)地圖示了一臺(tái)S/370與一臺(tái)S/88處理器之間的直接互連;圖17概念性地示出了圖16的互連中一臺(tái)S/370總線適配器與一臺(tái)DMA控制器之間的數(shù)據(jù)流;圖18示出了四個(gè)通道之一的DMAC寄存器;圖19A,19B,和190(以圖19的配置)較圖16更詳細(xì)地示意/圖示了把一臺(tái)S/370處理器與一臺(tái)S/88處理器及主存儲(chǔ)器互連在一起的總線控制單元的一個(gè)較佳形式;圖20展示了兩個(gè)邏輯的較佳形式,一個(gè)是把一臺(tái)S/88處理器與其相關(guān)聯(lián)的系統(tǒng)硬件拆離的邏輯,另一個(gè)是用于處理從外來(lái)的S/370處理器到S/88處理器的中的中斷請(qǐng)求的邏輯;圖21概念性地示出了根據(jù)本申請(qǐng)的指導(dǎo)對(duì)具有多個(gè)互連的S/370-S/88處理器的一個(gè)模塊的現(xiàn)有S/88中斷結(jié)構(gòu)的修改;圖22,23與24為S/88的較佳形式的讀,寫(xiě)與中斷應(yīng)答周期的定時(shí)圖;圖25與26展示了在信箱讀命令,Q選通命令,BSM讀命令與MSM寫(xiě)命令期間,適配器總線通道0,1的信號(hào)握手定時(shí)圖;圖27為一臺(tái)S/370中央處理單元的一個(gè)較佳形式的方框圖;圖28與29示出S/370主存儲(chǔ)器與控制存儲(chǔ)器的一些區(qū)域;圖30示出了在S/370中央處理單元,I/O適配器,高速緩沖存儲(chǔ)器控制器,存儲(chǔ)器控制接口及S/88系統(tǒng)總線和處理器之間的接口總線的一種較佳形式;圖31為一臺(tái)S/370高速緩沖存儲(chǔ)器控制器的一種較佳形式的方框圖;圖32A與32B(以圖32的配置)示意性地更詳細(xì)地示出存儲(chǔ)器控制接口的一種較佳形式;圖33為圖示S/88系統(tǒng)總線上的單元之間的數(shù)據(jù)傳輸?shù)目偩€節(jié)拍的定時(shí)圖;圖34示出一個(gè)成對(duì)的存儲(chǔ)器控制接口的“數(shù)據(jù)進(jìn)入”寄存器的片段示意圖;圖35示出了存儲(chǔ)在圖32B中的FIFO(先進(jìn)先出)中的命令與存儲(chǔ)數(shù)據(jù)字的格式;圖36A-D示出了在存儲(chǔ)器控制接口中執(zhí)行的從S/370處理器及適配器中存儲(chǔ)與取命令;圖37為從一位程序員的觀點(diǎn)來(lái)看本申請(qǐng)時(shí)整個(gè)系統(tǒng)的較佳實(shí)施例的概念圖;圖38,39和40分別圖示S/370與S/88接口的微碼設(shè)計(jì),S/370 I/O命令的執(zhí)行,以及EXEO(執(zhí)行)370軟件與S/370 I/O驅(qū)動(dòng)器之間的接口的劃分(即ETIO+BCU+S/370微碼);圖41A與41B概念性地示出EXEC370軟件與S/37C微碼之間以及ETIO微碼與EXEC370軟件之間的接口與協(xié)議;圖41C-1H示出了BCU本地存儲(chǔ)器的內(nèi)容,包括數(shù)據(jù)緩沖器,工作隊(duì)列緩沖器,隊(duì)列,包括一個(gè)鏈表的隊(duì)列通信區(qū)和硬件通信區(qū),以及工作隊(duì)列緩沖器通過(guò)隊(duì)列的移動(dòng),隊(duì)列的元素包括了S/370微碼與EXEC370軟件互相通信所用的協(xié)議;圖42概念性示出工作隊(duì)列緩沖器以及EXEC370,ETIOS/370微碼與S/370-S/88耦合硬件之間的協(xié)議通過(guò)鏈表與隊(duì)列的移動(dòng)情況;圖43概念性地示出一條典型的S/370啟動(dòng)I/O指令的執(zhí)行;圖44A-L圖示當(dāng)S/370微碼與EXEC370為執(zhí)行各種S/370I/O指令互相通信時(shí)它們的控制/數(shù)據(jù)流;圖45A-AG圖示在BCU中進(jìn)行數(shù)據(jù)傳輸操作時(shí)在本地地址與數(shù)據(jù)總線上的數(shù)據(jù),命令及狀態(tài)信息;圖46A-K概念性地示出磁盤(pán)仿真進(jìn)程的一種較佳形式,借此S/88響應(yīng)S/370 I/O指令(經(jīng)由BCU,ETIO與EXEC370)存儲(chǔ)與取出S/88磁盤(pán)上S/370格式的信息;圖47概念性地示出圖10的存儲(chǔ)器映象連同S/88存儲(chǔ)器映象入口的視圖,其中某些入口為了供應(yīng)一個(gè)S/370存儲(chǔ)區(qū)域而已被去除;圖48A-K圖示S/88的虛擬/物理存儲(chǔ)器管理的一種較佳方式,該S/88能夠與在系統(tǒng)啟動(dòng)時(shí)新提供的子程序和重新配置子程序交互作用以在S/88物理存儲(chǔ)器中建立S/370存儲(chǔ)區(qū)域;圖49與50展示用于使成對(duì)的S/370-S/88處理器與伙伴單元同步的某些邏輯;圖51與52示出了本改進(jìn)的其它實(shí)施例。較佳實(shí)施例的說(shuō)明導(dǎo)言實(shí)現(xiàn)本發(fā)明的較佳實(shí)施例包括一個(gè)容錯(cuò)系統(tǒng)。容錯(cuò)系統(tǒng)一般是為容錯(cuò)操作自底向上設(shè)計(jì)的。處理器,存儲(chǔ)器,I/O裝置和操作系統(tǒng)都經(jīng)過(guò)特殊改裝以提供一個(gè)容錯(cuò)環(huán)境。然而,它們的客戶的廣泛性,它們的操作系統(tǒng)的成熟程度,可利用的用戶程序的數(shù)量及范圍都不如某些制造廠商的相當(dāng)老的主機(jī)系統(tǒng),例如國(guó)際商用機(jī)器公司所出售的系統(tǒng)/370(S/370)系統(tǒng)的那么大。
目前的容錯(cuò)數(shù)據(jù)處理系統(tǒng)提供許多較老的非容錯(cuò)主機(jī)系統(tǒng)一般不具備的或者主機(jī)操作系統(tǒng)所不支持的先進(jìn)特性。這些特性中包括跨越一個(gè)分布式計(jì)算網(wǎng)絡(luò)所表現(xiàn)的一個(gè)單一系統(tǒng)映象;熱插入處理器與I/O控制器(在電源接通時(shí)抽掉或插入插件板);即時(shí)的錯(cuò)誤檢測(cè)、故障膈離,以及不中斷計(jì)算機(jī)用戶而將出故障的部件從服務(wù)中電氣地去掉;由遠(yuǎn)程服務(wù)支持標(biāo)識(shí)的用戶可更換單元;以及在系統(tǒng)工作過(guò)程中由于部件故障或要在系統(tǒng)中增加新的設(shè)備而導(dǎo)致的動(dòng)態(tài)重新配置。這種容錯(cuò)系統(tǒng)的例子之一便是國(guó)際商用機(jī)器公司出售的System/88(S/88)系統(tǒng)。
在S/370環(huán)境與體系結(jié)構(gòu)中加進(jìn)上述特性的建設(shè)一般包括操作系統(tǒng)與用戶應(yīng)用程序的重大改寫(xiě)和/或臨時(shí)湊合研制的新的硬件。然而一個(gè)操作系統(tǒng)例如VM,VSE,IX370等的重大改寫(xiě)被許多人認(rèn)為是一件巨大的任務(wù),需要大量程序員和相當(dāng)長(zhǎng)的時(shí)間。一般要使一個(gè)復(fù)雜的操作系統(tǒng)例如IBM S/370VM或MVS成熟需要五年以上的時(shí)間。直到目前為止大多數(shù)崩潰是操作系統(tǒng)錯(cuò)誤所導(dǎo)致的。同時(shí),用戶需要化多年時(shí)間來(lái)熟練地使用一個(gè)操作系統(tǒng)。不幸的是,一個(gè)操作系統(tǒng)一旦成熟并擁有了一個(gè)大的用戶基地,修改其代碼以引入新的功能例如容錯(cuò),動(dòng)態(tài)重新配置,單一系統(tǒng)映象之類并不是一件簡(jiǎn)單的工件。
由于將一個(gè)成熟的操作系統(tǒng)移植到一臺(tái)新機(jī)器體系結(jié)構(gòu)上的復(fù)雜性和費(fèi)用,設(shè)計(jì)人員通常決定開(kāi)發(fā)一個(gè)新的操作系統(tǒng),而這一操作系統(tǒng)往往不是用戶集團(tuán)所能一下子便接受的。將一個(gè)成熟的操作系統(tǒng)進(jìn)行修改以包括新開(kāi)發(fā)的操作系統(tǒng)所體現(xiàn)的新特性可能已證明是不現(xiàn)實(shí)的;然而,新操作系統(tǒng)可能永遠(yuǎn)也發(fā)展不了一個(gè)相當(dāng)規(guī)模的用戶基地而且大多數(shù)問(wèn)題得到解決以前要經(jīng)過(guò)多年的現(xiàn)場(chǎng)使用。
因而,本改進(jìn)的意圖在于為一個(gè)一般非容錯(cuò)處理系統(tǒng)與操作系統(tǒng)提供一個(gè)容錯(cuò)環(huán)境而無(wú)需對(duì)該操作系統(tǒng)作重大的改寫(xiě)。在本較佳實(shí)施例中一臺(tái)IBM System/88型計(jì)算機(jī)被耦合到一臺(tái)IBM S/370型號(hào)的機(jī)器上。
耦合不同處理和操作系統(tǒng)的一種現(xiàn)代方法是在每一個(gè)系統(tǒng)上增加某種類型的通信控制器,在操作系統(tǒng)中附加設(shè)備驅(qū)動(dòng)程序,以及使用某種通信碼例如系統(tǒng)網(wǎng)絡(luò)體系結(jié)構(gòu)(SNA)或OSI(開(kāi)放系統(tǒng)互連)來(lái)傳送數(shù)據(jù)。一般情況下,在一個(gè)網(wǎng)絡(luò)的端節(jié)點(diǎn)計(jì)算機(jī)之間實(shí)現(xiàn)數(shù)據(jù)通信要求每一個(gè)端節(jié)點(diǎn)理解所要交換的數(shù)據(jù)并對(duì)其提供一組兼容的服務(wù)。
為了減少設(shè)計(jì)復(fù)雜性,大多數(shù)網(wǎng)絡(luò)是按層次結(jié)構(gòu)組織而成的,每一層建立在其前一層之上。層的數(shù)目,各層的名稱,以及各層的功能網(wǎng)絡(luò)與網(wǎng)絡(luò)之間各不相同。然而,在所有的網(wǎng)絡(luò)中,各層的目的都是為了給較高的層提供某些服務(wù),目的是使較高層不必去關(guān)心較低層的實(shí)現(xiàn)細(xì)節(jié)。一臺(tái)機(jī)器上的第n層與另一臺(tái)機(jī)器上的第n層進(jìn)行對(duì)話。在這種對(duì)話中所用的規(guī)則與約定總稱為第n層協(xié)議。在不同的機(jī)器上包含對(duì)應(yīng)層的實(shí)體稱作同等層進(jìn)程,所謂利用協(xié)議進(jìn)行通訊就是指這些同等層而言的。
實(shí)際上,一臺(tái)機(jī)器上的第n層并不向另一臺(tái)機(jī)器上的第n層直接傳送數(shù)據(jù)的(除了在最低層即物理層)。即,在不同系統(tǒng)上運(yùn)行應(yīng)用程序可以沒(méi)有直接的耦合。反之,各層將數(shù)據(jù)與控制信息傳送給緊靠著它的下一層,直到達(dá)到最低層。在這最低層上存在著與較高層所用的虛擬通信對(duì)應(yīng)的與其它機(jī)器的物理通信。
這些服務(wù)組合的定義已經(jīng)存在于若干不同的網(wǎng)絡(luò)中,如上文所述。而最近人們的興趣已經(jīng)集中在規(guī)定協(xié)議來(lái)方便不同廠商的系統(tǒng)之間的互連。開(kāi)發(fā)這些協(xié)議的一種結(jié)構(gòu)便是國(guó)際標(biāo)準(zhǔn)組織(ISO)七層OSI模型所定義的結(jié)構(gòu)。這一模型中的各層負(fù)責(zé)向它上面的一層提供網(wǎng)絡(luò)服務(wù)而要求在它下面的一層向它提供服務(wù)。各層所提供的服務(wù)是嚴(yán)格定義的,使它們能夠被網(wǎng)絡(luò)中的每一個(gè)站完全相同地執(zhí)行。這便是所說(shuō)的允許不同廠商的設(shè)備互連。在一個(gè)節(jié)點(diǎn)內(nèi)部的層與層之間的服務(wù)的實(shí)現(xiàn)是隨實(shí)現(xiàn)而異的并允許在一個(gè)站的內(nèi)部所提供的服務(wù)存在廠商之間的差異。
重要的是要注意實(shí)現(xiàn)這樣的一個(gè)結(jié)構(gòu)化協(xié)議集合的一個(gè)目的在于執(zhí)行端對(duì)端數(shù)據(jù)傳送。如果理解了用戶節(jié)點(diǎn)所關(guān)心的是將數(shù)據(jù)從源應(yīng)用程序發(fā)送到接收方應(yīng)用程序這一點(diǎn),OSI模型中的主要?jiǎng)澐直憧梢愿玫氐玫嚼斫饬恕榱税l(fā)送這些數(shù)據(jù),OSI協(xié)議在各層上對(duì)數(shù)據(jù)進(jìn)行作用以向網(wǎng)絡(luò)提供幀。幀是在數(shù)據(jù)與各OSI層上所加的對(duì)應(yīng)頭標(biāo)結(jié)合中建立起來(lái)的。然后將這些幀以比特的集合提供給物理介質(zhì)并通過(guò)該介質(zhì)傳輸。然后,它們經(jīng)歷了一組逆過(guò)程以后向接收站上的應(yīng)用程序提供數(shù)據(jù)。
如上文所述,耦合不同處理器與操作系統(tǒng)的一種現(xiàn)代方法是通過(guò)在各系統(tǒng)上加上某種通信控制器,在操作系統(tǒng)上附加設(shè)備驅(qū)動(dòng)程序,以及使用某種通信碼例如系統(tǒng)網(wǎng)絡(luò)體系結(jié)構(gòu)(SNA)或SSI以傳送數(shù)據(jù)。圖1示出了以一個(gè)本地網(wǎng)絡(luò)(LAN)連接的兩臺(tái)計(jì)算機(jī)系統(tǒng)的標(biāo)準(zhǔn)互連。具體地示出一臺(tái)IBM S/370體系結(jié)構(gòu)系統(tǒng)被連接到一臺(tái)IBM系統(tǒng)/88體系結(jié)構(gòu)。下面將要討論在每一臺(tái)體系結(jié)構(gòu)中,一個(gè)應(yīng)用程序的運(yùn)行通過(guò)與操作系統(tǒng)的一個(gè)接口來(lái)控制一個(gè)處理器及訪問(wèn)一條I/O通道或總線。每一體系結(jié)構(gòu)備有一個(gè)通信控制器以交換數(shù)據(jù)。為了進(jìn)行通信,必須使用一個(gè)多層協(xié)議來(lái)允許在對(duì)應(yīng)的應(yīng)用程序之間交換數(shù)據(jù)。
另一種交換數(shù)據(jù)的方法可以是一種協(xié)處理器的方法,該協(xié)處理器位于系統(tǒng)總線上,對(duì)系統(tǒng)總線進(jìn)行仲裁,并與宿主處理器使用相同的I/O。協(xié)處理方法的缺點(diǎn)是為了支持非本地產(chǎn)的(不相同的)宿主I/O所需改寫(xiě)的代碼數(shù)量。另一個(gè)缺點(diǎn)是為了從協(xié)處理器到宿主操作系統(tǒng)之間來(lái)回切換,用戶必須對(duì)兩種體系結(jié)構(gòu)都熟悉,這是一種不友好的用戶環(huán)境。
一種原有技術(shù)的容錯(cuò)計(jì)算機(jī)系統(tǒng)具有一個(gè)處理器模塊,其中包括一個(gè)處理單元,一個(gè)隨機(jī)訪問(wèn)存儲(chǔ)器單元,外部設(shè)備控制單元以及一條單一總線結(jié)構(gòu),該總線提供模塊中這些單元之間傳送的全部信息。各處理器模塊內(nèi)部的系統(tǒng)總線結(jié)構(gòu)包括雙份合伙總線,而一個(gè)處理器模塊的內(nèi)部的各功能單元也有一個(gè)雙份合伙單元??偩€結(jié)構(gòu)對(duì)一個(gè)模塊的單元提供操作能力和來(lái)自主時(shí)鐘的系統(tǒng)定時(shí)信號(hào)。
圖2以功能圖的方式示出了一個(gè)處理器模塊的處理單元的結(jié)構(gòu)。利用安裝在共用的備份插件板上的同步執(zhí)行相同操作的完全相同的一對(duì)處理器可以用比較的方法來(lái)檢測(cè)處理錯(cuò)誤。各插件板一般具有一個(gè)相同結(jié)構(gòu)的冗余臺(tái)伙單元。
計(jì)算機(jī)系統(tǒng)在整個(gè)處理器模塊內(nèi)部在各功能單元級(jí)上提供故障檢測(cè)。錯(cuò)誤檢測(cè)器監(jiān)視每一單元中的硬件操作并檢驗(yàn)單元之間的信息傳輸。在處理器模塊檢測(cè)到一個(gè)錯(cuò)誤時(shí)便將導(dǎo)致該錯(cuò)誤的單元隔離并禁止它向其它單元傳輸信息,而模塊則使用該故障單元的合伙者繼續(xù)操作。
在任何單元中檢測(cè)到一個(gè)故障時(shí),該單元便被隔離并被置于脫機(jī)狀態(tài)使之不能向其他單元傳送不正確的信息?,F(xiàn)在,脫機(jī)單元的合伙者繼續(xù)操作并借此使整個(gè)模塊能夠繼續(xù)操作。用戶很少知道這一故障檢測(cè)和向脫機(jī)狀態(tài)的轉(zhuǎn)移,除非以顯示或其它表示方法提出對(duì)脫機(jī)單元提供服務(wù)的一個(gè)維護(hù)請(qǐng)求。插件板的配置允許方便地抽出和更換。
存儲(chǔ)器單元也賦于檢驗(yàn)系統(tǒng)總線的任務(wù)。為了這一目的,該單元設(shè)有測(cè)試總線結(jié)構(gòu)上的地址信號(hào)和總線結(jié)構(gòu)上的數(shù)據(jù)信號(hào)的奇偶校驗(yàn)器。一旦確定兩條總線之一出現(xiàn)了故障,存儲(chǔ)器單元便向模塊中的其他單元發(fā)信號(hào)要它們只服從沒(méi)有故障的總線。處理器模塊的電源單元使用兩個(gè)電源,每一個(gè)電源只向每對(duì)合伙單元中的一個(gè)單元供應(yīng)操作電源。當(dāng)檢測(cè)到一個(gè)有故障的電源電壓時(shí),所有從受影響的單元到總線結(jié)構(gòu)的輸出線路都接到接地電位上以防止電源故障導(dǎo)致向總線結(jié)構(gòu)傳輸錯(cuò)誤信息。
圖3以功能圖的方式示出成對(duì)的S/370處理器與成對(duì)的S/88處理器,它們以容錯(cuò)結(jié)構(gòu)的方式互連,使之能直接交換數(shù)據(jù)。與原有的S/88結(jié)構(gòu)(圖2)的相似性是故意留下的,但是用硬件和軟件兩者進(jìn)行互連則是建立該實(shí)施例的操作的獨(dú)特方法。下文將要討論除了S/88型比較邏輯外,S/370處理器還與存儲(chǔ)器控制邏輯和總線接口邏輯相耦合。下文還要說(shuō)明,該比較邏輯與S/88處理器的比較邏輯以同樣方式操作。此外,S/370處理器是直接耦合的而與對(duì)應(yīng)的S/88處理器之間的耦合則是通過(guò)系統(tǒng)總線實(shí)現(xiàn)的的。與S/88處理器相同,S/370處理器是成對(duì)耦合的,而且這些處理器對(duì)被故意安裝在現(xiàn)場(chǎng)可更換的,可以熱插入的電路插件上。若干驅(qū)動(dòng)器的互連細(xì)節(jié)將在下文更詳細(xì)地說(shuō)明。
本較佳實(shí)施例互連多臺(tái)S/370處理器用于在一個(gè)S/370操作系統(tǒng)的控制下并發(fā)執(zhí)行相同的S/370指令。它們與對(duì)應(yīng)的多臺(tái)S/88處理器,I/O裝置以及主存儲(chǔ)器耦合,它們?nèi)吭谝粋€(gè)S/88操作系統(tǒng)的控制下并發(fā)執(zhí)行相同的S/88指令。如下文所述,本實(shí)施例加入了異步地將S/88處理器從它們的I/O裝置和存儲(chǔ)器拆離的機(jī)制,使得在S/88處理器被拆離期間將來(lái)自S/370處理器的I/O命令和數(shù)據(jù)傳遞給S/88處理器,并將命令和數(shù)據(jù)轉(zhuǎn)換成為S/88能夠使用的形式供S/88重新被耦合到它們的I/O裝置和主存貯器以后進(jìn)行處理。1。在一個(gè)容錯(cuò)環(huán)境中運(yùn)行一臺(tái)正常情況下并不容錯(cuò)的處理器上文所列的容錯(cuò)特性是在一個(gè)較佳實(shí)施例中實(shí)現(xiàn)的,該實(shí)施例將正常情況下非容錯(cuò)的處理器,例如S/370處理器耦合成第一對(duì),它在S/370操作系統(tǒng)之一的控制下同時(shí)執(zhí)行相同的S/370指令,并提供了比較一臺(tái)處理器中的各種信號(hào)的狀態(tài)與另一臺(tái)處理器中的各種信號(hào)的狀態(tài)的機(jī)構(gòu),以便即時(shí)地檢測(cè)一臺(tái)或兩臺(tái)處理器中的錯(cuò)誤。
帶有比較裝置的S/370處理器的第二合伙對(duì)被用于與第一對(duì)并發(fā)執(zhí)行相同的S/370指令及檢測(cè)第二對(duì)中的錯(cuò)誤。各S/370處理器耦合于一個(gè)容錯(cuò)系統(tǒng)的一臺(tái)對(duì)應(yīng)的S/88處理器,例如具有第一與合伙的第二對(duì)處理器,S/88 I/O裝置以及S/88主存儲(chǔ)器的S/88數(shù)據(jù)處理系統(tǒng)。每一臺(tái)S/88處理器都有與之相關(guān)聯(lián)的硬件將它耦合于I/O裝置與主存儲(chǔ)器。
對(duì)應(yīng)的S/370與S/88處理器通過(guò)包括一個(gè)總線控制單元的裝置將它們的處理器總線互相耦合。每一個(gè)總線控制單元包括這樣一個(gè)裝置,該裝置與在對(duì)應(yīng)的S/88處理器上運(yùn)行的一個(gè)應(yīng)用程序交互作用,以便異步地使這個(gè)S/88處理器脫離其關(guān)聯(lián)的硬件并將其與總線控制單元相耦合,其作用是(1)將S/370命令和數(shù)據(jù)從S/370處理器傳送到S/88處理器和(2)將S/370命令轉(zhuǎn)換成S/88能執(zhí)行的命令和將S/370數(shù)據(jù)轉(zhuǎn)換成S/88可使用的數(shù)據(jù)。
S/88數(shù)據(jù)處理系統(tǒng)在S/88操作系統(tǒng)的控制下相繼地處理該命令與數(shù)據(jù)。S/88數(shù)據(jù)處理系統(tǒng)也響應(yīng)S/370處理器對(duì)中的任何一個(gè)中產(chǎn)生的錯(cuò)誤信號(hào)或者與它們對(duì)應(yīng)地耦合的S/88處理器對(duì)中產(chǎn)生的錯(cuò)誤信號(hào),以便將這一耦合對(duì)從服務(wù)中去掉,并允許其他的S/370,S/88耦合對(duì)繼續(xù)進(jìn)行容錯(cuò)操作。以上述這樣一種安排, S/370處理器(在S/88系統(tǒng)協(xié)助進(jìn)行I/O的操作下)在一個(gè)容錯(cuò)(FT)環(huán)境中以S/88的優(yōu)越特性執(zhí)行S/370程序,一切都不需要對(duì)S/370和S/88操作系統(tǒng)作重大的改動(dòng)。
此外,S/88的存儲(chǔ)器管理單元在S/88操作系統(tǒng)不知道的情況下受到控制,將S/88主存儲(chǔ)器中的專用區(qū)域分配給雙工的S/370處理器對(duì)中的每一對(duì)及它們的操作系統(tǒng)。雙工的S/370處理器中的處理器獨(dú)立地通過(guò)一個(gè)存儲(chǔ)器管理裝置和S/88總線接口耦合于S/88的公用總線結(jié)構(gòu)以便從它們對(duì)應(yīng)的專用存儲(chǔ)器區(qū)域中取和存S/370指令與數(shù)據(jù)。
本較佳實(shí)施例提供了不改寫(xiě)S/370操作系統(tǒng)或S/370應(yīng)用程序而在S/370硬件中實(shí)現(xiàn)容錯(cuò)性的一種方法和裝置。不需要按例設(shè)計(jì)一個(gè)支持容錯(cuò)性的處理器而提供完整的S/3700PU硬件冗余與同步。一個(gè)S/370操作系統(tǒng)與一個(gè)容錯(cuò)操作系統(tǒng)(都是虛擬存儲(chǔ)器系統(tǒng))并發(fā)地運(yùn)行而無(wú)須對(duì)其中任何一個(gè)作重大改寫(xiě)。本較佳實(shí)施例中提供了對(duì)等處理器對(duì)之間的硬件/微碼接口,各處理器執(zhí)行一個(gè)不同的操作系統(tǒng)。一臺(tái)處理器是微碼控制的執(zhí)行一個(gè)IBM操作系統(tǒng)(例如,VM,VSE,IX370等)的IBM S/370機(jī)器。本實(shí)施例的第二臺(tái)處理器是執(zhí)行一個(gè)能夠控制一個(gè)硬件容錯(cuò)環(huán)境(例如,IBM系統(tǒng)/88)的一個(gè)操作系統(tǒng)的一臺(tái)硬件容錯(cuò)機(jī),執(zhí)行著S/88VOS(虛擬操作系統(tǒng))。
處理器對(duì)之間的硬件/微碼接口允許兩個(gè)操作系統(tǒng)并存于一個(gè)環(huán)境中而在用戶看來(lái)如同一個(gè)單一系統(tǒng)環(huán)境。當(dāng)每一個(gè)操作系統(tǒng)在處理各自的系統(tǒng)功能部分時(shí),硬件/微碼資源(存儲(chǔ)器,系統(tǒng)總線,磁盤(pán)I/O,磁帶,通信I/O終端,電源與外殼)各自獨(dú)立工作。FT處理器和操作系統(tǒng)主管錯(cuò)誤檢測(cè)/隔離與復(fù)原,動(dòng)態(tài)重新配置以及I/O操作。NFT處理器執(zhí)行本身的指令而對(duì)FT處理器毫不知情。在NFT處理器看來(lái)FT處理器好像是多個(gè)I/O通道。
硬件/微碼接口允許兩臺(tái)虛擬存儲(chǔ)器處理器共享一個(gè)公用的容錯(cuò)存儲(chǔ)器。FT處理器的存儲(chǔ)器分配表中的一塊連續(xù)的存儲(chǔ)器塊被分配給各NFT處理器。NFT處理器的動(dòng)態(tài)地址翻譯特性控制FT處理器分配給它的那一塊存儲(chǔ)器。通過(guò)使用一個(gè)位移寄存器在NFT處理器看來(lái)其存儲(chǔ)器從地址0開(kāi)始。為了將NFT處理器限制在其自己的存儲(chǔ)器界限內(nèi),進(jìn)行了界限檢驗(yàn)。FT處理器可以訪問(wèn)NFT存儲(chǔ)器和NFT地址空間內(nèi)外的DMA(直接存儲(chǔ)器訪問(wèn))I/O數(shù)據(jù)塊,而NFT處理器則被防止訪問(wèn)分配給它的地址空間以外的存儲(chǔ)器。改變配置表可以變更NFT存儲(chǔ)器的大小。2.將一臺(tái)處理器從其相關(guān)聯(lián)的硬件上解耦以便向其自身提供來(lái)自另一臺(tái)處理器的命令和數(shù)據(jù)。
在一臺(tái)現(xiàn)存的處理器和操作系統(tǒng)上增加一個(gè)新的設(shè)備一般需要通過(guò)一條總線或通道的硬件連接,以及為操作系統(tǒng)編寫(xiě)新的設(shè)備驅(qū)動(dòng)軟件。改進(jìn)的“解耦”特性允許兩臺(tái)不同的處理器互相通信而無(wú)須將處理器中的一臺(tái)連接到一條總線,通道也無(wú)須為總線控制進(jìn)行仲裁。處理器不需要重大的操作系統(tǒng)修改或者傳統(tǒng)的設(shè)備驅(qū)動(dòng)程序便可進(jìn)行通信。在兩臺(tái)不同的和不相似的處理器合并時(shí)給用戶以一個(gè)單一系統(tǒng)的映象,即使每臺(tái)處理器是在執(zhí)行各自本身的操作系統(tǒng)也是這樣。
這一特性提供了一種方法和裝置,以一個(gè)成熟的操作系統(tǒng)的用戶角度和可靠性將一個(gè)新近開(kāi)發(fā)的操作系統(tǒng)所表現(xiàn)的特殊特性結(jié)合進(jìn)去。它將所述的兩個(gè)系統(tǒng)(硬件與軟件)耦合在一起而構(gòu)成一個(gè)新的第三系統(tǒng)。對(duì)于熟悉本技術(shù)的人員應(yīng)能理解,雖然在本較佳實(shí)施例中所示的是將一臺(tái)S/370系統(tǒng)耦合到一臺(tái)S/88系統(tǒng),然而任何兩臺(tái)不同的系統(tǒng)都是可以耦臺(tái)的。這一概念的設(shè)計(jì)標(biāo)準(zhǔn)是對(duì)該成熟的操作系統(tǒng)作小的改變或者不作改變以使它保持其可靠性,為減少代碼開(kāi)發(fā)時(shí)間而盡可能不去碰新近開(kāi)發(fā)的操作系統(tǒng)。
這一特性包括一種方法,將兩臺(tái)不一樣的系統(tǒng)各自帶著自身的特征合并進(jìn)一個(gè)兼?zhèn)鋬烧叩奶卣鞯囊粋€(gè)第三系統(tǒng)。這一方法的一個(gè)較佳方式在系統(tǒng)之間需要耦合邏輯,該邏輯的主要作用是作為一個(gè)直接存儲(chǔ)器訪問(wèn)控制器(DMAC)。這一特性的主要目的是向在一臺(tái)容錯(cuò)處理器(例如本較佳實(shí)施例中的S/88)中并在分層的容錯(cuò)操作系統(tǒng)上運(yùn)行的一個(gè)應(yīng)用程序提供從一臺(tái)不同的處理器(例如本較佳實(shí)施例中的S/370)及其操作系統(tǒng)中取得數(shù)據(jù)和命令的方法。在任何一臺(tái)處理器上都存在著硬件和軟件兩種防護(hù)機(jī)制以防止入侵(即管理態(tài)與用戶態(tài),存儲(chǔ)器映象檢驗(yàn)等)。通常,操作系統(tǒng)力圖控制所有的系統(tǒng)資源,例如中斷,DMA通道,以及I/O設(shè)備與控制器。所以多數(shù)人認(rèn)為要將兩種不同的體系結(jié)構(gòu)耦合并且在這些機(jī)器之間傳送命令和數(shù)據(jù)而又不曾從根本上設(shè)計(jì)這種功能是一項(xiàng)歷史性的任務(wù)和/或不能實(shí)現(xiàn)的。
圖4圖示了在本較佳實(shí)施例的環(huán)境中將一臺(tái)S/370處理器耦合到一臺(tái)S/88處理器上。與圖1中所示的S/370處理器相比,存儲(chǔ)器已被S/88總線接口邏輯所取代,而S/370通道處理器已被一個(gè)總線適配器和總線控制單元所取代。需要引起特別注意的是用雙虛線表示的S/370總線控制單元與S/88處理器之間的互連。
這一特性包括將處理器耦合邏輯連接到S/88容錯(cuò)處理器的虛擬地址總線,數(shù)據(jù)總線,控制總線結(jié)構(gòu),而不像大多數(shù)設(shè)備那樣連接到系統(tǒng)總線或通道上。選通線表示在地址信號(hào)被觸發(fā)后經(jīng)過(guò)幾個(gè)毫微秒在容錯(cuò)處理器的虛擬地址總線上的一個(gè)合法地址便被激活。包括總線適配器與總線控制單元的耦合邏輯確定是否在選通信號(hào)出現(xiàn)之前,一個(gè)S/88應(yīng)用程序已經(jīng)提出了一個(gè)予先選定的地址范圍。如果檢測(cè)到了這一地址范圍,地址選通信號(hào)被封鎖不使它去往S/88容錯(cuò)處理器硬件。這一消失的信號(hào)將防止容錯(cuò)硬件與操作系統(tǒng)知道一個(gè)機(jī)器周期的存在。硬件中的容錯(cuò)檢驗(yàn)邏輯在這一周期中被隔離并將完全失去在這一時(shí)間中發(fā)生的任何動(dòng)作。在處理器總線上的所有高速緩沖存儲(chǔ)器,虛擬地址映象邏輯與浮點(diǎn)處理器不能知道已經(jīng)出現(xiàn)了一個(gè)機(jī)器周期。即,所有S/88CPU功能都被“凍結(jié)”,等待S/88處理器對(duì)地址選通信號(hào)的確定。
由于容錯(cuò)處理器邏輯封鎖的地址選通信號(hào)被送往耦合邏輯。這便給于了S/88容錯(cuò)處理器對(duì)耦合邏輯的完全控制,該耦合邏輯是在容錯(cuò)專用的應(yīng)用程序與連接的S/370處理器之間的接口。地址選通信號(hào)與虛擬地址是用于選擇本地存儲(chǔ)器、寄存器以及DMAC的,這些都是耦合邏輯的部件。圖5圖示了來(lái)自S/370總線控制邏輯的一個(gè)中斷的檢測(cè)結(jié)果,它被確定是在適當(dāng)?shù)募?jí)上并對(duì)應(yīng)于一個(gè)適當(dāng)?shù)牡刂罚?,在它的最廣方面上,解耦機(jī)制將一臺(tái)處理器從其關(guān)聯(lián)的硬件上解除連接并將該處理器連接到一個(gè)外來(lái)實(shí)體上與該實(shí)體進(jìn)行高效的數(shù)據(jù)傳輸。
耦合邏輯具有一個(gè)本地存儲(chǔ)器用于對(duì)進(jìn)來(lái)的S/370命令進(jìn)行排隊(duì)和存儲(chǔ)來(lái)往于S/370的數(shù)據(jù)。數(shù)據(jù)和命令是用耦合邏輯中的多個(gè)DMA通道送入本地存儲(chǔ)器的。容錯(cuò)應(yīng)用程序初始化DMAC并服務(wù)于來(lái)自DMAC的中斷,該DMAC用于在一個(gè)命令到達(dá)時(shí)或者在接收或送出一塊數(shù)據(jù)時(shí)通知該應(yīng)用程序。為了完成一個(gè)操作,耦合邏輯必須在處理器的計(jì)時(shí)邊之前返回?cái)?shù)據(jù)選通應(yīng)答線以保證容錯(cuò)處理器的雙方都保持在同步中。
應(yīng)用程序接收S/370通道型命令諸如啟動(dòng)I/O,測(cè)試I/0,等。然后,應(yīng)用程序?qū)⒚恳粭lS/370 I/O命令轉(zhuǎn)換成一條容錯(cuò)I/O命令并起動(dòng)一個(gè)正常的容錯(cuò)I/O的命令序列。
這被認(rèn)為是一種從一個(gè)操作系統(tǒng)得到一塊數(shù)據(jù)和將其送至一個(gè)應(yīng)用程序的新方法。這也是一種允許一個(gè)應(yīng)用程序去處理一個(gè)中斷的方法,而這種處理一般是操作系統(tǒng)所完成的功能。應(yīng)用程序能夠隨意將該容錯(cuò)處理器從它的正常處理器功能切換成I/O控制器功能,而這是在一個(gè)周期的基礎(chǔ)上通過(guò)它所選擇的虛擬地址完成的。
這樣,兩個(gè)具有不同指令與存儲(chǔ)器尋址體系結(jié)構(gòu)的數(shù)據(jù)處理系統(tǒng)便被緊密地耦合在一起使得一個(gè)系統(tǒng)可以高效地訪問(wèn)另一個(gè)系統(tǒng)的虛擬存儲(chǔ)空間的任何部分而另一系統(tǒng)并不知道前一個(gè)系統(tǒng)的存在。另一個(gè)系統(tǒng)中的專用應(yīng)用程序通過(guò)硬件將專用的地址放在總線上與前一個(gè)系統(tǒng)進(jìn)行通信。硬件確定該地址是否是一個(gè)專用地址。如果是專用地址,將選通封鎖,不讓另一系統(tǒng)的電路檢測(cè)到,并重新定向這一選通,使得另一系統(tǒng)的CPU能夠控制專用硬件和一個(gè)兩個(gè)系統(tǒng)都能訪問(wèn)的存儲(chǔ)器空間。
另一個(gè)系統(tǒng)在必要時(shí)能夠完全控制前一系統(tǒng),例如為了初始化與配置任務(wù)。而前一系統(tǒng)則無(wú)論如何不能控制另一個(gè)系統(tǒng),但是能夠以下述方式向另一系統(tǒng)提出服務(wù)請(qǐng)求前一個(gè)系統(tǒng)將I/O命令與/或數(shù)據(jù)以前一個(gè)系統(tǒng)的格式放在公共訪問(wèn)存儲(chǔ)器空間中并使用專用硬件向另一個(gè)系統(tǒng)提出一個(gè)專用級(jí)別中斷以調(diào)用該專用應(yīng)用程序進(jìn)入工作。
后者(即另一個(gè)系統(tǒng))被導(dǎo)向包含該出臺(tái)信息的存儲(chǔ)器空間并對(duì)出臺(tái)信息進(jìn)行處理將其格式轉(zhuǎn)換成另一系統(tǒng)熟悉的形式。然后,該應(yīng)用程序引導(dǎo)另一系統(tǒng)的自身操作系統(tǒng)在經(jīng)過(guò)轉(zhuǎn)換的命令和數(shù)據(jù)上執(zhí)行自己熟悉的I/O操作。從而,上述一切對(duì)于兩個(gè)系統(tǒng)的自身操作系統(tǒng)都是完全透明地發(fā)生的而且不需要對(duì)它們(兩個(gè)系統(tǒng)的操作系統(tǒng))作重大的改動(dòng)。3.對(duì)操作系統(tǒng)透明地向一個(gè)系統(tǒng)提出中斷大多數(shù)當(dāng)前的程序在兩種(或更多)狀態(tài)之一中執(zhí)行,一種管理態(tài),另一種是用戶態(tài)。應(yīng)用程序在用戶態(tài)中運(yùn)行,而諸如中斷這樣的功能則運(yùn)行在管理態(tài)。
一個(gè)應(yīng)用程序連接一個(gè)I/O端口然后打開(kāi)該端口,以讀,寫(xiě)或控制的形式發(fā)布一個(gè)I/O請(qǐng)求。這時(shí)處理器將產(chǎn)生一個(gè)任務(wù)切換。當(dāng)操作系統(tǒng)接收到一個(gè)表示一個(gè)I/O完成的中斷時(shí),該操作系統(tǒng)便將這一信息放入一個(gè)就緒隊(duì)到并按系統(tǒng)資源的優(yōu)先級(jí)進(jìn)行排序。
操作系統(tǒng)保存所有的中斷向量供它自己使用;沒(méi)有一個(gè)是能被新特性所利用的,例如來(lái)自另一臺(tái)機(jī)器的表示一個(gè)I/O請(qǐng)求的一個(gè)外部中斷。
在較佳實(shí)施例的S/88中,多數(shù)可利用的中斷向量實(shí)際上并未使用,而將這些向量設(shè)置成導(dǎo)致引導(dǎo)到一個(gè)“未初始化的”或“虛假的”中斷的共同的錯(cuò)誤處理程序。帶有這一改進(jìn)的較佳實(shí)施例用指向關(guān)于S/370耦合邏輯中斷的專用中斷處理程序的適當(dāng)向量來(lái)替代這些本來(lái)不用的向量的一個(gè)子集。然后將經(jīng)過(guò)修改的S/88操作系統(tǒng)在新結(jié)合的向量在位的情況下重新連接起來(lái)使用。
本較佳實(shí)施例的系統(tǒng)/88有8個(gè)中斷級(jí),除了級(jí)4以外各級(jí)都使用自動(dòng)向量(autovector)。本申請(qǐng)的改進(jìn)使用這些自動(dòng)向量級(jí)中的一個(gè)級(jí),級(jí)6,它具有僅次于最優(yōu)先級(jí)的級(jí)。這一級(jí)6一般是系統(tǒng)/88用于A/C電源故障中斷的。
將系統(tǒng)/370耦合到系統(tǒng)/88的邏輯以它的中斷請(qǐng)求和A/0電源故障的中斷進(jìn)行“或”運(yùn)算來(lái)向級(jí)6提出中斷。在系統(tǒng)初始化時(shí),指向用于耦合邏輯中斷的專用中斷處理程序的適當(dāng)向量編號(hào)由一個(gè)對(duì)S/88操作系統(tǒng)透明的應(yīng)用程序裝入該耦合邏輯中(某些被裝入DMAC寄存器中)。
當(dāng)系統(tǒng)/88接收到任何中斷時(shí),它只使用硬件和S/88處理器的內(nèi)部操作啟動(dòng)一個(gè)中斷應(yīng)答(IACK)周期以處理該中斷并取出第一條中斷處理程序指令。不需要程序指令執(zhí)行。然而,向量編號(hào)也必須是以透明的方式獲得與提供的。這在本較佳實(shí)施例中是當(dāng)耦合邏輯提出一個(gè)級(jí)6中斷時(shí)通過(guò)將S/88處理器從其關(guān)聯(lián)的硬件(包括A/C電源故障的中斷提出機(jī)構(gòu))上脫鉤并將該S/88處理器耦合到S/370-S/88耦合邏輯來(lái)實(shí)現(xiàn)的。
更具體地,S/88處理器在其輸出上設(shè)置功能碼與中斷級(jí)并且在IACK周期的開(kāi)始要求地址選通(AS)與數(shù)據(jù)選通(DS)。如果耦合邏輯的中斷提出信號(hào)是活躍的,則從S/88硬件,包括A/C電源故障中斷機(jī)構(gòu),上將地址選通封鎖;而將AS送往耦合邏輯以讀出相應(yīng)的向量編號(hào),通過(guò)數(shù)據(jù)選通將這一向量編號(hào)選通進(jìn)S/88處理器。由于數(shù)據(jù)選通在S/88硬件上被封鎖,對(duì)應(yīng)于獲得耦合邏輯中斷向量編號(hào)的機(jī)器周期(IACK)對(duì)于S/88操作系統(tǒng)來(lái)說(shuō)是透明的。
如果在IACK周期開(kāi)始時(shí),耦合邏輯中斷信號(hào)并未活躍,則執(zhí)行一個(gè)正常的S/88級(jí)6中斷。4.在兩個(gè)或更多執(zhí)行不同的虛擬存儲(chǔ)器操作系統(tǒng)的處理器之間共用一個(gè)實(shí)存儲(chǔ)器。
這一特性將一個(gè)容錯(cuò)系統(tǒng)耦合到一臺(tái)不同的處理器和操作系統(tǒng),該操作系統(tǒng)沒(méi)有支持一個(gè)容錯(cuò)存儲(chǔ)器的代碼(程序),即,沒(méi)有支持通過(guò)熱插接拆除或插入存儲(chǔ)器板,即時(shí)檢測(cè)錯(cuò)誤數(shù)據(jù)以及適當(dāng)時(shí)進(jìn)行修復(fù)等的代碼。
這一特性提供了一種方法和裝置,借此兩個(gè)或更多各自執(zhí)行不同的虛擬存儲(chǔ)器操作系統(tǒng)的處理器可以以對(duì)兩個(gè)操作系統(tǒng)都是透明的方式共享一個(gè)單一的實(shí)存儲(chǔ)器,以及其中一個(gè)處理器能夠訪問(wèn)另一個(gè)處理器的存儲(chǔ)器空間,從而使這些多個(gè)處理器之間能夠?qū)崿F(xiàn)數(shù)據(jù)傳輸。
這一特性將兩個(gè)用戶熟悉的操作系統(tǒng)結(jié)合在一起而給用戶一個(gè)單一操作系統(tǒng)的外觀。每一個(gè)操作系統(tǒng)是一個(gè)虛擬存儲(chǔ)器操作系統(tǒng)在正常情況下控制各自的全部實(shí)存儲(chǔ)器空間。這一發(fā)明只有兩臺(tái)處理器通過(guò)一條公共系統(tǒng)總線共用的一個(gè)實(shí)存儲(chǔ)器空間。既不要實(shí)質(zhì)性地改寫(xiě)操作系統(tǒng),任何一個(gè)操作系統(tǒng)也不知道另一個(gè)操作系統(tǒng)的存在或者實(shí)存儲(chǔ)器是共享的。這一特性使用運(yùn)行在一臺(tái)第一處理器上的一個(gè)應(yīng)用程序來(lái)從頭至尾查找該第一操作系統(tǒng)的存儲(chǔ)器分配隊(duì)列。當(dāng)查找到能夠滿足第二操作系統(tǒng)的需求的足夠大的一個(gè)連續(xù)的存儲(chǔ)器空間時(shí),便通過(guò)操作指針將這一存儲(chǔ)器空間從第一操作系統(tǒng)的存儲(chǔ)器分配表中去掉。第一操作系統(tǒng)不能再使用(例如,重新分配的能力)這一被去掉的存儲(chǔ)器除非應(yīng)用程序?qū)⒃摯鎯?chǔ)器返回給第一操作系統(tǒng)。
第二操作系統(tǒng)從I/O觀點(diǎn)上使用第一操作系統(tǒng),而第一操作系統(tǒng)則作為一個(gè)I/O控制器響應(yīng)第二操作系統(tǒng)。第一操作系統(tǒng)是所有系統(tǒng)資源的主人,并且在本較佳實(shí)施例中是一個(gè)硬件容錯(cuò)操作系統(tǒng)。第一操作系統(tǒng)初始分配與回收存儲(chǔ)器(除了為第二操作系統(tǒng)“偷去”的存儲(chǔ)器外),并處理所有相關(guān)聯(lián)的硬件的故障與修復(fù)。其目的在于不需對(duì)操作系統(tǒng)代碼作很大的改動(dòng)而將兩個(gè)操作系統(tǒng)結(jié)合在一起。每一個(gè)操作系統(tǒng)必須相信是它在控制所有的系統(tǒng)存儲(chǔ)器,因?yàn)樵摯鎯?chǔ)器是兩臺(tái)處理器所使用的一個(gè)單一的資源。
在系統(tǒng)起動(dòng)時(shí),第一操作系統(tǒng)及其處理器承擔(dān)系統(tǒng)的控制,并且硬件將第二處理器保持在復(fù)位狀態(tài)。第一操作系統(tǒng)引導(dǎo)該系統(tǒng)并確定存在多大的實(shí)存儲(chǔ)器。操作系統(tǒng)最終把整個(gè)存儲(chǔ)器組織成4KB(4096字節(jié))的塊并將每一可利用的塊列在一個(gè)存儲(chǔ)器分配隊(duì)列中。列出在隊(duì)列中的每一個(gè)4KB塊指向下一個(gè)可利用的4KB塊。第一系統(tǒng)所使用的任何存儲(chǔ)器或者被從隊(duì)列的頂部以4KB的塊為單位去掉或者以4KB的塊為單位加在隊(duì)列的頂部;同時(shí)將塊指針作適當(dāng)?shù)恼{(diào)整。當(dāng)用戶向操作系統(tǒng)請(qǐng)求存儲(chǔ)器空間時(shí),從該隊(duì)列中分配必要數(shù)量的4KB塊實(shí)存儲(chǔ)器來(lái)滿足這些請(qǐng)求。當(dāng)存儲(chǔ)器不再需要時(shí),這些塊便返回到隊(duì)列中。
接著,第一操作系統(tǒng)執(zhí)行一系列稱作模塊啟動(dòng)的功能對(duì)系統(tǒng)進(jìn)行配置。模塊啟動(dòng)所執(zhí)行的一個(gè)應(yīng)用程序是一個(gè)用于從第一操作系統(tǒng)奪取存儲(chǔ)器并將其分配給第二操作系統(tǒng)的一個(gè)新的應(yīng)用程序。這一程序掃描整個(gè)存儲(chǔ)器分配表并找出一個(gè)4KB塊存儲(chǔ)器的連接串。然后,該應(yīng)用程序改變對(duì)應(yīng)于該連接塊串的隊(duì)列部分的指針,借此將一個(gè)存儲(chǔ)器的連接塊從第一操作系統(tǒng)的存儲(chǔ)器表中去掉。在本較佳實(shí)施例中,被去掉的第一個(gè)4KB塊前面的一個(gè)4KB塊的指針被改變?yōu)橹赶蚓o隨在被去掉的連接塊串后面的那一個(gè)4KB塊。
這時(shí),第一操作系統(tǒng)失去了對(duì)這一實(shí)存儲(chǔ)器空間的控制或不知道這一實(shí)存空間的存在,除非該系統(tǒng)被重新引導(dǎo)或者應(yīng)用程序返回該存儲(chǔ)器指針。這好像是第一操作系統(tǒng)認(rèn)為一段實(shí)存儲(chǔ)器分配給在它自己上面運(yùn)行的一個(gè)進(jìn)程而且由于這些塊不只是分配給一個(gè)用戶而是被從表中去掉了,所以不能再行分配了。
然后,被去掉的地址空間被交給第二操作系統(tǒng)。存在著硬件位移邏輯使得從第一操作系統(tǒng)偷來(lái)而交給第二操作系統(tǒng)的地址塊在第二操作系統(tǒng)看來(lái)是從地址零開(kāi)始的。然后,第二操作系統(tǒng)控制從第一操作系統(tǒng)偷來(lái)的存儲(chǔ)器,似乎這是它自己的實(shí)存儲(chǔ)器一樣,并通過(guò)它自己的虛擬存儲(chǔ)器管理程序控制該存儲(chǔ)器,即,它將第二系統(tǒng)發(fā)布的虛擬地址翻譯成在分配給它的實(shí)存儲(chǔ)器地址空間范圍內(nèi)的實(shí)地址。
在第一操作系統(tǒng)上運(yùn)行的一個(gè)應(yīng)用程序能將I/O數(shù)據(jù)移入或移出第二處理器的存儲(chǔ)器空間,然而,第二處理器卻不能在分配給它的空間以外讀或?qū)懀驗(yàn)榈诙僮飨到y(tǒng)并不知道其它的存儲(chǔ)器。如果在第二操作系統(tǒng)中出現(xiàn)了一個(gè)操作系統(tǒng)故障,一個(gè)硬件陷井將防止第二操作系統(tǒng)無(wú)意中寫(xiě)入第一操作系統(tǒng)空間。
分配給第二操作系統(tǒng)的存儲(chǔ)器空間大小由用戶在模塊啟動(dòng)程序中的一張表中給出。如果用戶要求第二處理器具有16兆字節(jié)則他將其規(guī)定在模塊啟動(dòng)表中,而應(yīng)用程序則將從第一操作系統(tǒng)得到這樣多的空間。一個(gè)專用SVC(服務(wù)調(diào)用)允許應(yīng)用程序能夠訪問(wèn)第一操作系統(tǒng)的管理程序區(qū)以改變這些指針。
為什么希望兩個(gè)操作系統(tǒng)共享同一個(gè)存儲(chǔ)器的一個(gè)重要理由是該存儲(chǔ)器在第一處理器上是容錯(cuò)的,并且允許第二處理器使用來(lái)自第一處理器的容錯(cuò)存儲(chǔ)器及I/O。第二處理器是以復(fù)制某些硬件和比較某些地址,數(shù)據(jù)及控制線來(lái)成為容錯(cuò)的。使用這些技術(shù),雖然第二操作系統(tǒng)并不具備容錯(cuò)能力。然而第二處理器事實(shí)上是一臺(tái)容錯(cuò)機(jī)器。一臺(tái)以上第二類的外來(lái)處理器與操作系統(tǒng)可以耦合到第一操作系統(tǒng)上每一臺(tái)外來(lái)處理器都提供有一個(gè)獨(dú)立的實(shí)存儲(chǔ)器區(qū)域。
在本較佳實(shí)施例中,第一操作系統(tǒng)是容錯(cuò)的S/88的操作系統(tǒng)而第二操作系統(tǒng)則是S/370的操作系統(tǒng)中的一個(gè),而第一與第二處理器分別為S/88與S/370處理器。這一特性不但使一臺(tái)在正常情況下非容錯(cuò)的系統(tǒng)能夠使用由一臺(tái)容錯(cuò)系統(tǒng)維護(hù)的一個(gè)容錯(cuò)存儲(chǔ)器并且使得該非容錯(cuò)系統(tǒng)能夠(1)共享對(duì)容錯(cuò)系統(tǒng)所維護(hù)的容錯(cuò)I/O裝置的訪問(wèn)以及(2)在沒(méi)有通道對(duì)通道耦合而造成的明顯的延遲下以更高效的方式實(shí)現(xiàn)系統(tǒng)之間的數(shù)據(jù)交換。5.單一系統(tǒng)映象單一系統(tǒng)映象這一名詞是用來(lái)定義計(jì)算機(jī)網(wǎng)絡(luò)的特征的,在這一網(wǎng)絡(luò)中,用戶對(duì)遠(yuǎn)程數(shù)據(jù)與資源(例如,打印機(jī),硬磁盤(pán)等)的訪問(wèn)對(duì)用戶來(lái)說(shuō)如同對(duì)接有用戶鍵盤(pán)的本地終端的數(shù)據(jù)與資源進(jìn)行訪問(wèn)一樣,從而,用戶可以簡(jiǎn)單地使用名字來(lái)訪問(wèn)一個(gè)數(shù)據(jù)文件或資源而無(wú)須知道目標(biāo)在網(wǎng)絡(luò)中的位置。
“衍生的單一系統(tǒng)映象”這一概念在這里作為一個(gè)新名詞引入,意在應(yīng)用在網(wǎng)絡(luò)中的這樣的計(jì)算機(jī)單元,它們?nèi)狈χ苯舆B接到一個(gè)具有單一系統(tǒng)映象的網(wǎng)絡(luò)的設(shè)施,但利用該網(wǎng)絡(luò)的硬件和軟件資源以一種等效的單一系統(tǒng)映象直接連接到該網(wǎng)絡(luò)上。
為了這一討論的目的,為了研討“衍生的單一系統(tǒng)映象”的效果,一臺(tái)計(jì)算機(jī)系統(tǒng)的直接連接可從用該系統(tǒng)與網(wǎng)絡(luò)部件之間不同程序的耦合來(lái)實(shí)現(xiàn)。名詞“松散耦合”在這里表示通過(guò)衍生計(jì)算機(jī)與“當(dāng)?shù)氐摹庇?jì)算機(jī)(它是網(wǎng)絡(luò)的一部分)的I/O通道所實(shí)現(xiàn)的一種耦合。“緊密耦合”這個(gè)名詞現(xiàn)在用于表示衍生計(jì)算機(jī)與本地計(jì)算機(jī)之間的一種關(guān)系,這種關(guān)系是建立在通過(guò)專用硬件允許每臺(tái)計(jì)算機(jī)在直接基礎(chǔ)上與其它計(jì)算機(jī)進(jìn)行通信(即,不使用它們現(xiàn)成的I/O通道)。
現(xiàn)在設(shè)想一種稱為“透明緊密耦合”的特殊緊密耦合,包括采用耦合硬件使各計(jì)算機(jī)(衍生與本地的計(jì)算機(jī))能夠利用另一臺(tái)計(jì)算機(jī)的資源,而各計(jì)算機(jī)的操作系統(tǒng)并不知道這種利用。透明緊密耦合,如剛才定義的,構(gòu)成達(dá)到在耦合網(wǎng)絡(luò)中的成本與性能優(yōu)點(diǎn)的一個(gè)基礎(chǔ)。雖然耦合硬件設(shè)計(jì)復(fù)雜,但是相比對(duì)操作系統(tǒng)進(jìn)行廣泛修改所必需花費(fèi)的錢(qián)而言是微不足道的。性能優(yōu)點(diǎn)來(lái)自由于直接耦合得到的快速連接和在耦合接口上減小了帶寬干擾。
在本節(jié)中所用的“網(wǎng)絡(luò)”一詞比起當(dāng)前流行的把網(wǎng)絡(luò)看成是一個(gè)較大的國(guó)際性遠(yuǎn)程處理/衛(wèi)星連接模式且在它上而可以連接各種不同類型的機(jī)器只要它們適應(yīng)某些特定協(xié)議這樣一種概念來(lái)要狹義一些。而“網(wǎng)絡(luò)”在本節(jié)中是用在系統(tǒng)/88處理器的一個(gè)連接復(fù)合體或者用在其它處理器的具有單一系統(tǒng)映象特征的連接的復(fù)合體上。
將使用若干嚴(yán)格地定義的名詞來(lái)進(jìn)一步說(shuō)明一個(gè)單一系統(tǒng)映象的概念;并且將用本改進(jìn)的特定的較佳實(shí)施例作為澄清這些概念的基礎(chǔ)a.高速數(shù)據(jù)互連(HSDI)指的是一個(gè)硬件子系統(tǒng)(與電纜),用在獨(dú)立的硬件單元之間的數(shù)據(jù)傳輸。b.鏈路指的是一個(gè)軟件結(jié)構(gòu)或客體,它在整體上由指向某些其它軟件客體的一個(gè)多字段拼成的指針?biāo)M成,并且它具有一個(gè)別名的許多特征。c.模塊指的提一個(gè)獨(dú)立處理單元至少包括下列的每一種部件殼體,電源,CPU,存儲(chǔ)器以及I/O設(shè)備。一個(gè)模塊將多個(gè)殼體用螺栓連接在一起以容納附加的外部設(shè)備以便擴(kuò)充建立成為一個(gè)更大的單一模塊。某些I/O單元(終端,打印機(jī))可以是外部的并用電纜與殼體相連;它們被認(rèn)為是該單一模塊的部件。一個(gè)模塊可以只有一個(gè)CPU復(fù)合體。d.CPU復(fù)合體指的是在同一殼體中的一個(gè)或多個(gè)單或雙處理器板,它們?cè)诓僮飨到y(tǒng)軟件的管理與控制下作為一個(gè)單一CPU來(lái)操作。不管實(shí)際上安裝了多少處理器板,任何用戶程序或應(yīng)用程序是這樣編寫(xiě)和執(zhí)行的,即只當(dāng)存在一個(gè)CPU。處理的工作負(fù)荷是在可利用的CPU板之間大體上分擔(dān)的,而且可以并發(fā)地執(zhí)行多個(gè)任務(wù),但對(duì)每一應(yīng)用程序所呈現(xiàn)的是一個(gè)“單CPU映象”。e.客體指的是存儲(chǔ)在系統(tǒng)中可以用一個(gè)層次名字唯一地標(biāo)識(shí)的一組數(shù)據(jù)(包括可執(zhí)行的程序)。一條鏈路是一個(gè)唯一地命名的指向某一其它客體的指針,所以也認(rèn)為是客體本身。一個(gè)I/O端口是指向一個(gè)特定I/O設(shè)備(一個(gè)數(shù)據(jù)源或目的地的一個(gè)唯一地命名的軟件結(jié)構(gòu),所以也是一個(gè)客體。操作系統(tǒng)有效地防止客體名字的相重。
因?yàn)椤皢我幌到y(tǒng)映象”這一名詞在文獻(xiàn)中的使用不統(tǒng)一,本改進(jìn)為了澄清“衍生的單一系統(tǒng)映象”,將對(duì)此作較詳細(xì)的說(shuō)明。在定義與說(shuō)明名詞”單一系統(tǒng)映象”時(shí),“映象”一詞指的是系統(tǒng)與環(huán)境的應(yīng)用程序視圖。在這一上下文中,“系統(tǒng)”指的是應(yīng)用程序員向其發(fā)布指令的硬件(CPU復(fù)合體)和軟件(操作系統(tǒng)及其實(shí)用程序)的組合?!碍h(huán)境”指的是所有能被操作系統(tǒng)尋址的從而能被程序員通過(guò)向操作系統(tǒng)提出服務(wù)請(qǐng)求間接地訪問(wèn)的I/O設(shè)備及其它相連的設(shè)施。
這樣一臺(tái)真正的單一獨(dú)立計(jì)算機(jī)及其操作系統(tǒng)必然對(duì)程序員提供一個(gè)單一系統(tǒng)映象。只有當(dāng)我們要把多臺(tái)系統(tǒng)連接在一起使它們共享I/O設(shè)備及分布處理時(shí),用戶所見(jiàn)的這一“映象”才開(kāi)始改變;兩臺(tái)機(jī)器通過(guò)遠(yuǎn)程處理線(或者甚至是電纜)用平常的互連辦法迫使程序員不得不去了解和學(xué)習(xí)如何操作該雙機(jī)環(huán)境,才能從擴(kuò)充的設(shè)施中得到好處。
一般,為了訪問(wèn)其它環(huán)境中的設(shè)施,程序員必須請(qǐng)求他的本地操作系統(tǒng)將他的要求通知該“其它”操作系統(tǒng),并詳細(xì)說(shuō)明這些要求。然后,經(jīng)過(guò)了一個(gè)不定長(zhǎng)的延遲以后,他必須能夠異步地(并以適當(dāng)?shù)男蛄?接收他的請(qǐng)求的結(jié)果。處理與控制機(jī)器之間的多則消息與數(shù)據(jù)傳輸在兩臺(tái)機(jī)器中都構(gòu)成可觀的處理開(kāi)銷(xiāo);這對(duì)在這樣一個(gè)雙系統(tǒng)環(huán)境中的程序員可能是不方便的,低效的和困難的。而隨著以傳統(tǒng)方式連接的機(jī)器數(shù)目的增加,程序員所面臨的復(fù)雜性會(huì)急劇增加。
系統(tǒng)/88的原始設(shè)計(jì)中包括了簡(jiǎn)化這一處境的裝置,并對(duì)程序員提供單一系統(tǒng)映象,即,模塊之間的HSDI連接,以及各模塊操作系統(tǒng)中的HSDI驅(qū)動(dòng)軟件。例如,在一個(gè)雙模塊系統(tǒng)中,兩個(gè)操作系統(tǒng)中每一個(gè)都“知道”整個(gè)環(huán)境,而且不需要“另一”操作系統(tǒng)的主動(dòng)干預(yù)便能跨越HSDI訪問(wèn)設(shè)施。通信開(kāi)銷(xiāo)的減少是可觀的。
大量不同大小與型號(hào)的模塊可從通過(guò)HSDI互連而建立一個(gè)在程序員看來(lái)是一個(gè)(可擴(kuò)充)環(huán)境的系統(tǒng)復(fù)合體。他的產(chǎn)品,即一個(gè)應(yīng)用程序,可以存儲(chǔ)在這一系統(tǒng)復(fù)合體的一個(gè)磁盤(pán)上,在復(fù)合體的任何一臺(tái)CPU上執(zhí)行,從復(fù)合體中任何一臺(tái)終端進(jìn)行控制和監(jiān)視,以及向復(fù)合體中任何一臺(tái)I/O設(shè)備傳送數(shù)據(jù)或自任何一臺(tái)I/O設(shè)備接收數(shù)據(jù),這一切都無(wú)須特殊的編程考慮并比老方法有更先進(jìn)的執(zhí)行效率。
操作系統(tǒng)及其各種特性與設(shè)施是以這樣一種方式編寫(xiě)的好象本來(lái)就設(shè)定了分布式環(huán)境以及在這一環(huán)境中操作的用戶無(wú)須考慮或控制各種實(shí)體(實(shí)用程序,應(yīng)用程序,數(shù)據(jù),語(yǔ)言處理程序等)究竟在何處。使得這一切成為可能的關(guān)鍵是每一客體必須有一個(gè)唯一的名字這一條強(qiáng)制性規(guī)定;由于最基本的名字限定詞是模塊名,所以這一規(guī)定很容易地?cái)U(kuò)展到整個(gè)系統(tǒng)復(fù)合體,因?yàn)槟K名本身在復(fù)合體中必須是唯一的。所以在整個(gè)復(fù)合體中定位任何客體同正確地為它命名一樣簡(jiǎn)單。程序員為一個(gè)客體命名時(shí)由于鏈路的規(guī)定而又一次得以簡(jiǎn)化,因?yàn)殒溌芬?guī)定允許用極短的客體代號(hào)指針來(lái)代替極長(zhǎng)而且復(fù)雜的名字。
為了在這一互連的S/88模塊的復(fù)合體中實(shí)現(xiàn)一個(gè)“衍生的單一系統(tǒng)映象”這一概念,多臺(tái)S/370處理器以下述方式耦合到S/88處理器上,使之對(duì)S/370處理器的用戶至少提供S/88單一系統(tǒng)映象特性的某些方面。即使S/370處理器和操作系統(tǒng)并不提供這些特性。
在S/88模塊中提供了一臺(tái)或更多的S/370處理器。一臺(tái)S/88處理器唯一地耦合到各臺(tái)S/370處理器上。下面將看到,各S/370處理器都是雙份的并在S/88軟件控制下進(jìn)行容錯(cuò)操作。理想地運(yùn)用上述的解耦與中斷功能機(jī)構(gòu)使S/88與S/370處理器直接耦合,使得處理器之間的數(shù)據(jù)傳輸對(duì)于S/370與S/88操作系統(tǒng)都是透明的。沒(méi)有一個(gè)操作系統(tǒng)知道其它處理器或操作系統(tǒng)的存在。
各S/370處理器使用該容錯(cuò)S/88系統(tǒng)復(fù)合體來(lái)全面地提供S/370主存儲(chǔ)器,及仿真的S/370I/O通道與I/O設(shè)備。S/370沒(méi)有不屬于S/88的主存儲(chǔ)器,通道或I/O設(shè)備,并且所有這些設(shè)施都是設(shè)計(jì)成容錯(cuò)的。
在系統(tǒng)配置時(shí),各S/370處理器從S/88存儲(chǔ)池中得到1至16兆字節(jié)的一個(gè)專用主存儲(chǔ)器連接塊;將這一塊從S/88的配置表中去掉,從而S/88操作系統(tǒng)即使無(wú)意的也不能訪問(wèn)該塊。容錯(cuò)硬件寄存器保存各S/370的存儲(chǔ)器塊指針,使得S/370無(wú)法訪問(wèn)分配給它以外的任何主存儲(chǔ)器。其結(jié)果是,S/370對(duì)它的主存儲(chǔ)器有一個(gè)完全傳統(tǒng)的單一系統(tǒng)視圖;存儲(chǔ)器的容錯(cuò)特征是完全透明的。S/88中的一個(gè)應(yīng)用程序(EXEC370)用實(shí)際的S/88設(shè)備和S/88操作系統(tǒng)調(diào)用來(lái)仿真S/370通道與I/O設(shè)備。由于它是一個(gè)應(yīng)用程序,所以它具有S/88復(fù)合體的單一系統(tǒng)映象視圖;從而將這一視圖擴(kuò)展到整個(gè)S/370“偽通道”。
從另一方面來(lái)來(lái),即從S/370操作系統(tǒng)(并擴(kuò)展到應(yīng)用程序序)的觀點(diǎn)來(lái)看,這有助于看見(jiàn)一個(gè)“窗口”(即通道),通過(guò)它發(fā)生所有的I/O操作。窗口的性質(zhì)并未改變,不需要改變?nèi)魏蜸/370程序,但通過(guò)窗口的“視野”得到了開(kāi)闊以包括該單一系統(tǒng)映象屬性。一個(gè)小的概念性步驟描繪出一大批S/370高效地共享受S/88管理的一個(gè)單一數(shù)據(jù)基。
這種連接技術(shù)的效果是各S/370的相對(duì)簡(jiǎn)單和快速的動(dòng)態(tài)可重新配置性。通道“窗口”是雙向的,S/88控制程序EXEC370在它的另一面;EXEC370有全權(quán)去停止,復(fù)位,重新初始化,重新配置和重新啟動(dòng)S/370CPU。這樣,通過(guò)使用具有單一系統(tǒng)映象屬性的其它設(shè)施(S/88I/O與操作系統(tǒng))來(lái)透明地仿真S/370I/O設(shè)施,這一屬性便擴(kuò)展到并提供給了S/370。
所以,S/370被賦予了目標(biāo)單元的獨(dú)立性。它的用戶可以用一個(gè)在S/88操作系統(tǒng)目錄中賦予的名字來(lái)訪問(wèn)一個(gè)數(shù)據(jù)文件或其它資源。用戶無(wú)須知道該數(shù)據(jù)文件在S/370-S/88模塊復(fù)合體中的地點(diǎn)。
在一個(gè)模塊9中的一個(gè)S/370處理單元所發(fā)布的S/370I/O命令將被同一模塊中緊密耦合于該S/370處理單元的一個(gè)相關(guān)的S/88處理單元所處理(或者被互連在模塊9中和受該S/88虛擬操作系統(tǒng)的相同付本所控制的其它S/88處理單元所處理,該S/88虛擬操作系統(tǒng)是支持多道處理的),從而去訪問(wèn)在同一或其它相連接的模塊上的數(shù)據(jù)文件等。它可以將被訪問(wèn)的文件返回給提出請(qǐng)求的S/370處理單元或者將它們送至其它模塊,例如,送去與其它文件合并。6.小結(jié)這樣,兩個(gè)虛擬操作系統(tǒng)(例如,S/370VM,VSE或IX370以及S/88OS)功能便合并到一個(gè)物理系統(tǒng)中。S/88處理器運(yùn)行S/88OS并管理該系統(tǒng)的容錯(cuò)特性。同時(shí),一臺(tái)或多臺(tái)S/370處理器被插接到該S/88的機(jī)柜中,S/88OS分配給每一臺(tái)S/370處理器1-16兆字節(jié)的連接的存儲(chǔ)器。名S/370虛擬操作系統(tǒng)認(rèn)為它的存儲(chǔ)器分配從地址0開(kāi)始,并且通過(guò)正常的S/370動(dòng)態(tài)存儲(chǔ)器分配與調(diào)員技術(shù)管理其存儲(chǔ)器。對(duì)S/370進(jìn)行界限檢驗(yàn)以防止該S/370訪問(wèn)S/88存儲(chǔ)器空間。S/88必須訪問(wèn)該S/370地址空間,因?yàn)镾/88必須將I/O數(shù)據(jù)送入該S/370I/O緩沖區(qū)。S/88操作系統(tǒng)是所有系統(tǒng)硬件和I/O設(shè)備的主人。對(duì)等的處理器對(duì)在一個(gè)單一系統(tǒng)環(huán)境中執(zhí)行它們各自的操作系統(tǒng),每個(gè)操作系統(tǒng)都不需要重大的改寫(xiě)。導(dǎo)言——原有技術(shù)系統(tǒng)/88本申請(qǐng)的改進(jìn)將按照一個(gè)較佳的型式進(jìn)行說(shuō)明,其中IBM系統(tǒng)/370(S/370)處理單元(在諸如VM,VSE,IX370等S/370操作系統(tǒng)的任何一個(gè)的控制下執(zhí)行S/370指令)被緊密耦合到IBM系統(tǒng)/88(S/88)處理單元(在一個(gè)容錯(cuò)環(huán)境中在一個(gè)S/88操作系統(tǒng)的控制下以容錯(cuò)方式執(zhí)行S/88指令)上,它們是以下述方式耦合的允許S/370處理單元以系統(tǒng)/88的單一系統(tǒng)映象,熱可接插性,即時(shí)錯(cuò)誤檢測(cè),I/O負(fù)荷分配以及故障隔離和動(dòng)態(tài)可重新配置性等特性來(lái)進(jìn)行容錯(cuò)操作。
國(guó)際商用機(jī)器公司出售的IBM系統(tǒng)/88在IBM系統(tǒng)/88文摘,第二版,1986年出版以及其它可利用的S/88用戶刊物中得到一般性的描述。包括模塊10(圖6A)的系統(tǒng)/88計(jì)算機(jī)系統(tǒng)是一種高利用率系統(tǒng),它是為滿足要求高可靠性在線處理的用戶的要求而設(shè)計(jì)的。系統(tǒng)/88將一個(gè)雙聯(lián)的硬件體系統(tǒng)結(jié)構(gòu)與靈巧的操作系統(tǒng)軟件相結(jié)合以提供一個(gè)容錯(cuò)系統(tǒng)。通過(guò)系統(tǒng)/88高速數(shù)據(jù)互連(HSDIs)(圖6B)將多個(gè)系統(tǒng)/88模塊10a,10b,10c連接在一起,通過(guò)系統(tǒng)/88網(wǎng)絡(luò)(圖6c)將模塊10d-g連接在一起,使系統(tǒng)/88也可橫向的增長(zhǎng)。
系統(tǒng)/88是設(shè)計(jì)成為能夠檢測(cè)一個(gè)部件故障在何時(shí)何地發(fā)生,并防止由這種故障所導(dǎo)致的錯(cuò)誤和中斷引入系統(tǒng)內(nèi)。由于容錯(cuò)性是系統(tǒng)/88硬件設(shè)計(jì)的一部分,它不需要應(yīng)用程序開(kāi)發(fā)人員來(lái)編制這一方面的密序。容錯(cuò)性可以在沒(méi)有軟件開(kāi)銷(xiāo)或不降低性能的情況下實(shí)現(xiàn)系統(tǒng)/88通過(guò)主要部件的倍增來(lái)達(dá)到容錯(cuò)性,這些主要部件包括處理器,直接訪問(wèn)存儲(chǔ)器(DASDs)或磁盤(pán),存儲(chǔ)器和控制器。如果一個(gè)雙重的部件發(fā)生故障,其雙聯(lián)伙伴自動(dòng)接替處理而系統(tǒng)對(duì)端點(diǎn)用戶仍然可被利用。還提供了雙重電源與在短時(shí)間電源故障中保持存儲(chǔ)器的后備蓄電池。系統(tǒng)/88及其軟件產(chǎn)品擴(kuò)展方便,用戶之間共享資源,以及在對(duì)端點(diǎn)用戶維持一個(gè)單一系統(tǒng)映象的同時(shí)解決復(fù)雜需求。
一個(gè)單一系統(tǒng)映象是一個(gè)包括許多處理器的分布式處理環(huán)境,各有其自己的文件與I/O,通過(guò)一個(gè)網(wǎng)絡(luò)或LAN互連,這給用戶以他正在一臺(tái)單一機(jī)器上注冊(cè)的印象。只須改變一個(gè)目錄操作系統(tǒng)允許用戶從一臺(tái)機(jī)器轉(zhuǎn)換到另一臺(tái)機(jī)器。
以適當(dāng)?shù)挠?jì)劃,在系統(tǒng)/88運(yùn)行期間,在對(duì)端點(diǎn)用戶保持一個(gè)單一系統(tǒng)映象的同時(shí)可以擴(kuò)充系統(tǒng)/88的處理能力。橫向生長(zhǎng)是通過(guò)使用系統(tǒng)/88H8DI先將多個(gè)處理模塊結(jié)合成系統(tǒng),再使用系統(tǒng)/88網(wǎng)絡(luò)將多個(gè)系統(tǒng)結(jié)合成一個(gè)網(wǎng)絡(luò)來(lái)實(shí)現(xiàn)的。
一個(gè)系統(tǒng)/88處理模塊是一臺(tái)完整的,獨(dú)立的計(jì)算機(jī),如圖6A所示。一個(gè)系統(tǒng)/88系統(tǒng)或者是一個(gè)單一模塊或者是以IBMHSDI連接在一個(gè)本地網(wǎng)絡(luò)中的一群模塊,如圖6B所求。使用遠(yuǎn)程傳輸設(shè)施的系統(tǒng)/88網(wǎng)絡(luò)是用于互連多個(gè)系統(tǒng)以向端點(diǎn)用戶構(gòu)成一個(gè)單一系統(tǒng)映象的設(shè)施。兩個(gè)或更多系統(tǒng)可以用通信線路互連以構(gòu)成一個(gè)長(zhǎng)距離網(wǎng)絡(luò)。這種連接可以通過(guò)一條直接的電纜,一條租用的電話線,或者一個(gè)X.25網(wǎng)絡(luò)。系統(tǒng)/88檢測(cè)對(duì)遠(yuǎn)程資源的引用并在模塊之間和系統(tǒng)之間按確定的路線發(fā)送消息,這些都是對(duì)用戶完全透明的。
熱可插接性允許在不中斷系統(tǒng)操作的情況下完成多次硬件更換。系統(tǒng)/88將一個(gè)故障部件以服務(wù)中取出,以其雙聯(lián)的伙伴繼續(xù)服務(wù),并在故障部件上點(diǎn)亮一個(gè)指示燈,這一切都不需要操作員干預(yù)。用戶或服務(wù)人員可以在處理過(guò)程中拆除與更換一個(gè)出故障的雙重板。對(duì)用戶的利益包括適時(shí)的理和減少了維護(hù)費(fèi)用。
雖然系統(tǒng)/88是一種容錯(cuò)的,連續(xù)操作的機(jī)器,但有時(shí)機(jī)器操作也不得不停止。這一情況的一些例子是系統(tǒng)/88操作系統(tǒng)的升級(jí),改變硬件配置(增加主存儲(chǔ)器)或者執(zhí)行某些服務(wù)過(guò)程。
雙重的系統(tǒng)/88部件與系統(tǒng)/88軟件幫助維護(hù)數(shù)據(jù)的完整性系統(tǒng)/88在故障點(diǎn)上檢測(cè)一個(gè)故障或瞬時(shí)錯(cuò)誤而并不將它傳播給整個(gè)應(yīng)用程序或數(shù)據(jù),從而保護(hù)了數(shù)據(jù)不受損害并維護(hù)了系統(tǒng)的完整性各部件包含自身的錯(cuò)誤檢測(cè)邏輯與診斷。錯(cuò)誤檢測(cè)邏輯在每一個(gè)周期比較并行操作的結(jié)果。
如果系統(tǒng)檢測(cè)到一個(gè)部件故障,該部件便自動(dòng)地被從服務(wù)中去掉。處理工作繼續(xù)在雙聯(lián)的伙伴上進(jìn)行而內(nèi)部診斷則對(duì)故障部件進(jìn)行檢驗(yàn)。當(dāng)處理工作繼續(xù)在一個(gè)故障部件的雙聯(lián)伙伴上進(jìn)行時(shí),錯(cuò)誤檢測(cè)功能會(huì)自動(dòng)在一個(gè)從服務(wù)中退出的故障部件上運(yùn)行診斷程序。如果診斷程序確定某些部件需要更換,系統(tǒng)/88能夠自動(dòng)打電話通知一個(gè)支持中心報(bào)告這一問(wèn)題。用戶從快速修復(fù)和低維護(hù)費(fèi)用中受益。
系統(tǒng)/88基本上是以美國(guó)專利4,453,215(名稱“用于容錯(cuò)計(jì)算的中央處理裝置”,1984年6月5日授予勞白脫里德)以及相關(guān)的美國(guó)專利4,486,826,4,597,0844,654,857,4,750,177與4,816,990中詳細(xì)描述過(guò)的處理器系統(tǒng)為基礎(chǔ)的;所述的專利統(tǒng)統(tǒng)在這里提出,作為參考,如同它們是完整地在這里提出的一樣。1215里德專利中的一部分圖示在本申請(qǐng)的圖7與8中。
本申請(qǐng)的圖7與8中的這一計(jì)算機(jī)系統(tǒng)具有一臺(tái)包含一個(gè)處理單元12的處理器模塊10,一個(gè)隨機(jī)訪問(wèn)存儲(chǔ)器單元16,外部設(shè)備控制單元20,24,32以及在該模塊中的若干單元之間提供所有信息傳輸用的一個(gè)單總線結(jié)構(gòu)30。在各處理器模塊內(nèi)部的總線結(jié)構(gòu)包括雙伙伴總線A,B,并且各功能單元12,16,20,24,32都有一個(gè)完全相同的伙伴單元。除了隨異步的外部設(shè)備操作的控制單元以外,各單元通常與其伙伴單元都以同步方式操作。例如,一個(gè)處理器模塊的兩個(gè)伙伴存儲(chǔ)器單元16,18一般都是完全同步地驅(qū)動(dòng)兩條伙伴總線A,B,并一起被總線結(jié)構(gòu)30所驅(qū)動(dòng)。
計(jì)算機(jī)系統(tǒng)在一個(gè)處理器模塊內(nèi)部的各功能單元級(jí)上提供故障檢測(cè)。為達(dá)到這一特性,錯(cuò)誤檢測(cè)器監(jiān)視各單元內(nèi)的硬件操作并檢驗(yàn)單元之間的信總傳輸。檢測(cè)到一個(gè)錯(cuò)誤導(dǎo)致處理器模塊將發(fā)生該錯(cuò)誤的總線或單元隔離開(kāi)來(lái),不讓它們向其它單元傳輸信息。接下去的操作將使用故障總線或單元的伙伴。在一次信息傳輸之前檢測(cè)到一個(gè)錯(cuò)誤時(shí),接下去的操作如同沒(méi)出現(xiàn)錯(cuò)誤時(shí)一樣,繼續(xù)執(zhí)行這一傳輸。而在一次信息傳輸?shù)耐瑫r(shí)檢測(cè)到一個(gè)錯(cuò)誤時(shí),繼續(xù)進(jìn)行的操作可以重復(fù)這一傳輸。
計(jì)算機(jī)系統(tǒng)能很快地采取上述故障檢測(cè)與校正行動(dòng),即,在一個(gè)操作周期的一部分中。計(jì)算機(jī)系統(tǒng)最多只會(huì)有一個(gè)正確性有問(wèn)題而為了保證總體數(shù)據(jù)的正確性而需要重發(fā)的單個(gè)信息傳輸。
雖然一臺(tái)處理器模塊具有相當(dāng)規(guī)模的硬件冗余以提供容錯(cuò)操作,但是沒(méi)有雙重單元的一個(gè)模塊仍然是完全可操作的。
功能單元冗余使得模塊能在任何單元中發(fā)生故障時(shí)繼續(xù)操作。通常,在沒(méi)有檢測(cè)到故障時(shí),一個(gè)處理器模塊的所有單元都以選擇的同步性連續(xù)地操作。當(dāng)在任何一個(gè)單元中檢測(cè)到一個(gè)表示錯(cuò)誤的故障時(shí)該單元便被隔離并置于脫機(jī)狀態(tài),使它不能向模塊中其它單元傳輸信息。脫機(jī)單元的伙伴繼續(xù)操作,通?;旧喜怀霈F(xiàn)中斷。
除了在一個(gè)模塊內(nèi)的功能單元的雙份伙伴提供容錯(cuò)操作以外,一般,在一個(gè)處理器模塊內(nèi)的各單元都有參加數(shù)據(jù)傳輸?shù)碾p份硬件。在一個(gè)功能單元內(nèi)設(shè)置這種雙份硬件的目的是獨(dú)立于其它單元地在各單元內(nèi)測(cè)試故障。一個(gè)模塊中各單元內(nèi)的其它結(jié)構(gòu)包括錯(cuò)誤檢測(cè)結(jié)構(gòu)一般不是雙份的。
服務(wù)于一個(gè)處理器模塊中所有單元的公共總線結(jié)構(gòu)很好地利用了上述兩級(jí)雙份的結(jié)合并具有三組導(dǎo)線構(gòu)成一條A總線,一條重復(fù)A總線的B總線,及一條X總線。A與B總線各載有一組完全相同的周期定義,地址,數(shù)據(jù),奇偶校驗(yàn)以及其它信號(hào),可以將這兩組信號(hào)進(jìn)行比較對(duì)單元之間的錯(cuò)誤信息傳輸提出警告。X總線的導(dǎo)線不是雙份的,它通常用于運(yùn)載模塊范圍內(nèi)的其它操作信號(hào),例如定時(shí),錯(cuò)誤狀態(tài),及電源。另外提供的一條C總線用于伙伴單元之間的本地通信。
處理器模塊用一組技術(shù)檢測(cè)與定位各功能單元中的故障,這些技術(shù)中包括對(duì)該單元的雙工部件的操作進(jìn)行比較,利用奇偶校驗(yàn)及更有效的錯(cuò)誤檢驗(yàn)與校正碼,以及對(duì)操作參數(shù)例如電源電壓的進(jìn)行監(jiān)視。各中央處理單元有兩個(gè)冗余處理部份并當(dāng)比較結(jié)果不正確時(shí),將該處理單元從向總線結(jié)構(gòu)傳輸信息中隔離。這也是將該處理器模塊的其它功能單元從可能出現(xiàn)問(wèn)題的處理單元的任何故障信息中隔離。各處理單元也具有用于提供虛擬存儲(chǔ)器操作的結(jié)構(gòu),該結(jié)構(gòu)不是雙工的。反之,處理單元使使用奇偶校驗(yàn)技術(shù)來(lái)檢測(cè)這一結(jié)構(gòu)中的故障。
隨機(jī)訪問(wèn)存儲(chǔ)器單元16裝配有兩個(gè)非冗余的存儲(chǔ)器段,每一個(gè)段安排為用于存儲(chǔ)一個(gè)存儲(chǔ)器字的不同字節(jié)。該單元用一個(gè)錯(cuò)誤檢測(cè)碼檢測(cè)各存儲(chǔ)器段中的故障以及兩個(gè)段合成中的故障。同樣,錯(cuò)誤檢測(cè)器將阻止存儲(chǔ)器單元把潛在的錯(cuò)誤信息傳輸?shù)娇偩€結(jié)構(gòu)并經(jīng)此傳到其它單元中去。
存儲(chǔ)器單元16也承擔(dān)檢驗(yàn)雙工總線導(dǎo)線的任務(wù),即,A總線與B總線。為了這一目的,該單元具有測(cè)試總線結(jié)構(gòu)上的地址信號(hào)的奇偶校驗(yàn)器以及測(cè)試總線結(jié)構(gòu)上的數(shù)據(jù)信號(hào)的奇偶校驗(yàn)器。此外,一個(gè)比較器對(duì)A總線上的所有信號(hào)與B總線上的所有信號(hào)進(jìn)行比較。當(dāng)以這一方式確定出某條總線有故障時(shí),該存儲(chǔ)器單元取道X總線向該模塊的其它單元發(fā)出信號(hào)通知它們只服從無(wú)故障的總線。
一個(gè)處理器模塊的外部設(shè)備控制單元使用一個(gè)總線接口部件與公共總線結(jié)構(gòu)相連接,并與稱為“驅(qū)動(dòng)”與“檢驗(yàn)”的雙工控制部件相連,以及與在該控制部件和它外部服務(wù)的外部輸入/輸出設(shè)備之間進(jìn)行通信的一個(gè)外部設(shè)備接口部件相連接。還有用于與磁盤(pán)存儲(chǔ)器52a,52b進(jìn)行操作的磁盤(pán)控制單元20,22,用于通過(guò)通信面板50與通信設(shè)備(包括終端,打印機(jī)及調(diào)制解調(diào)器)進(jìn)行操作的通信控制單元24,26,以及用于在一個(gè)多處理器系統(tǒng)中將一個(gè)處理器模塊與另一個(gè)處理器模塊互連的HSDI控制單元32,32。在各種場(chǎng)合中,總線接口部件將來(lái)自A總線與/或B總線的輸入信號(hào)送入驅(qū)動(dòng)與檢驗(yàn)控制部件,測(cè)試來(lái)自總線結(jié)構(gòu)的某些輸入信號(hào)中的邏輯錯(cuò)誤,并測(cè)試驅(qū)動(dòng)與檢驗(yàn)通道輸出的信號(hào)的相等性。各外部設(shè)備控制單元中的驅(qū)動(dòng)控制部件提供適用于該單元所服務(wù)的I/O設(shè)備的控制,地址,狀態(tài)與數(shù)據(jù)處理功能。一個(gè)單元的檢驗(yàn)控制部件基本上與檢驗(yàn)驅(qū)動(dòng)控制部件的目的相同。各控制單元的外部設(shè)備接口部件包括一個(gè)奇偶校驗(yàn)與比較器設(shè)備的組合,用于測(cè)試在控制單元與外部設(shè)備之間通過(guò)的信號(hào)中的錯(cuò)誤。
與一臺(tái)同步I/O設(shè)備一起工作的一個(gè)外部設(shè)備控制單元,例如通信控制單元24,與其伙伴單元步伐一致地同步操作。然而,互為伙伴的磁盤(pán)控制單元20,22與不同的非同步磁盤(pán)存儲(chǔ)器一起工作因而同步性有所限制?;榛锇榈拇疟P(pán)控制單元20,22并發(fā)執(zhí)行寫(xiě)操作但是由于磁盤(pán)存儲(chǔ)器各自異步地操作所磁盤(pán)控制單元20,22也不是精確同步的??刂茊卧?2與其伙伴也是以這種有限程度的同步性典型地進(jìn)行操作的。
一個(gè)模塊的電源單元使用兩個(gè)大容量電源,每一個(gè)電源只為每對(duì)結(jié)成伙伴的單元中的一個(gè)單元提供操作電源。這樣,一個(gè)大容量電源供應(yīng)總線結(jié)構(gòu)的雙工部分中的一個(gè),兩個(gè)成伙伴的中央處理單元中的一個(gè),兩個(gè)成伙伴存儲(chǔ)器單元中的一個(gè),以及各對(duì)外部設(shè)備控制單元中的一個(gè)單元。大容量電源同時(shí)為處理器模塊的非雙工單元提供電力。模塊的各單元都有一個(gè)電源結(jié)構(gòu),它接受來(lái)自一個(gè)大容量電源的操作電力并且本身又產(chǎn)生該單元所要求的操作電壓。這一電源結(jié)構(gòu)還監(jiān)視電源電壓。在檢測(cè)到一個(gè)故障電源電壓時(shí),這一電源結(jié)構(gòu)生成一個(gè)信號(hào)將所有從該單元到總線結(jié)構(gòu)的輸出線箝位成地電位。這一動(dòng)作防止了任何單元上的一個(gè)電源故障導(dǎo)致向總線結(jié)構(gòu)傳輸出故障的信息。
處理器模塊的某些單元以一個(gè)操作周期執(zhí)行一次信息傳輸,該周期在實(shí)際信息傳輸前包括一個(gè)錯(cuò)誤檢測(cè)定時(shí)相位。提供有這一操作的一個(gè)單元,例如,一臺(tái)外部設(shè)備的控制單元,從而在啟動(dòng)一次信息傳輸之前測(cè)試故障狀態(tài)。在檢測(cè)到一個(gè)故障時(shí),該單元禁止該信息的傳輸。然而,該模塊仍能不中斷即不延遲地繼續(xù)操作,并從非禁止的伙伴單元啟動(dòng)該信息傳輸。
對(duì)于操作時(shí)間更具重要性的處理器模塊中的其他單元,一般至少包括中央處理單元與存儲(chǔ)器單元,與該傳輸所附屬的錯(cuò)誤檢測(cè)并發(fā)地執(zhí)行每一次信息傳輸。在檢測(cè)到一個(gè)故障時(shí),該單元立即生成一個(gè)信號(hào)向其他處理單元報(bào)警,要它們不理緊接在前面的信息傳輸。處理器模塊能從報(bào)告故障狀態(tài)的那個(gè)成員的伙伴那里重做這一信息傳輸。這種操作方式優(yōu)化了操作速度,因?yàn)槊看涡畔鬏數(shù)膱?zhí)行并不為了錯(cuò)誤檢測(cè)的目的而延遲。只有在相對(duì)少的情況下檢測(cè)到一個(gè)故障時(shí)延遲才會(huì)發(fā)生。提供了一個(gè)總線仲載裝置,當(dāng)多個(gè)單元同時(shí)請(qǐng)求訪問(wèn)時(shí),該裝置確定哪一個(gè)能訪問(wèn)系統(tǒng)總線。通過(guò)HSDI連網(wǎng)的容錯(cuò)S/370模塊9圖7在原有技術(shù)模塊10的上方示出了S/370與S/88雙處理器對(duì)(互為伙伴單元)21,23的互連,當(dāng)它們用來(lái)代替模塊10中的雙S/88單元12,14時(shí),建立了一個(gè)新的唯一的S/370模塊9。當(dāng)用S/88HSDI和網(wǎng)絡(luò)以相似于圖6B,6C中所中所示的用于模塊10的方式將這些唯一的模塊9互連時(shí),它們建立了一個(gè)具有S/88的容錯(cuò)特性,單一系統(tǒng)映象,熱可插接性,同一模塊內(nèi)的多個(gè)S/88處理單元的I/O負(fù)荷共享等的S/37370復(fù)合體(而不是一個(gè)S/88復(fù)合體)。
具體地說(shuō),在獨(dú)一無(wú)二的模塊9中的伙伴單元21,23中的S/370處理器在它們各自的S/370操作系統(tǒng)的控制下執(zhí)行S/370指令;互連的S/88處理器結(jié)合它們各自的S/88存儲(chǔ)器和S/88外部設(shè)備單元在S/88操作系統(tǒng)與一個(gè)S/88應(yīng)用程序的聯(lián)合控制下執(zhí)行所有的S/370I/O操作。
此外,可以在新模塊9中結(jié)合進(jìn)更多的S/370-S/88處理器伙伴單元25,27與29,31,從而在獨(dú)一無(wú)二的模塊9中容許建立一個(gè)S/370多處理器環(huán)境。此外,在伙伴單元21,223和25,27和29,31中的S/370處理器可以以伙伴對(duì)為單位各自在不同的S/370操作系統(tǒng)下操作。雙處理器伙伴單元21,23的一般性說(shuō)明圖8示出了在單元21中互連的S/370與S/88處理器的一種較佳形式。在單元21的下方部分包括一個(gè)中央處理器12,除了在處理器部件對(duì)60,62中每一個(gè)都使用一個(gè)單一的處理器部件外其它基本上和上述里德(Reid)專利相同。在里德(Reid)專利中,在60處和在62處都提供有雙處理器以分別執(zhí)行用戶程序與操作系統(tǒng)代碼。
在本申請(qǐng)中,兩種功能都由一個(gè)單一的微處理器執(zhí)行,最好是一臺(tái)MC68020用戶手冊(cè)(第三板(ISBN-0-13-567017-9)Motorola公司出版,板權(quán)所有1989,1988)中所描述的Motorola MC68020微處理器。所述刊物包括在本專利中供引用,如同它全部在這里提出一樣。
從而,各處理器部件(PE)60與62較佳地包括一臺(tái)Motora1a68020微處理理器。多路轉(zhuǎn)換器61,63以里德專利中所詳細(xì)描述的方式經(jīng)由地址/數(shù)據(jù)控制總線A與B及收發(fā)器12e將處理器部件60,62連接到總線結(jié)構(gòu)30上。本地控制64,66與一個(gè)虛擬存儲(chǔ)器映象12c被提供給部件60,62。一個(gè)比較器12f用來(lái)比較在控制、數(shù)據(jù)與地址線上的往來(lái)于總線30和處理器部件60,62之間的信號(hào)來(lái)檢驗(yàn)生成錯(cuò)誤的故障。信號(hào)不匹配導(dǎo)致比較器12f向公共控制電路86送出一個(gè)錯(cuò)誤信號(hào),而電路86在總線結(jié)構(gòu)30的X總線上送出一個(gè)錯(cuò)誤信號(hào)并禁阻收發(fā)器12e中的驅(qū)動(dòng)器(未示出),使處理單元12脫機(jī)。箝位電路88,90響應(yīng)單元12上的一個(gè)電源故障將所有從單元12到總線結(jié)構(gòu)30的輸出線箝位到地。這些部件在里德專利中更詳細(xì)地描述過(guò)。
圖8的上部所示為一對(duì)S/370處理部件85、87與S/888總線結(jié)構(gòu)30和與S/88處理部件60、62相連接的一種較理想的形式。處理元件85、87通過(guò)多路轉(zhuǎn)接器71、73及收發(fā)器13與總線結(jié)構(gòu)相連接,其方式在邏輯上類似于部件60、62與總線結(jié)構(gòu)的耦合。
提供了一個(gè)比較電路15(在圖32A、B中將更充分地介紹)兩個(gè)鉗位電路77、79和一些通用的控制電路75,它們的工作方式類似于單元12中對(duì)應(yīng)的部件的工作方式??刂齐娐?6與處理元件60、62的中斷機(jī)構(gòu)耦合。S/370處理器85、87及其有關(guān)的硬件用S/88來(lái)處理錯(cuò)誤并進(jìn)行恢復(fù)。這樣,還用控制電路775通過(guò)線路95與通用控制電路86偶合,使后者處理比較電路15檢測(cè)出的錯(cuò)誤。這里的連接線95還可在其中一對(duì)處理器出錯(cuò)的情況下,使通用控制電路75和86的各自處理器對(duì)85、87和60、62從線路中斷開(kāi)。
單元21中S/370處理部件的較理想形式包括中央處理部件85、87,存儲(chǔ)管理部件81、83以及處理到處理器(如S/370至S/88)的接口89、91。存儲(chǔ)管理部件81、83通過(guò)多路轉(zhuǎn)換器71、73、收發(fā)器13和總線結(jié)構(gòu)30使處理部件85、87與S/88的主存儲(chǔ)器16連接。
接口89、91分別將S/370處理部件85、87的處理器總線與S/88處理部件62、60的處理器總線連接。
伙伴處理器部件23與處理器部件21相同。根據(jù)上述有關(guān)描述可知,部件21中的兩個(gè)處理部件60、62與部件23中的對(duì)應(yīng)的兩個(gè)部件(未示出)通常都以相互鎖步前進(jìn)的方式工作,從而在同樣的S/88操作系統(tǒng)的控制下同時(shí)執(zhí)行同樣的指令。
類似地,部件21中的處理元件85、87與部件23中的對(duì)應(yīng)元件(未示出)也相互鎖步工作,從而在同一個(gè)S/370操作系統(tǒng)控制下同時(shí)執(zhí)行相同的指令。
在部件21或23出錯(cuò)的情況下,出錯(cuò)部件被去掉,另一部件仍可在這種出錯(cuò)情況下繼續(xù)工作。
盡管一個(gè)S/370處理部件的具體執(zhí)行方法將在下面做出詳細(xì)說(shuō)明,這里仍將指出可以采用的其它已知的符合“IBM系統(tǒng)/370操作原理”一書(shū)中所述要求的執(zhí)行方法,該書(shū)由IBM公司出版(出版號(hào)GA22-7000-10,第11版)并可向IBM公司索取。因而這里可以把所述出版物結(jié)合進(jìn)來(lái)作參考,認(rèn)為與這里構(gòu)成一個(gè)整體。
圖9A和9B表示了圖8的部件21的S/370和S/88器件實(shí)物封裝的一種方式。帶有成對(duì)處理元件85、87的S/370器件安裝在一塊板101上,帶有成對(duì)處理元件60、62的S/88器件安裝在另一塊板102上。兩塊板101和102被牢固地相互固定在一起構(gòu)成一對(duì)夾板103,并使之可以插入模塊9的底板(未示出)的兩個(gè)插槽。通常的底板連線可按圖8所示,使板101與102上的器件互相連接并接總線結(jié)構(gòu)30,如Reid專利中說(shuō)明的那樣。
在詳細(xì)說(shuō)明一個(gè)S/370處理器與一個(gè)S/88處理器的直接連接之前,先提供關(guān)于一種機(jī)構(gòu)的簡(jiǎn)要說(shuō)明是有益的,該機(jī)構(gòu)可使S/370:(1)使用一部分S/88主存儲(chǔ)器;(2)利用某些S/88的虛擬存儲(chǔ)空間與S/88交換指令和數(shù)據(jù)。這些機(jī)構(gòu)將在后面進(jìn)行更詳細(xì)的說(shuō)明。
圖10表示通過(guò)存儲(chǔ)器管理單元105為模塊9把S/88的虛存映射為實(shí)存16。虛擬地址空間分為S/88操作系統(tǒng)空間107和用戶使用的空間108。空間107中有一個(gè)區(qū)域109(地址是007E0000到007EFFFF)保留給硬件使用其中存放這樣的代碼,它被用于處理器單元(如21)中各個(gè)S/370處理器部件與各個(gè)S/88處理器部件間的連接。在系統(tǒng)正常工作過(guò)程中,地址空間109對(duì)S/88操作系統(tǒng)是透明的。該空間109的用途將在下面進(jìn)行更詳細(xì)的說(shuō)明。
在系統(tǒng)的初始化過(guò)程中,存儲(chǔ)器管理單元105在S/88主存儲(chǔ)器單元16中為四個(gè)為一組的S/370處理器單元中的每一個(gè)分配一主存貯區(qū),S/370處理器單元是配對(duì)的。如21和23為一對(duì)。這樣,就分別為伙伴單元21、23和25、27以及29、331提供了三個(gè)S/370主存儲(chǔ)區(qū)域162、163和164。伙伴單元中的S/88處理器按Reid專利中所述的方式訪問(wèn)存儲(chǔ)單元16的剩余部分。
S/370存儲(chǔ)區(qū)域162-164的分配,如后面將說(shuō)明的那樣,是以這樣的方式進(jìn)行的S/88操作系統(tǒng)并不知道這些區(qū)域被“偷去”,同時(shí)存儲(chǔ)器管理單元不再向S/88用戶分配這些區(qū)域除非它們回到S/88空間。由于S/370系統(tǒng)是虛擬系統(tǒng),它們通過(guò)地址翻譯訪問(wèn)其各自的主存儲(chǔ)區(qū)域。伴隨的S/88主存儲(chǔ)器單元18要求相同的S/370主存儲(chǔ)區(qū)域(未示出)。各S/370處理器元件只能訪問(wèn)其各自的S/370主存儲(chǔ)區(qū),如果它試圖訪問(wèn)S/88主存儲(chǔ)空間就會(huì)產(chǎn)生錯(cuò)誤信號(hào)。然而,各S/88處理器元件在S/88處理器元件對(duì)它的S/370處理器元件起到I/O控制器的作用時(shí),在S/370I/O工作過(guò)程中,可以訪問(wèn)(或者指示訪問(wèn))各個(gè)S/370的主存儲(chǔ)區(qū)域。
S/370與S/88處理器元件85、62的耦合(圖11、12)圖8所示說(shuō)明了4個(gè)類似85那樣的處理器部件(在伙伴單元21、23中各有兩個(gè))和4個(gè)類似62那樣的處理器部件(在單元21、23中各有兩個(gè))的構(gòu)造,這樣所有的S/370處理器部件同時(shí)執(zhí)行相同的S/370指令,所有的S/88處理器部件同時(shí)執(zhí)行相同的S/88指令。到現(xiàn)在為止所考慮的程序執(zhí)行中,所有4個(gè)S/370處理器部件只起一個(gè)S/370處理單元的作用。類似地,所有4個(gè)S/88處理器部件只起一個(gè)S/88處理單元的作用。
因此,為了便于說(shuō)明和解釋,下面的圖示及說(shuō)明部分將只表示一個(gè)S/370處理器部件85和一個(gè)S/88處理器部件62以及與它們有關(guān)的硬件和程序碼,除非遇到需要進(jìn)一步說(shuō)明的地方。
類似地,為了便于說(shuō)明和解釋,在下述說(shuō)明中,處理器部件通過(guò)諸如多路轉(zhuǎn)接器61、63、71、73和收發(fā)器12e、11與總線結(jié)構(gòu)的連接也做了很多省略。圖32給出了這種連接的簡(jiǎn)要參考圖。
因此,圖11表示了處理器元件85經(jīng)過(guò)包括其處理器總線170和一個(gè)S/370存儲(chǔ)管理單元81的第一段途徑與系統(tǒng)總線30和S/88存儲(chǔ)器16相連接。如圖所示的那樣,PE85經(jīng)過(guò)一段包括有處理器接口89的第二路徑與PE62的處理器總線161相接。PE85在S/370程序執(zhí)行過(guò)程中利用第一略徑從存儲(chǔ)器16中指定的S/370主存儲(chǔ)區(qū)162處提取(或存進(jìn)數(shù)據(jù)和指令。PE通過(guò)帶有接口89的第二路徑為PE85完成S/370的I/O操作。
在一個(gè)優(yōu)選的實(shí)施例中,S/370集成塊150(圖11)包括各分立的集成塊處理器元件85、時(shí)針152、高速緩沖寄存器153,它帶有一個(gè)目錄查閱表(CDLAT)341)、一個(gè)總線調(diào)配器154,一個(gè)可選用的浮點(diǎn)協(xié)同處理器部件151和一個(gè)用于存儲(chǔ)一系列支持S/370結(jié)構(gòu)的微碼的控制存儲(chǔ)器171。這種S/370集成塊適合用任何現(xiàn)有的IBM公司推出的S/370操作系統(tǒng)(如VSE/SP、VM/SP、IX/370等等)進(jìn)行操作。
高速緩沖寄存器控制器153與一個(gè)存儲(chǔ)控制接口(STCI)155一起構(gòu)成S/370存儲(chǔ)管理單元81??偩€調(diào)配器154與一個(gè)總線控制單元(BCU)156組成PE至PE的接口89。
在這個(gè)優(yōu)選實(shí)施例中,每個(gè)類似PE85這樣的S/370的CPU都是一個(gè)32位的微處理器,它帶有一個(gè)32位的數(shù)據(jù)流、一個(gè)32位的運(yùn)算/邏輯單元(ALU)、一個(gè)三端口數(shù)據(jù)局部存儲(chǔ)器中的32位寄存器、和一個(gè)8位S/370指令緩沖區(qū)。S/370指令既可以在硬件中執(zhí)行也可由微指令編譯執(zhí)行。芯片153與有關(guān)的存儲(chǔ)控制功能件一起為S/370程序的指令和數(shù)據(jù)提供了高速緩沖寄存器存儲(chǔ)。芯片153處理在PE85執(zhí)行程序指令時(shí)發(fā)出的所有存儲(chǔ)請(qǐng)求。芯片153在傳輸I/O數(shù)據(jù)時(shí)還處理總線調(diào)配器發(fā)出的請(qǐng)求。
總線調(diào)配器155和BCU156在輸入/輸出操作過(guò)程中提供邏輯判斷和控制內(nèi)部的S/370處理器總線170與S/88處理器總線161之間的直接(或緊密)連接。BCU156是使PE85處理器總線與PE62直接地進(jìn)行互連的主要機(jī)構(gòu)。它是硬件機(jī)構(gòu),如后面將要說(shuō)明的那樣,當(dāng)由于PE62與PE85間的數(shù)據(jù)和命令的傳遞而使PE6與有關(guān)的系統(tǒng)硬件脫鉤時(shí),它與S/88處理器元件62交互作用。
時(shí)鐘塊152 (圖12)用集中的邏輯產(chǎn)生時(shí)鐘信號(hào)并把適當(dāng)?shù)臅r(shí)鐘信號(hào)分別加在其它的芯片85、151、153和154上。而時(shí)鐘152又由來(lái)自系統(tǒng)/88總線30的時(shí)鐘信號(hào)控制,從而與S/370的PE85和S/88的PE62同步。
合并兩個(gè)性質(zhì)不同的S/370和S/88硬件的結(jié)合部件,加上處理器連接/斷開(kāi)硬件,構(gòu)成一種把前面所述的不允許錯(cuò)誤的硬件同時(shí)加壓在允許錯(cuò)誤的總線結(jié)構(gòu)30上的裝置。在此優(yōu)選實(shí)施例中,這一接口是由STCI邏輯155控制的,它必須在S/370高速緩沖寄存器控制器153與S/88系統(tǒng)總線30之間進(jìn)行通訊。還有,不允許錯(cuò)誤的硬件必須在圖8所示的板上復(fù)制以產(chǎn)生能夠相互鎖步運(yùn)行并與一個(gè)伙伴單元也鎖步運(yùn)行的“檢查”和“驅(qū)動(dòng)”邏輯。這樣,構(gòu)成板101和102上的系統(tǒng)部件的“單個(gè)”CPU必須與它各自的雙工伙伴單元鎖步運(yùn)行。在維持最佳工作狀態(tài)和功能性的同時(shí)實(shí)現(xiàn)上述要求的工作必然涉及各分立的時(shí)鐘源的同步化問(wèn)題。
在優(yōu)選實(shí)施例中,S/88系統(tǒng)時(shí)鐘38(圖7)由與共同的總線結(jié)構(gòu)30相接的所有裝置所接收,并且總線30的每個(gè)周期定義為兩個(gè)S/88時(shí)鐘周期。這種系統(tǒng)時(shí)鐘38保證了總線上的同步通訊同時(shí)可由各處理器/控制器在此系統(tǒng)時(shí)鐘的基礎(chǔ)上用來(lái)發(fā)展內(nèi)部時(shí)鐘頻率源。S/370硬件利用了一個(gè)輸入到S/370時(shí)鐘芯片152的振蕩器,時(shí)鐘芯片152繼而產(chǎn)生一系列唯一的時(shí)鐘信號(hào)送向其它各芯片85、151、153、154、155。這個(gè)時(shí)鐘芯片152會(huì)有固有廷遲,這種固有延遲會(huì)隨著各種參數(shù)如工作溫度、生產(chǎn)條件等的不同而變化。這種延遲的變化對(duì)于保持眾多的檢查與驅(qū)動(dòng)間以鎖步方式實(shí)現(xiàn)同步和對(duì)于保持STCI1155與總線結(jié)構(gòu)30之間充分暢通來(lái)說(shuō)是不能令人接受的。
如圖12和19C所示,本優(yōu)選實(shí)施例利用了眾多的時(shí)鐘同步(Sync)邏輯158(以及用于成對(duì)的S/370處理器單元的158a(未示出)),在按S/88總線30周期對(duì)S/370處理器周期進(jìn)行同步的同時(shí),使插件101的處理器檢查和驅(qū)動(dòng)部分在復(fù)位(即開(kāi)電源復(fù)位等)之后以鎖步方式運(yùn)行。從S/88時(shí)鐘38發(fā)出的時(shí)鐘信號(hào)通過(guò)總線結(jié)構(gòu)30加到同步邏輯158上和STCI155上,從而使S/88與S/370同步并可通過(guò)系統(tǒng)總線30訪問(wèn)主存儲(chǔ)器。
這一同步是在時(shí)鐘同步邏輯158中實(shí)現(xiàn)的,首先倍增S/88時(shí)鐘得到所需的S/370振蕩器的輸入頻率,然后用此頻率來(lái)激勵(lì)S/370的時(shí)鐘芯片152。在這種情況下,S/88和S/370的時(shí)鐘周期已倍頻。其次,線159上代表S/370周期開(kāi)始的反饋脈沖,根據(jù)代表一個(gè)寄存器鎖存延遲的周期的前沿和后沿的S/88時(shí)鐘進(jìn)行脈沖調(diào)制,該延遲大于S/370振蕩器輸入的時(shí)鐘周期,而S/370振蕩器輸入的時(shí)鐘周期等于S/88半波周期。另一在復(fù)位時(shí),從線159上被取樣的S/370時(shí)鐘反饋脈沖落在取樣窗口之外,或者超過(guò)S/88時(shí)鐘的前沿,S/370振蕩器的輸入被取消一個(gè)S/370周期。這一作用是“擴(kuò)展”了現(xiàn)有的S/370周期,因此,在優(yōu)選實(shí)施例中,下一個(gè)S/370時(shí)鐘反饋脈沖(在線159上)的取樣就一定會(huì)落在所要求的窗口的范圍內(nèi)。所有的比較器邏輯電路15(圖18),在圖32(如402a-g)中將有更加詳細(xì)的表示,在此都省略了以使校驗(yàn)與驅(qū)動(dòng)硬件能夠同步。
因而確保了S/370處理器在S/88時(shí)鐘周期啟動(dòng)的半波期內(nèi)啟動(dòng)。這樣所有總線結(jié)構(gòu)30與S/370高速緩沖寄存器控制器153之間的傳遞時(shí)間差的最壞情況就是這個(gè)半波延遲。另外,比較器邏輯15是由按照S/88時(shí)鐘取樣的線路輸入的,這就保證了“斷”邏輯403與相伴的S/88處理器板102同步。因此,雖然由于在其各自的時(shí)鐘發(fā)生邏輯中會(huì)有延遲變化而導(dǎo)致執(zhí)行檢查和驅(qū)動(dòng)的S/370硬件在同步方面略有出入,但雙方仍將按與總線結(jié)構(gòu)相同的S/88的時(shí)鐘鎖步運(yùn)行,而且在S/88時(shí)鐘周波發(fā)生后其出入不會(huì)超過(guò)半周。同步邏輯158持續(xù)監(jiān)視線路159上的S/370時(shí)鐘反饋,以保證沒(méi)有超過(guò)半波周期的偏移。在優(yōu)選實(shí)施例中要求有一個(gè)最大的總線30周波從而在任何系統(tǒng)復(fù)位時(shí)使雙方同步,然而如果總的延遲超過(guò)了復(fù)位時(shí)所允許的最大范圍(這將使一方延伸到S/370的時(shí)鐘周期)都將導(dǎo)致一塊板的“中斷”條件,即一次故障。
圖12更詳細(xì)地表示了圖11的配置。如圖所示,S/370控制存儲(chǔ)器171連接PE85。在優(yōu)選實(shí)施例中,控制存儲(chǔ)器171由16KB的隨機(jī)存取存儲(chǔ)器構(gòu)成,用于存儲(chǔ)PE85中控制程序指令執(zhí)行的和I/O操作的微指令??刂拼鎯?chǔ)器171中還包括一個(gè)64B的塊186(圖29),它作為一個(gè)緩沖區(qū)根據(jù)要求用來(lái)放置從一個(gè)內(nèi)部目標(biāo)區(qū)(IOA)187(圖28)裝入的微碼,內(nèi)部目標(biāo)區(qū)是主存儲(chǔ)單元16中S/370主存保留區(qū)162的一部分。此圖中,PE62總線結(jié)構(gòu)161分成其虛擬地址總線161A和數(shù)據(jù)總線161D。在此,PE62與這樣的硬件相接一個(gè)浮點(diǎn)處理器172、一個(gè)高速緩沖寄存器73、一個(gè)稱之為ETIO的用于存儲(chǔ)連接微碼的微碼存儲(chǔ)單元。下面將會(huì)看到,微碼和高速緩存器173中存的應(yīng)用程序都可用來(lái)控制PE62和BCU邏輯156,從而完成PE85的I/O操作。
PE62硬件還包括一個(gè)地址編譯機(jī)構(gòu)175。一個(gè)寫(xiě)入通道176在一個(gè)寫(xiě)周期內(nèi)臨時(shí)存放數(shù)據(jù),該數(shù)據(jù)在下一周期內(nèi)用到系統(tǒng)總線30上從而加速S/88的工作過(guò)程。Reid專利中所述的那種系統(tǒng)/88總線邏輯177把編譯單元175和寫(xiě)入通道176按上面提到的Reid專利中所述的普通方法連接到系統(tǒng)總線30。一個(gè)類似的系統(tǒng)/88總線邏輯單元178把存儲(chǔ)控制接口155連接到系統(tǒng)總線30。
將一個(gè)緩沖器180、一個(gè)可編程只讀存儲(chǔ)器181、一個(gè)存儲(chǔ)器182、一個(gè)寄存器183與PE62相連接用于系統(tǒng)/88和系統(tǒng)370的初始化。PROM181具有系統(tǒng)檢測(cè)碼和IDCODE,用來(lái)順序斷開(kāi)系統(tǒng)PROM181具有對(duì)S/88的同步碼。寄存器183具有系統(tǒng)狀態(tài)和系統(tǒng)控制寄存器。
兩個(gè)S/370芯片安裝在同一塊板上,使它們同步,并按鎖步方式執(zhí)行程序,進(jìn)行板的自檢。 STC總線157和一個(gè)0.1通道的總線受到監(jiān)視以防止可能的故障,因此S/370處理器不會(huì)把一個(gè)錯(cuò)誤信息傳播到另一個(gè)可置換字段的單元去。
接口89的BCU156和調(diào)配器154使各個(gè)處理器(PE62、PE85)適當(dāng)?shù)乜刂屏硪粋€(gè)處理器,這樣任何一個(gè)操作系統(tǒng)都不能完全控制這一系統(tǒng)。每個(gè)處理器的功能都部分地由接口89以及各處理器中運(yùn)行的微碼控制著。
處理器——處理器接口891.I/O適配器適配器154 (圖13)通過(guò)其輸出的0.1通道使S/370處理器85與BCU156對(duì)接。通道包括一對(duì)不同步的雙字節(jié)寬數(shù)據(jù)總線250、251??偩€250、251通過(guò)一對(duì)64位緩沖器259、260連接處理器總線170中同步的四字節(jié)寬數(shù)據(jù)路徑。數(shù)據(jù)從BCU156經(jīng)總線251傳送到適配器154(以及S/370主存162)和從適配器154經(jīng)總線250傳送到BCU156。
適配器154包括下列寄存器1.基地址寄存器110包含用于排隊(duì)和信箱尋址的基地址和隊(duì)長(zhǎng)。
2.讀指針(RPNTR)和寫(xiě)指針(WPNTR)寄存器111和112,其中包含基地址向下一個(gè)要接收讀或?qū)懺L問(wèn)的隊(duì)列入口偏移。當(dāng)命令/地址要通過(guò)總線170傳送到高速緩沖存儲(chǔ)器控制器153時(shí),這些值和命令一起加到總線發(fā)送寄存器(BSR)116中。
3.狀態(tài)寄存器(IOSR)118包含所有PU-BCU和BCU-PU的請(qǐng)求、入口報(bào)文隊(duì)列狀態(tài)、和BCU接口狀態(tài)。
4.如果有一點(diǎn)異常使寄存器(ER)119為1和使對(duì)應(yīng)的IOSR-位為1,則會(huì)引起PE85異常。
5.控制字寄存器(CW)120控制著某些IOSR位的置位/復(fù)位。
6.地址檢查上不界寄存器(ACBR)121保持內(nèi)部目標(biāo)區(qū)(IOA)187的起始頁(yè)地址。
7.地址鍵寄存器(APDR/KEY)122、123通常通過(guò)地址/數(shù)據(jù)總線250和251由BCU裝載,以訪問(wèn)存儲(chǔ)器162中的位置。這些寄存器可以以檢測(cè)為目的由PE85裝載。
8.命令寄存器(CMD0.1)124、125通常由BCU156裝載一個(gè)命令和字節(jié)計(jì)數(shù)。該寄存器可以以檢測(cè)為目的由PE85進(jìn)行裝載。
適配器154是PE85和BCU156之間的接口。邏輯上,適配器154向BCU提供下列服務(wù)項(xiàng)目-訪問(wèn)S/370主存儲(chǔ)器162-訪問(wèn)S/370存儲(chǔ)器112中的一個(gè)信箱和一個(gè)報(bào)文隊(duì)列,-PE85與BCU156之間的一個(gè)請(qǐng)求/響應(yīng)機(jī)械BCU156訪問(wèn)整個(gè)存儲(chǔ)器162,包括其IOA區(qū)187(圖28)。適配器154完成IOA區(qū)187與用戶區(qū)165之間的地址上下界檢查(ACB檢查),而鍵的檢查則是在收到來(lái)自適配器154、經(jīng)過(guò)處理器總線170的鍵、命令和存儲(chǔ)器162地址數(shù)據(jù)之后由高速緩沖存儲(chǔ)器控制器153來(lái)完成的。如果要存的數(shù)據(jù)的編址行保持在高速緩沖寄存器中,則數(shù)據(jù)就存在高速緩沖存儲(chǔ)器中。否則控制器153把數(shù)據(jù)傳送到主存儲(chǔ)器162。對(duì)于數(shù)據(jù)的提取,在高速緩沖存儲(chǔ)器控制器中也按同樣的方式進(jìn)行。
PE85與BCU156之間的I/O命令和信息的傳遞是通過(guò)預(yù)先定義的存儲(chǔ)器162單元(信箱區(qū)188和入口報(bào)文隊(duì)列189)來(lái)完成的,如圖28所示。
BCU156從16字節(jié)的信箱區(qū)188提取I/O命令。訪問(wèn)信箱區(qū)的地址是這樣計(jì)算的基地址+報(bào)文隊(duì)列長(zhǎng)度+信箱偏移前兩項(xiàng)由適配器154的基寄存器110提供,后一項(xiàng)由BCU156提供。隊(duì)列長(zhǎng)度由基寄存器110中的兩位決定,它可為1、24或8KB(即64-512個(gè)項(xiàng)目)。其基地址在寄存器中設(shè)定,其限額為緩沖器大小的兩倍(即分別為2-16KB)。
入口報(bào)文隊(duì)列189按先后順序存入所有經(jīng)BCU154收到的信息。每一項(xiàng)目長(zhǎng)為16字節(jié)。
BCU156用寄存器111、112中的讀指針(RPNTR)和寫(xiě)指針(WPNTR)從隊(duì)列189中讀取和向其寫(xiě)入項(xiàng)目。PE85通過(guò)一種判讀操作訪問(wèn)讀指針。寄存器110中的基地址加WPNTR指向下一個(gè)要寫(xiě)的隊(duì)列項(xiàng)目,基地址加RPNTR指向下一個(gè)要讀的隊(duì)列項(xiàng)目。
每一隊(duì)列操作后這些指針就被修改WPNTR+16=一次寫(xiě)入后的WPNTRRPNTR+16=一次讀取后的RPNTR通過(guò)指針比較產(chǎn)生下列條件RPNTR=WPNTR 隊(duì)列空閑RPNTR=WPNTR+16 隊(duì)列已滿;如果BCU156請(qǐng)求寫(xiě)入隊(duì)列則通過(guò)狀態(tài)總線向BCU發(fā)出緩沖器不能用(BNT)的信息息。
根據(jù)下述機(jī)構(gòu)存入信箱區(qū)188的數(shù)據(jù)的有效性從PE85發(fā)送BCU156,或者從BCU156發(fā)往PE85線路256a(圖16)上的PU至BCU的請(qǐng)求是由PE85用一條控制微指令進(jìn)行設(shè)置的。它通知BCU156從信箱188取出一條命令并執(zhí)行這條命令。該命令執(zhí)行后,該請(qǐng)求由BCU復(fù)位。BCU156當(dāng)在由PE85啟動(dòng)的一條命令執(zhí)行過(guò)程中出現(xiàn)問(wèn)題時(shí)或在其它情況下出現(xiàn)問(wèn)題時(shí)發(fā)生一次請(qǐng)求。如果不是有選擇地掩蔽起來(lái),就會(huì)引起PE85的異常。
適配器154使不同步的適配器通道0.1的傳遞速度與同步處理器總線170匹配。因此,BCU156就由適配器154中的64字節(jié)數(shù)據(jù)緩沖器259、260支持使數(shù)據(jù)分別往返于BCU156。該數(shù)組有一個(gè)4字節(jié)通向通道0.1的和通向處理器總線170的端口。
同步寄存器113、114的緩沖器數(shù)據(jù)在BCU156和緩沖器數(shù)組260、259之間傳遞??偩€接收和發(fā)送寄存器115和116分別存貯來(lái)自和送往處理器總線170的寄存器115和11116的數(shù)據(jù)。
一個(gè)存儲(chǔ)器操作(I/O數(shù)據(jù)存儲(chǔ)器、隊(duì)列操作)是由BCU156啟動(dòng)的,它通過(guò)通道1總線向適配器154發(fā)出命令/字節(jié)計(jì)數(shù)、保護(hù)鍵和存儲(chǔ)地址。命令/字節(jié)計(jì)數(shù)是在命令總線252(圖13)上收到的,它被存入命令寄存器125。鍵與地址數(shù)據(jù)是通過(guò)地址/數(shù)據(jù)總線251(圖13)從BCU156接收到的,并存入鍵/地址寄存器123。寄存器128中數(shù)組寫(xiě)與讀的地址指針設(shè)置在它們的起始值上。總線251上的數(shù)據(jù)傳遞數(shù)(每次兩個(gè)字節(jié))由字節(jié)計(jì)數(shù)決定。就一次存儲(chǔ)操作而言,最多可傳遞64個(gè)字節(jié)。一個(gè)存儲(chǔ)操作中任何字節(jié)的存儲(chǔ)地址不可超過(guò)64字節(jié)的地址界。
命令/地址后面來(lái)的是總線251上的數(shù)據(jù)周期。所有數(shù)據(jù)都收集在64字節(jié)緩沖器260中。從BCU156接收到最后一個(gè)數(shù)據(jù)后,適配器154首先完成兩個(gè)數(shù)據(jù)緩沖器259、260的內(nèi)部?jī)?yōu)先級(jí)檢查(未示出)然后請(qǐng)求使用處理器總線170的權(quán)利(未示出),此時(shí),適配器154具有最高請(qǐng)求優(yōu)先權(quán)。
在兩個(gè)緩沖器259、260同時(shí)請(qǐng)求傳輸時(shí),內(nèi)部?jī)?yōu)先級(jí)控制首先把總線170讓給緩沖器259,然后無(wú)爭(zhēng)議地讓給緩沖器260,即讀比寫(xiě)的優(yōu)先級(jí)高。
當(dāng)總線占用權(quán)利出讓時(shí),命令/字節(jié)計(jì)數(shù)、保護(hù)鍵以及起始地址傳輸?shù)礁咚倬彌_存儲(chǔ)器控制器153。命令傳輸周期后面跟著的是數(shù)據(jù)傳輸周期。
高速緩沖存儲(chǔ)器控制器153完成保護(hù)鍵檢查。鍵的損壞會(huì)以總線170狀態(tài)方式報(bào)告給適配器154。其它由高速緩沖存儲(chǔ)器控制器153和主存器162控測(cè)到的檢查條件都作為ANY-CHECK狀態(tài)進(jìn)行匯報(bào)。由適配器154探測(cè)到的鍵損壞和狀態(tài)條件將在一個(gè)狀態(tài)傳輸周期中送到BCU156。
可以有兩種適配器154探測(cè)到的狀態(tài)條件提供給BCU156。這兩種檢測(cè)條件都抑制了對(duì)存儲(chǔ)器162的訪問(wèn)。
從BCU156接收到的每一個(gè)主存地址都要與ACB寄存器中保留的地址比進(jìn)行比較從而決定是訪問(wèn)IOA187還是訪問(wèn)存儲(chǔ)器162的用戶區(qū)165。與每個(gè)命令一道從BCU156接收的“用戶”位決定本次主存訪問(wèn)是準(zhǔn)對(duì)IOA區(qū)187的還是準(zhǔn)對(duì)用戶區(qū)165的,并檢查是否是不適當(dāng)?shù)脑L問(wèn)。
緩沖器不能用(BNA)條件(如下所述)只是在隊(duì)列操作才可能出現(xiàn)。
讀操作(I/O讀取、信箱讀取)是由BCU156起動(dòng)的,其方式與存儲(chǔ)器操作基本上相同。只要從BCU156一收到命令/字節(jié)計(jì)數(shù)、保護(hù)鍵和地址,就執(zhí)行適配器154內(nèi)容優(yōu)先級(jí)檢查并請(qǐng)求處理器總線170的占用權(quán)。如果得到總線占用權(quán),命令/字節(jié)計(jì)數(shù)、保護(hù)鍵和主存開(kāi)始地址就被傳送到高速緩沖存儲(chǔ)器控制器153從而起動(dòng)讀周期。適配器154首先把請(qǐng)求的數(shù)據(jù)裝入其緩沖器259,然后根據(jù)總線250的請(qǐng)求送到BCU156。隨著每個(gè)數(shù)據(jù)的傳輸報(bào)告狀態(tài)情況。
存儲(chǔ)操作的狀態(tài)條件和報(bào)告機(jī)構(gòu)適用于讀操作。
PE85可通過(guò)總線170,利用判斷(讀)和控制(寫(xiě))操作訪問(wèn)適配器154的大多數(shù)寄存器。
對(duì)于判斷操作,該命令被傳輸?shù)竭m配154并鎖存于寄存器129中。下一周期,根據(jù)該命令選取判定多路轉(zhuǎn)接器126;并把該命令裝載到BSR116中,使所期望的數(shù)據(jù)在后面的總線170周期內(nèi)變成有效。
如果發(fā)現(xiàn)要判斷的寄存器上有一個(gè)內(nèi)部奇偶錯(cuò)誤,則適配器154把有正確奇偶性的數(shù)據(jù)送回PE85,但它在鍵/狀態(tài)總線上提出一個(gè)檢查條件。這一功能可以用特定的判定代碼指針來(lái)檢驗(yàn)。
對(duì)于控制操作,總線170命令后面跟著數(shù)據(jù),該數(shù)據(jù)在下一周期被裝入目標(biāo)寄存器。
如果在判讀和控制操作的命令周期內(nèi)或在控制操作的數(shù)據(jù)周期內(nèi),在總線170上發(fā)現(xiàn)了奇偶錯(cuò)誤,則適配器強(qiáng)制進(jìn)行一次時(shí)鐘停止。
變址寄存器110含有用于隊(duì)列和信箱尋址的基地址以及隊(duì)列長(zhǎng)度代碼。隊(duì)列首址為基信箱區(qū)+隊(duì)列長(zhǎng)度所得到的基本地址。
RPNTR和WPNTR寄存器111和112含有基地址對(duì)下一個(gè)要對(duì)其進(jìn)行讀或?qū)懺L問(wèn)的隊(duì)列項(xiàng)的偏移。
在判定成功的情況下,讀指針與寫(xiě)指針通過(guò)適配器154中的判定多路轉(zhuǎn)接器與基地址結(jié)合。因此,通過(guò)判定操作返回的字就是要訪問(wèn)的下一個(gè)隊(duì)列項(xiàng)的完整地址。
I/O狀態(tài)寄存器包含下列位(未包括不在此描述的其它位)任何校驗(yàn)(位0)如果在CISR<0…24>中有任何校驗(yàn)條件及對(duì)應(yīng)的CHER一位為1,則任何校驗(yàn)(位0)置1。任何校驗(yàn)(Any Check)產(chǎn)生ATTN-REQ信號(hào)。如果MODE-REQ<1>=1,則Clock-Stop-Diana信號(hào)起動(dòng)。
BNA發(fā)送(位6)--當(dāng)BCU156要把一個(gè)收到的信息儲(chǔ)存到隊(duì)列卻已滿時(shí),即RPNTR等于WPNTR+16時(shí),緩沖器不能用(BNA)位置1。該位只能通過(guò)向CW寄存器120的第6位寫(xiě)入一個(gè)1才可復(fù)位。
隊(duì)列不空(位7)。如果RPNTR不等于WPNTR則此位是1。當(dāng)RPNTR=WPNTR,它是0。這是用來(lái)通知處理器80收到一條新信息的裝置。
BCU對(duì)PU的請(qǐng)求(位10和14)--它們是由BCU156通過(guò)“BCU對(duì)PU的請(qǐng)求”線256c上的信號(hào)對(duì)通道0和1進(jìn)行設(shè)置的。位10和14是由85復(fù)位的,在線256d上產(chǎn)生一條對(duì)通道0和1的確認(rèn)信息。
PU對(duì)BCU的請(qǐng)求(位11)--由PE85在線256a上通過(guò)對(duì)通道0設(shè)置CW寄存器120的位11以及通過(guò)對(duì)通道1設(shè)置CW寄存器120的位15進(jìn)行置位的。
BCU掉電(位B)--當(dāng)?shù)綦姇r(shí)或出現(xiàn)“電源復(fù)位”時(shí),由BCU156使該位置1。如果CW寄存器120的“BCU掉電復(fù)位”位被寫(xiě)入1,或BCU不再處于掉電狀態(tài)時(shí),它復(fù)位成0。
允許仲裁(位29)--如果適配器模式寄存器的位3不起作用,則該位發(fā)出通道總線的“允許仲載”信號(hào)。
客戶訪問(wèn)位,這是從BCU156收到的命令/地址的一部分,它決定存儲(chǔ)器訪問(wèn)是在IOA中進(jìn)行還是在用戶存儲(chǔ)區(qū)進(jìn)行。如果客戶訪問(wèn)位是0,則存儲(chǔ)器訪問(wèn)的頁(yè)地址只能在IOA區(qū)187內(nèi)。對(duì)這些訪問(wèn)將不用進(jìn)行鍵校驗(yàn),因此,適配器硬件令鍵為零(與所有鍵項(xiàng)匹配)。
如果客戶訪問(wèn)位是“1”,則存儲(chǔ)器訪問(wèn)的頁(yè)地址只能是在用戶存儲(chǔ)區(qū)165內(nèi)。否則會(huì)對(duì)此訪問(wèn)產(chǎn)生一次ACB校驗(yàn)條件。
PE85利用消息命令(Message Commands)讀(判定)或?qū)?控制)適配器154的寄存器。
這些命令的格式如下位0-7CMD=命令型8-11SRC=請(qǐng)求總線單元地址12-15DST=接收總線單元地址16-23MSG=在Cmd周期中要傳遞數(shù)據(jù)24-27REG1=控制命令的寄存器號(hào)
28-31REG2=判斷命令的寄存器號(hào)關(guān)于PU-BCU接口的DST字段是X“81”。適配器154由于不存在關(guān)于命令執(zhí)行的信息將不對(duì)SRC和MSG解碼。在控制與判定操作過(guò)程中,Reg1和Reg2位將分別定義要寫(xiě)入與讀出的適配器154中的寄存器。
2.I/O適配器通道0與通道1總線(圖16)適配器通道0和適配器通道1是從I/O適配器154到總線控制單元的高速互連(通道”。
通道0包括地址/數(shù)據(jù)總線250(位0-16、P0、P1)命令/狀態(tài)總線249(位0-3、P)上升標(biāo)志(BCU對(duì)緩沖器)線262a下降標(biāo)志(緩沖器對(duì)BCU)線262bPU對(duì)BCU的請(qǐng)求線256aBCU對(duì)PU的應(yīng)答線256b通道1包括一條地址/數(shù)據(jù)總線251、一條命令/狀態(tài)總線2252和上升標(biāo)志與下降標(biāo)志線262c和262d。
通道0用于從S/370存儲(chǔ)器162(和PE85)到BCU156的數(shù)據(jù)傳輸,通道1用于從BCU156到存儲(chǔ)器162(和PE85)的數(shù)據(jù)傳輸。
通道總線249、250、251和252始于適配器154,適配器154實(shí)際上是一對(duì)帶有控制邏輯電路的各自能夠存入64個(gè)字節(jié)數(shù)據(jù)的數(shù)據(jù)緩沖器??偩€終止在BCU156中。I/O適配器154的作用是進(jìn)行全字格式(32位)的S/370內(nèi)部處理器總線170與半字格式(16位)較慢的總線249-252之間的速度匹配。
每條通道由兩部分構(gòu)成兩個(gè)字節(jié)寬(半字)的數(shù)據(jù)總線(250251)和半個(gè)字節(jié)寬(4位)的命令/狀態(tài)總線(249、252)。標(biāo)志信號(hào)通過(guò)請(qǐng)求/響應(yīng)和特定信號(hào)提供了控制上述操作的機(jī)構(gòu)。
各通道的數(shù)據(jù)傳輸總是在兩個(gè)周期內(nèi)進(jìn)行的(在兩個(gè)字節(jié)的總線上傳輸4個(gè)字節(jié))。邏輯上,所有的數(shù)據(jù)傳輸都是在S/370主存儲(chǔ)器162與包括BCU156的I/O子系統(tǒng)之間進(jìn)行的。BCU156是主體,即一旦PE85發(fā)出需要傳輸?shù)男盘?hào),它就起動(dòng)所有傳輸操作。
在一個(gè)選擇周期內(nèi),命令狀態(tài)總線(249、252)被用來(lái)定義傳輸方向(提取/存入),和傳輸數(shù)據(jù)量。在選擇周期內(nèi),地址/數(shù)據(jù)總線(250、251)的作用是傳輸主存儲(chǔ)器地址,而在實(shí)際傳輸周期過(guò)程中,才用來(lái)發(fā)送數(shù)據(jù)。它還被用來(lái)指示存儲(chǔ)器162中稱為“信箱”和“報(bào)文隊(duì)列)的特定區(qū)域188、189。這些區(qū)域可使PE85與BCU156交換某些信息。
在(從存儲(chǔ)器162)作取操作過(guò)程中,狀態(tài)與總線250上的數(shù)據(jù)的前兩個(gè)字節(jié)一道通過(guò)命令/狀態(tài)總線249進(jìn)行傳輸。該狀態(tài)指示地址校驗(yàn)、鍵校驗(yàn)等,也可能為零,表示操作成功。
如果在進(jìn)行一次存入(到存儲(chǔ)器162中)操作,在所有數(shù)據(jù)都被發(fā)往主存儲(chǔ)器162后,會(huì)跟隨產(chǎn)生一個(gè)狀態(tài)周期。
圖14A和14B分別表示在提取與存儲(chǔ)操作的子周期1和子周期2內(nèi),總線部分的邏輯用途,其中
aaa… 數(shù)據(jù)字段的第一字節(jié)(最左側(cè)的)地址。
A: 1=地址校驗(yàn)B: 1=緩沖器不能用C: 1表示用戶存儲(chǔ)器(165)訪問(wèn),0表示微代碼訪問(wèn)(IOA187)ddd… 往返存儲(chǔ)器的四字節(jié)數(shù)據(jù)fff… 以字節(jié)為單位的字段長(zhǎng)度減1 (十進(jìn)制0…63)kkkk 存儲(chǔ)鍵(十進(jìn)制0…15)K1=鍵校驗(yàn)ooooo 在32字節(jié)的信箱區(qū)內(nèi)的偏移。
pp 優(yōu)先級(jí)(0…3,最高是3)… 無(wú)關(guān)緊要部分///總線是浮動(dòng)的(未定義的)in 輸入(BCU對(duì)緩沖器)sut輸出(緩沖器對(duì)BCU)下述標(biāo)志線用于數(shù)據(jù)的傳輸操作1.從總線適配器154至BCU156的PU對(duì)BCU的請(qǐng)求線256a被PE85用來(lái)指示對(duì)I/O操作的要求。一旦設(shè)置后,該信號(hào)始終保持有效直至BCU156將它復(fù)位。
2.從BCU156到適配器154的上升標(biāo)志線262用來(lái)向適配器154請(qǐng)求輸出數(shù)據(jù)或用來(lái)指示總線上的輸入數(shù)據(jù)可以使用。上行標(biāo)志線2620的功能與上述類似。
3.從適配器154至BCU156的下標(biāo)志線262b,在BCU暫時(shí)缺乏數(shù)據(jù)的情況下被用來(lái)指示暫時(shí)缺乏BCU的數(shù)據(jù)。下行標(biāo)志的下降沿則可指示總線上的輸出數(shù)據(jù)可以使用。下行標(biāo)志線262d的功能相同。
4.從BCU156至適配器154的BCU至PU確認(rèn)線256b被用來(lái)使PU至BCU的請(qǐng)求信號(hào)復(fù)位。當(dāng)完成了一次I/O信箱操作時(shí)進(jìn)行這種復(fù)位。
當(dāng)PE85在指令流中發(fā)現(xiàn)一個(gè)起動(dòng)I/O指令流中發(fā)現(xiàn)一個(gè)起動(dòng)I/O指令(SIO)時(shí),它通過(guò)啟動(dòng)“PU至BCU請(qǐng)求”線2256a提醒I/O子系統(tǒng)(即BCU156)需要進(jìn)行一次I/O操作。這一標(biāo)志引起B(yǎng)CU查看存儲(chǔ)器162中的“信箱”188,了解這次操作是取還是存、了解有多少字節(jié)要傳輸?shù)?。信箱?shí)際上含有有關(guān)I/O操作的通道SIO、CUA、CAW以及命令字(CCW)。
存儲(chǔ)器操作一般是由BCU156向PE85發(fā)送數(shù)據(jù)。這種““數(shù)據(jù)”或者是在選擇周期中發(fā)生的命令/鍵/地址,或者是準(zhǔn)備存入主存儲(chǔ)器162的真正的I/O數(shù)據(jù)。對(duì)于這兩種情況,過(guò)程是一樣的。
圖15A-0以一種概括的方式表示出如下所述的適配器154與BCU156中的32位緩沖器/寄存器對(duì)數(shù)據(jù)和狀態(tài)信息進(jìn)行選通的方法,其中該信息的較高位(左側(cè))和較低位(右側(cè))放在適配器154的18位的通道0,1總線上。
圖25和26提供了BCU156與適配器154之間數(shù)據(jù)傳輸?shù)囊唤M具體信號(hào)。
隨著一個(gè)存儲(chǔ)器操作期間BCU時(shí)鐘周期的開(kāi)始,(見(jiàn)圖15A),BCU156在第一周期內(nèi)把數(shù)據(jù)放到總線251上。如果這是一個(gè)主存儲(chǔ)器數(shù)據(jù)操作的選擇周期,則將一個(gè)命令、一個(gè)字節(jié)計(jì)數(shù)一個(gè)訪問(wèn)鍵和主存儲(chǔ)器地址的第一個(gè)字節(jié)分別放在命令/狀態(tài)總線252和地址/數(shù)據(jù)總線251上。如果這是一個(gè)信箱查找的選擇周期,則不用安置主存儲(chǔ)器地址,因?yàn)樵撁钪甘镜男畔湮挥谝粋€(gè)固定的位置。這第一子周期在總線上保持兩個(gè)子周期的有效時(shí)間。
在一個(gè)選擇周期內(nèi)把數(shù)據(jù)放置到總線251之后的一個(gè)BCU時(shí)鐘周期內(nèi),BCU156抬高“上行標(biāo)志”信號(hào)線。上行標(biāo)志線262a使適配器154存入寄存器113左半側(cè)的前面兩個(gè)字節(jié)。隨著下一個(gè)時(shí)鐘周期的開(kāi)始,BCU156在下一個(gè)子周期將數(shù)數(shù)據(jù)(后面的兩個(gè)字節(jié))放置到地址/數(shù)據(jù)總線251上,從而存入適配器的寄存器113的另一半。這一數(shù)據(jù)或者是主存儲(chǔ)器地址的剩余部分,或者是一個(gè)偏移量(如果這一步是屬于一個(gè)信箱查找選擇周期期)。BCU156將后面兩個(gè)字節(jié)保持三個(gè)BCU時(shí)鐘周期,然后降下“上行標(biāo)志”信號(hào)。
取操作通常是這樣一些操作即BCU156從主存儲(chǔ)器數(shù)據(jù)空間162、從主存儲(chǔ)器162中的微代碼區(qū)、或從信箱及報(bào)文隊(duì)列索取數(shù)據(jù)。在任何情況下,一個(gè)選擇周期指示適配器154的邏輯電路必須執(zhí)行這一操作,即優(yōu)先進(jìn)行這樣一種提取操作。選擇周期是以類似于存儲(chǔ)器操作的方法,用總線252把命令/鍵/地址放到總線249上來(lái)進(jìn)行工作的,除非在命令/狀態(tài)總線249上的命令是一條“提取”命令。
隨著下一個(gè)時(shí)鐘周期的開(kāi)始(在完成選擇周期以后)BCU156發(fā)出“上行標(biāo)志”信號(hào)并保持三個(gè)BCU時(shí)鐘周期(圖15B)。上行標(biāo)志從緩沖器索取數(shù)據(jù)。如果緩沖器能夠發(fā)送數(shù)據(jù),則在一個(gè)周期后將可得到數(shù)據(jù)。由于該操作是半同步的,BCU156設(shè)定數(shù)據(jù)的前兩個(gè)字節(jié)在總線上有效地保持兩個(gè)周期,然后有一個(gè)周期的轉(zhuǎn)換時(shí)間,此后數(shù)據(jù)的后兩個(gè)字節(jié)可以選通到BCU156上。
然而,在有些情況下,適配器154在上行標(biāo)志出現(xiàn)那一時(shí)刻沒(méi)有可用的數(shù)據(jù)。這種情況典型地發(fā)生在一個(gè)“最初的”數(shù)據(jù)提取過(guò)程中,即當(dāng)從一個(gè)新地址提取數(shù)據(jù)時(shí),要花費(fèi)一定時(shí)間等提取請(qǐng)求先經(jīng)過(guò)高速緩沖存儲(chǔ)器153和存儲(chǔ)控制器155處理,然后返回適配器154。在主存儲(chǔ)器162中再試一次可能會(huì)引起暫時(shí)延遲。
一旦當(dāng)適配器154不能發(fā)送數(shù)據(jù)(圖15C)時(shí),只要發(fā)現(xiàn)““上升標(biāo)志”就產(chǎn)生“下降標(biāo)志”。BCU156應(yīng)當(dāng)在發(fā)生“上行標(biāo)志”后不遲于五個(gè)周期的時(shí)間內(nèi)采集到“下行標(biāo)志”。
適配器154保持“下升標(biāo)志”狀態(tài)直至得到第一個(gè)數(shù)據(jù)字(四個(gè)字節(jié))。在這時(shí)刻,適配器將前兩個(gè)字節(jié)送到總線250上并降下“下行標(biāo)志”?!跋陆禈?biāo)志”信號(hào)的下降沿觸發(fā)BCU的邏輯電路253。
BCU156設(shè)定,隨著“下行標(biāo)志”的下降,前面的字節(jié)在兩個(gè)周期內(nèi)有效。此后可使用后兩個(gè)字節(jié)。根據(jù)在選擇周期內(nèi)設(shè)定的計(jì)數(shù),最多可接收60字節(jié),每次兩個(gè)字節(jié)。
當(dāng)在選擇周期中預(yù)定好的所有信箱數(shù)據(jù)都收到后,BCU156在線256b上對(duì)適配器154發(fā)出“BCU對(duì)PU確認(rèn)”信號(hào),以使線256a上的PU對(duì)BCU的起動(dòng)上述操作的請(qǐng)求復(fù)位。
PE85與BCU156之間多數(shù)信息的傳輸都是用存貯在適配器154的基寄存器110中的基地址和隊(duì)列長(zhǎng)度通過(guò)預(yù)先定義的存儲(chǔ)器單元188、189來(lái)完成的。入口端的信息隊(duì)列189存貯所有由BCU按先后順序發(fā)送來(lái)的信息。
3.總線控制單元156--一般描述(圖16、17)總線控制單元(BCU)156是S/370處理器86與被用來(lái)執(zhí)行S/370I/O操作的S/88處理器62之間的主要連接硬件。
BCU156包括一種與應(yīng)用程序(EXEC370)和在S/88處理器上運(yùn)行的微代碼(ETIO)相互連接的裝置,它對(duì)處理器62提供中斷、司步地把處理器62與有關(guān)硬件斷開(kāi)、把處理器62與BCU156接通、所有這些對(duì)S/88操作系統(tǒng)來(lái)說(shuō)都是透明的。這種透明的中斷與斷開(kāi)功能被用來(lái)使S/370與S/88的處理器直接耦合,從而高效率地從S/370處理器85向S/88處理器62傳輸S/370的I/O命令和數(shù)據(jù),使這種命令和數(shù)據(jù)轉(zhuǎn)換成一種S/88處理器62可用的形式,完成所要求的S/370I/O操作。
應(yīng)當(dāng)明確,EXEC370和ETIO既可以是微代碼也可以是應(yīng)用程序,既可以存放在寄存儲(chǔ)器174中也可以存放在高速緩沖存儲(chǔ)器173中。
BCU156,如圖16,包括總線控制單元接口邏輯電路和寄存器205、一個(gè)直接存儲(chǔ)器訪問(wèn)控制器(DMAC)209和一個(gè)局部存儲(chǔ)器210。局部地址與數(shù)據(jù)總線247、223將存儲(chǔ)器210經(jīng)過(guò)驅(qū)動(dòng)器/接收器電路217、218連接到PE62的地址、數(shù)據(jù)總線161A、161D上,并連接到接口邏輯電路205上。 DMAC209通過(guò)鎖存器233連接地址總線247,并通過(guò)驅(qū)動(dòng)器/接收器234連接數(shù)據(jù)總線223。
優(yōu)選實(shí)施例中的DMAC209是一個(gè)68450DMA控制器下面將對(duì)該控制器給予更詳細(xì)的介紹。
DMAC209具有四個(gè)通道0-3,它們通過(guò)各自的請(qǐng)求和確認(rèn)路徑連接接口邏輯電路205(圖17),每條通道實(shí)現(xiàn)一種特定功能,通道0把S/370存儲(chǔ)器162中的一個(gè)信箱區(qū)188(圖28)中的S/370I/O命令傳輸?shù)骄植看鎯?chǔ)器210(MAILBOX READ)。通道1從存儲(chǔ)器162向存儲(chǔ)器210(S/370I/O WRITE)傳輸S/370數(shù)據(jù)。通道2從存儲(chǔ)器210向存儲(chǔ)器162(S/370I/ORead)傳輸數(shù)據(jù)。通道3從存儲(chǔ)器210向存儲(chǔ)器162中的一個(gè)信息隊(duì)列區(qū)189(圖28)(Q信息WRITE)傳輸高優(yōu)先級(jí)的S/88信息。
總線適配器154有兩個(gè)通道0和1。適配器通道0處理DMAC通道0、1的MAILBOX READ和S/370I/O WRITE功能(即從S/370到BCU156的數(shù)據(jù)流)。適配器通道1處理DMAC通道2、3的S/370I/OREAD和Q MESSAGEWRITE功能(即從BCU156到S/370的數(shù)據(jù)流)。
4.直接存儲(chǔ)器的訪問(wèn)控制器109DMAC209最好是用M68000系列的參考手冊(cè)(FR68K/D,Motorola版權(quán),1988)中所述的那種類型。所述的手冊(cè)納入此處的參考材料以保證這里的完整性。DMAC209通過(guò)一種快捷、高效率的方式和盡量減少處理器的干與的辦法來(lái)傳送數(shù)據(jù)塊,以此來(lái)彌補(bǔ)Motorola的M68000列微處理器(如本申請(qǐng)中的M68020處理器部件62)的性能和體系結(jié)構(gòu)的能力。DMAC209執(zhí)行內(nèi)存至回存、回存至設(shè)備、及設(shè)備至內(nèi)存的數(shù)據(jù)傳輸。
它包括四個(gè)帶有可編程優(yōu)先級(jí)的獨(dú)立DMA通道并使用帶有一個(gè)24位地址和16位數(shù)據(jù)的同步M68000總線結(jié)構(gòu)。它可進(jìn)行隱式尋址和顯示尋址。
任何一個(gè)系統(tǒng)中類似209這樣的一個(gè)DMAC的主要用途在于它能極其快地傳輸數(shù)據(jù),通常遠(yuǎn)遠(yuǎn)快于軟件所能控制的微處理器的速度。直接存儲(chǔ)器訪問(wèn)(DMA)這一術(shù)語(yǔ)用來(lái)稱呼一個(gè)外部設(shè)備以與一個(gè)微處理器相同的方式訪問(wèn)一個(gè)系統(tǒng)內(nèi)存的能力。本申請(qǐng)中內(nèi)存就是局部存儲(chǔ)器210。DMA操作可以與系統(tǒng)所需要完成的其它操作同時(shí)出現(xiàn),這樣就大大促進(jìn)了整個(gè)系統(tǒng)的性能。
DMAC209以接近局部總線223的極限速度傳送數(shù)據(jù)塊。一個(gè)數(shù)據(jù)塊由一系列起始于某特定存儲(chǔ)地址的字節(jié)、字或長(zhǎng)字操作數(shù)組成,它帶有一個(gè)由傳輸計(jì)數(shù)電路決定的數(shù)據(jù)塊長(zhǎng)度。單個(gè)通道的操作可以涉及往返于存儲(chǔ)器210的數(shù)個(gè)數(shù)據(jù)塊的傳輸。
涉及DMAC209的任何操作都將遵循同樣的基本步驟由PE62進(jìn)行的通道初始化、數(shù)據(jù)傳輸、和塊結(jié)束。在初始化階段,處理器PE62為DMAC寄存器裝入控制信息、地址指針和傳輸計(jì)數(shù),然后起動(dòng)該通道。在傳輸階段,DMAC209接受操作數(shù)傳輸請(qǐng)求并為這次傳輸進(jìn)行尋址和提供總線控制。終止階端出現(xiàn)在操作完成以后,這時(shí)DMAC指示出狀態(tài)寄存器CSR中的操作狀態(tài)。在一個(gè)數(shù)據(jù)傳輸操作的所有階段中,DMAC209將處于三種操作模式之一1.IDLE--這是一種當(dāng)DMAC209由一外部設(shè)備復(fù)位并等待系統(tǒng)處理器62做初始化工作時(shí)或者是有一個(gè)外設(shè)發(fā)來(lái)的操作數(shù)傳輸請(qǐng)求時(shí),DMAC209所處的狀態(tài)。
2.MPU--這是一種當(dāng)DMAC209被系統(tǒng)的另一個(gè)總線的主人(通常是主系統(tǒng)處理器62)選為芯片時(shí),它所進(jìn)入的狀態(tài)。在這種模式下,DMAC的內(nèi)部寄存器被讀出或?qū)懭?,從而控制通道操作或校?yàn)塊傳輸?shù)臓顟B(tài)。
3.DMA--這是一種當(dāng)DMAC209作為總線主人完成操作數(shù)傳輸時(shí)所進(jìn)入的狀態(tài)。
DMAC可進(jìn)行隱地址或顯地址數(shù)據(jù)傳輸。顯傳輸把數(shù)據(jù)從數(shù)據(jù)源送到一個(gè)內(nèi)部DMAC緩沖寄存器中,然后在下一個(gè)總線周期把它從緩沖寄存器送到目的地。隱傳輸只需要一個(gè)總線周期,因?yàn)樗褦?shù)據(jù)從數(shù)據(jù)源直接送到目的地,不需要內(nèi)部DMAC緩沖。
通道操作有三種類型1)單塊傳輸,2)連續(xù)操作,和3)鏈接操作。傳輸單塊數(shù)據(jù)時(shí),用戶預(yù)置主存地址和設(shè)備地址寄存器MAR和DAR,指出傳輸源和目的地。同時(shí)預(yù)置主存?zhèn)鬏斢?jì)數(shù)寄存器以統(tǒng)計(jì)一塊中被傳輸?shù)牟僮鲾?shù)的個(gè)數(shù)。
有兩種鏈接方式,數(shù)組鏈接和鏈數(shù)組鏈接。數(shù)組鏈接方式是根據(jù)存貯器210中的一個(gè)連續(xù)數(shù)組來(lái)操作的,其中存貯器210由主存地址和傳輸計(jì)數(shù)組成?;刂芳拇嫫鰾AR和基傳輸計(jì)數(shù)寄存器BTC經(jīng)初始化后分別指向數(shù)組的初始地址和數(shù)組的項(xiàng)數(shù)。當(dāng)每一塊傳輸完成時(shí),從這個(gè)數(shù)組中取出下一項(xiàng),基傳輸計(jì)數(shù)減少并且基地址增加以指向下一個(gè)數(shù)組項(xiàng)。當(dāng)基傳輸計(jì)數(shù)為0時(shí),所取到的入口是數(shù)組定義的最后一塊傳輸。
鏈數(shù)組鏈接方式和數(shù)組鏈接方式類似,只是主存數(shù)組中的每一項(xiàng)還包含指向數(shù)組下一項(xiàng)的鏈地址。這就允許主存數(shù)組是非連續(xù)的。最后一項(xiàng)所包含的鏈地址設(shè)置為0。這種方式不需要基傳輸計(jì)數(shù)寄存器BTC?;刂芳拇嫫鰾AR初始化為數(shù)組中第一項(xiàng)的地址。在每塊傳輸開(kāi)始時(shí)用鏈地址修改基地寄存器。這種鏈接方式不需要重新對(duì)數(shù)組排序,可以較容易地移動(dòng)和插入數(shù)組項(xiàng)。同時(shí),數(shù)組中的項(xiàng)數(shù)也不需要向DMAC209說(shuō)明。在本申請(qǐng)中,DMAC209以將在下面詳細(xì)描述的方式應(yīng)用這種尋址方法從鏈表中存取自由工作隊(duì)列塊(WQB)。
DMAC209將在幾個(gè)事件(如,DMA操作完畢,或申請(qǐng)使用PCL線路57a-d的設(shè)備)發(fā)生時(shí)中斷PE62。DMAC209保存有芯片上的八個(gè)向量寄存器中的中斷向量供PE62的向量化的中斷結(jié)構(gòu)使用。每個(gè)通道都可使用兩個(gè)向量寄存器。一個(gè)正常中斷向量(NIV)寄存器,另一個(gè)是錯(cuò)誤中斷向量(EIV)寄存器。
每個(gè)通道都指定了優(yōu)先級(jí)0,1,2或3,通道0,1,2,3分別指定優(yōu)先級(jí)為0,2,2,1(優(yōu)先級(jí)0為最高)。
或由設(shè)備從外部生成請(qǐng)求,或由DMAC209的自動(dòng)請(qǐng)求機(jī)制從內(nèi)部生成請(qǐng)求。自動(dòng)請(qǐng)求可以以最大速率(此時(shí)通道總是有請(qǐng)求等待)生成,也可以以有限速率生成,這個(gè)速率根據(jù)DMA活動(dòng)可以使用的一段總線帶寬來(lái)確定。外部請(qǐng)求可以是猝發(fā)請(qǐng)求,也可以是由與每個(gè)通道相聯(lián)的請(qǐng)求信號(hào)生成的周期竊取請(qǐng)求。
對(duì)四個(gè)通道中的每一個(gè)通道,DMAC209都包含17個(gè)寄存器(圖18)加上一個(gè)總控寄存器GCR,所有這些寄存器都在軟件控制下。
DMAC包含有關(guān)數(shù)據(jù)傳輸?shù)男畔?,如源地址和目的地址以及功能碼,傳輸計(jì)數(shù),操作數(shù)大小,設(shè)備進(jìn)出口大小,通道優(yōu)先級(jí),連續(xù)地址及傳輸計(jì)數(shù),以外設(shè)控制線路的功能。一個(gè)寄存器CSR也提供有關(guān)通道活動(dòng),外設(shè)輸入,以及DMA傳輸期間可能發(fā)生的各種事件的狀態(tài)和錯(cuò)誤信息??偪丶拇嫫鱃CR挑選用于有限速率自動(dòng)請(qǐng)求DMA操作的總線實(shí)用因子。
輸入和輸出信號(hào)按如下所述方法在功能上分為幾組(參見(jiàn)圖19A)。
地址/數(shù)據(jù)總線(A8-A23,D0-D15)248是16位總線,它在DMA操作方式期間是按時(shí)間多路轉(zhuǎn)接的以提供地址輸出,并且可用作為一條雙向數(shù)據(jù)總線從外設(shè)輸入數(shù)據(jù)(在PE62寫(xiě)或DMAC讀期間)或向外設(shè)輸出數(shù)據(jù)(在PE62讀或DMAC寫(xiě)期間)。這是一個(gè)三態(tài)總線,利用由多路控制線OWN及DDIR所控制的外部鎖存器和緩沖器233,234可以抑制此總線的多路轉(zhuǎn)接。
經(jīng)過(guò)總線247的A7的低地址總線線路A1是雙向三態(tài)線路,在MPU方式中它們被用來(lái)為DMAC內(nèi)部寄存器尋址,在DMA方式中提供七種低地址輸出。
經(jīng)FC2的功能碼線路FC0是三態(tài)輸出線路,在DMA方式下被用來(lái)進(jìn)一步限定地址總線247上的值以提供分離的地址空間,這些地址空間可能是用戶定義的。置于這些線路上的值是從內(nèi)部功能碼寄存器MFC,DFC,BFC中之一獲得的,究竟從哪一個(gè)功能碼寄存器中獲得將取決于在DMA總線周期內(nèi)提供地址的是哪一個(gè)寄存器。
異步總線控制線路用下列控制信號(hào)控制異步數(shù)據(jù)傳輸選擇地址選通信號(hào)讀/寫(xiě),高位數(shù)據(jù)和低位數(shù)據(jù)選通信號(hào),以及數(shù)據(jù)傳輸確認(rèn)。這些信號(hào)在以下各段中描述。
SELECT輸入線路296用來(lái)在MPU總線周期內(nèi)選擇DMAC209。一旦肯定,A1-A7上的地址和數(shù)據(jù)選通信號(hào)(或AO,在用8位總線時(shí))選擇將要涉及傳輸?shù)膬?nèi)部DMAC寄存器,應(yīng)當(dāng)根據(jù)帶有地址和數(shù)據(jù)選通信號(hào)的地址解碼信號(hào)的身份來(lái)生成SELECSELECT。
線路270b上的AIDRESS STROBE(AS)是一雙向信號(hào)用作DMA方式下的輸出以指出有效的地址在地址總線161上出現(xiàn)。在MPU或IDLE方式下,它被作為輸入以確定DMAC何時(shí)可以控制總線(如果已請(qǐng)求DMAC并且允許用這條總線)。
READ/WRITE是一個(gè)雙向信號(hào)(沒(méi)有畫(huà)出),用來(lái)指出在總線周期內(nèi)數(shù)據(jù)傳輸?shù)姆较?。在MPU方式下,高位表明傳輸是從DMAC209到數(shù)據(jù)總線223,低位表明傳輸是從數(shù)據(jù)總線到DMAC209。在DMAC方式下,高位表明傳輸是從尋址存貯器210到數(shù)據(jù)總線223低位表明傳輸是從數(shù)據(jù)總線223到尋址存貯器210。
UPPER AND LOWER DATA STROBE是雙向線路(沒(méi)有畫(huà)出),它指出總線上的有效數(shù)據(jù)以及總線的那一部分應(yīng)卷入傳輸DB-15或DO-7。
DATA TRANSFER ACKNOWLEDGE(DTACK)雙向線路265用來(lái)發(fā)出一個(gè)異步總線周期可以結(jié)束的信號(hào)。在MPU方式下,這個(gè)輸出表明DMAC已經(jīng)從PE62處獲得數(shù)據(jù)或已經(jīng)把PE62的數(shù)據(jù)送到總線。在DMA方式下,這個(gè)輸入265由DMAC監(jiān)控以確定何時(shí)結(jié)束總線周期。只要DTACK265為否定,DMAC都要在總線周期中插入等待周期,當(dāng)DTACK265為肯定時(shí),總線周期將結(jié)束(除了PCL257用作就緒信號(hào)時(shí),在這種情形里,周期結(jié)束前,兩種信號(hào)都必須為肯定)。
線路OWN和DDIR上的多路控制信號(hào)用來(lái)控制外部多路/多路分配設(shè)備233,234以分離總線248上的地址和數(shù)據(jù)信息,并且在DMAC總線周期內(nèi)用來(lái)在數(shù)據(jù)總線223的高位和低位間傳輸數(shù)據(jù)。OWN是一個(gè)輸出,表明DMAC209正在控制總線。它被用作允許信號(hào)以打開(kāi)外部地址驅(qū)動(dòng)器和控制信號(hào)緩沖器。
BUS REQUEST(BR)線路269是由DMAC首肯的輸出以請(qǐng)求局部總線223,247的控制。
BUSGRANT(BG)線路268是由外部總線仲裁程序16首肯的輸入以通知DMAC,一旦當(dāng)前總線周期結(jié)束,它就可以占用總線。
線路258a和258b上的兩個(gè)中斷控制信號(hào)IRG和IACK用PE62線經(jīng)中斷邏輯線路212形成中斷請(qǐng)求/確認(rèn)符號(hào)交換序列。線路258a上的INTERRUPT REQUEST(IRQ)是一由DMAC209首肯的輸出以請(qǐng)求來(lái)自PE62的服務(wù)。線路258b上的INTERRUPT ACKNOWLEDGE(IACK)由PE62經(jīng)邏輯線路216首肯以確認(rèn)已從DMA0209接收到一個(gè)中斷。為響應(yīng)IACK的首肯,DMAC將在總線223的D0-D7上放一PE62將要用的向量以獲取適當(dāng)?shù)腄MAC中斷處理程序的地址。
設(shè)備控制線DMAC209和與四個(gè)DMAC通道相聯(lián)的設(shè)備之間的接口。四組三條線為一個(gè)DMAC通道以及它的有關(guān)外設(shè)服務(wù);其余線路為所有通道共享的全局信號(hào)。
線路263a-d上的PEQUEST(REQO THROUGHREQ3)輸入由邏輯線路253首肯以請(qǐng)求主存貯器162和存貯器210之間的操作數(shù)傳輸。
線路257a-d上的ACKNOWLEDGE(ACKOTHROUGH AOK3)由DMAC209首肯以發(fā)出操作數(shù)正在傳輸?shù)男盘?hào)來(lái)響應(yīng)前面的傳輸請(qǐng)求。
PERI PRERAL CONTROL LINES(PCLO TROUGHPCL3)257a-d所包含的是接口邏輯線路253與DMAC209之間的雙向線路,它們被設(shè)置為就緒,取消,重載,狀態(tài),中斷,或允許時(shí)鐘輸入,或作為開(kāi)始脈沖輸出。
DATA TRANSFER COMPLETE(DTC)線路267是由DMAC209在任何DMAC總線周期內(nèi)首肯的輸出,表示數(shù)據(jù)已被成功地傳輸完畢。
DONE(DONE)。這個(gè)雙向信號(hào)由DMAC209或外沒(méi)在DMA期間內(nèi)首肯,表示正在傳輸?shù)臄?shù)據(jù)是一塊中的最后一項(xiàng)。DMAC在總線周期內(nèi)主存?zhèn)鬏斢?jì)數(shù)寄存器減為0時(shí)首肯這個(gè)信號(hào)。5.總線速制單元156一詳細(xì)描述(圖19A-C,20)(a)高速數(shù)據(jù)傳輸接口寄存器為了在圖19A-C中說(shuō)明和描述方便,BCU接口邏輯線路已經(jīng)被分為幾個(gè)功能單元。因此,邏輯線路205包含許多介于局部數(shù)據(jù)總線223與適配器通道0,1之間的接口寄存器,以增加適配器154和BCU156之間傳輸數(shù)據(jù)的速度和性能。接口205的硬邏輯線路253與DMAC209,地址解碼和仲裁邏輯線路216以及地址選通脈沖邏輯線路215一起控制BCU156的操作。
接口寄存器包含通道0的讀狀態(tài)寄存器229和通道1的寫(xiě)狀態(tài)寄存器230,它們與通道0和1的命令狀態(tài)總線249,252相聯(lián),用來(lái)保存適配器154和BCU156之間數(shù)據(jù)傳輸?shù)臓顟B(tài)。
通道0和1的命令寄存器214,215暫存從BCU156到S/370的適配器154的數(shù)據(jù)傳輸命令。
通道0和1的地址/數(shù)據(jù)寄存器219,227在S/370的I/O數(shù)據(jù)傳輸期間為了對(duì)適配器154的傳輸保存著S/370的地址。寄存器227也保存每次地址傳輸之后對(duì)適配器154作數(shù)據(jù)傳輸時(shí)(每個(gè)地址傳輸可達(dá)64字節(jié))的后續(xù)I/O數(shù)據(jù)字(可達(dá)4字節(jié))。
通道0的讀緩沖器在BCU的郵箱讀操作和S/370的I/O寫(xiě)操作期間接收從適配器154傳來(lái)的I/O數(shù)據(jù)。
通道0,1的BSM讀/寫(xiě)操作選出字節(jié)計(jì)數(shù)器220,222,BCM讀/寫(xiě)界限計(jì)數(shù)器221,224保存從BCU156到適配器154的數(shù)據(jù)傳輸?shù)淖止?jié)計(jì)數(shù)。兩種計(jì)數(shù)器都是為使每個(gè)通道避免在數(shù)據(jù)傳輸時(shí),越過(guò)S/370的六十四字節(jié)地址的邊界而設(shè)的。正如以后將要更詳細(xì)地說(shuō)明的,計(jì)數(shù)器220,222起初存貯I/O操作所要傳輸?shù)娜孔止?jié)數(shù)(可達(dá)4KB),并且可用來(lái)把計(jì)數(shù)值送到寄存器214,225中,局部形成S/370的起始地址(這只用于最后一塊(64字節(jié))傳輸,即最后的命令/數(shù)據(jù)傳輸操作)當(dāng)BCU156發(fā)現(xiàn)任何一個(gè)命令數(shù)據(jù)傳輸操作越界或字節(jié)計(jì)數(shù)大于64字節(jié)時(shí),可用邊界計(jì)數(shù)器221,224(部分地)給出S/370的起始地址。
在每次經(jīng)通道0和1的數(shù)據(jù)傳輸后,計(jì)數(shù)器220,221,222和224將相應(yīng)地減少。
隊(duì)列計(jì)數(shù)器254提供類似的功能,它把信息(可達(dá)十六字節(jié))經(jīng)適配器154送到S/370存貯器。
用于選擇上述接口寄存器的地址存放在存貯器210地址空間(圖230)中,按眾所周知的方式對(duì)總線247的地址譯碼可選出相應(yīng)地址。
在PU到BCU的請(qǐng)求線256a上的由適配器154發(fā)往邏輯電路253的信號(hào)告訴BCU156:S/370郵箱的讀請(qǐng)求已經(jīng)就緒。這個(gè)信號(hào)在郵箱信息存到局部存貯器210之前都不會(huì)被BCUPU確認(rèn)信號(hào)重置。
上行標(biāo)志和下行標(biāo)志線路262a-d可用來(lái)在適配器通道0,1上選通BCU156與適配器154之間的數(shù)據(jù)。
在BCU邏輯線路253和DMAC209之間提供了握手信號(hào)。BCU邏輯線路在線路263a-d上提出服務(wù)請(qǐng)求,對(duì)每個(gè)DMAC通道都有這樣一個(gè)。DMAC在線路264a-d上用確認(rèn)信號(hào)作為響應(yīng)。其它線路,如選擇線路270,數(shù)據(jù)傳輸確認(rèn)線路265,外設(shè)控制線路257a-d,數(shù)據(jù)傳輸完成線路267,已在上述有關(guān)DMAC209處描述過(guò)。(b)BCU的解耦和中斷邏輯215,216(圖20,21)。
前面已經(jīng)提到過(guò),兩種性能對(duì)獲得S/370與S/88處理機(jī)的緊密聯(lián)接至關(guān)重要。這些緊密聯(lián)接是這樣獲得的,為S/370系統(tǒng)提供許多S/88系統(tǒng)獨(dú)特的性能,如容錯(cuò)操作和單一系統(tǒng)映象環(huán)境。那些在這里被稱為-S/88處理器的“解耦特性”指的是S/88處理機(jī)與它的相連的硬件脫鉤。另一個(gè)重要特性是唯一的中斷”機(jī)制。兩種性能以一種對(duì)S/88操作系統(tǒng)透明的方式操作。解耦和中斷邏輯線路215,216在BCU156中給出。
“解耦”邏輯在每個(gè)指令執(zhí)行周期內(nèi)為應(yīng)用于S/88處理機(jī)地址的虛擬地址解碼。如果發(fā)現(xiàn)有一塊已分給了BCU156和它的存貯器210的預(yù)先選定的S/88虛擬地址,那么來(lái)自S/88處理器62的地址選通信號(hào)(AS)被選通到BCU156而不是被選通到相連的S/88硬件。這種行為防止S/88操作系統(tǒng)知道已經(jīng)出現(xiàn)機(jī)器周期,即這種行為對(duì)S/88是透明的。
但是,S/88處理器62實(shí)際上是連接的,它在這個(gè)機(jī)器周期內(nèi)控制著B(niǎo)CU156,控制著用來(lái)選擇和控制BCU156中各種部件以完成一個(gè)與S/370I/O操作有關(guān)的功能的預(yù)選地址。
S/88處理機(jī)62上運(yùn)行的特殊應(yīng)用程序(EXEC370)通過(guò)把這些預(yù)選虛擬地址放到S/88總線161A上來(lái)指導(dǎo)BCU156的操作以保障有效通訊來(lái)起動(dòng)與S/370處理機(jī)的通信。
BCU156中的DMAC209和其它邏輯線路為S/88提供中斷,一旦請(qǐng)求,就以指定的級(jí)別(6)來(lái)調(diào)用這個(gè)特殊應(yīng)用程序。每個(gè)中斷的提供對(duì)S/88操作系統(tǒng)是透明的。
在以后有關(guān)S/370I/O操作的固件綜述的例子中將描述這些中斷的中斷處理程序的功能類型。
現(xiàn)在聞述如何處理經(jīng)DMACs(如DMAC209)到S/88的S/370的中斷的機(jī)制和S/88操作系統(tǒng)修改,它們都基于一個(gè)相伴單元并且在一個(gè)有多個(gè)相伴單元的模塊中。
可以想到,一個(gè)相伴單元是一個(gè)相連的夾板,這個(gè)夾板由一塊修改過(guò)的雙S/88處理器板和一塊雙S/370處理器板構(gòu)成,包含雙本地存貯器,DMAs和常規(guī)邏輯線路。為了容錯(cuò),諸如此類的雙夾板部件并行地、完全同步地(鎖步)操作。
整個(gè)夾板一般有一塊相同的相伴夾板,其伙伴以鎖步方式操作,因而以單個(gè)容錯(cuò)實(shí)體的面貌出現(xiàn)。把這種雙重復(fù)制硬件看作單個(gè)操作單元(如圖21所示)對(duì)下面的討論是有益的。
在優(yōu)選實(shí)施例中,單個(gè)模塊可包含8個(gè)這種單元295到295-8。它們?cè)赟/88操作系統(tǒng)的單個(gè)付本的控制下,共享主存、I/O設(shè)備和電源。單元295(和其它每個(gè)295-2和295-8)與一對(duì)伙伴板(諸圖7中的21、23板)相對(duì)應(yīng)。重要的是,在這種多CPU結(jié)構(gòu)里,S/88處理一單元62到62-8作為分擔(dān)S/88工作負(fù)荷的多處理器運(yùn)行,但S/370單元85到85-8分別獨(dú)立地運(yùn)行并且無(wú)內(nèi)部通訊。每個(gè)S/370單元在它自己的操作系統(tǒng)控制下運(yùn)行,并且在這模塊中沒(méi)有任何其它CPU的“知識(shí)”(既無(wú)S/370或S/88)由于多處理環(huán)境和S/88體系結(jié)構(gòu),在正常的S/88系統(tǒng)中的中斷處理由CPU單元62與62-2到62-8分擔(dān)。簡(jiǎn)單地講,每個(gè)中斷(來(lái)自I/O,定時(shí)器,程序陷井等)經(jīng)公共總線并行地送到所有S/88處理單元。只要一個(gè)單元承擔(dān)為它服務(wù)的責(zé)任,其它單元就對(duì)它忽略不計(jì)。不管正在服務(wù)的是哪一個(gè)CPU單元,在操作系統(tǒng)內(nèi)對(duì)此處理程序有一個(gè)向量表,每個(gè)向量有一個(gè)入口,由操作系統(tǒng)來(lái)確定中斷的分配并進(jìn)行處理。
在多-S/370結(jié)構(gòu)中,所有正常的S/88中斷如上所述運(yùn)行;S/88中斷處理程序不變。監(jiān)控硬件變化。允許DMAC209和209-8中斷,并且正常S/88中斷機(jī)制和軟件完全透明。
要求DMAC中斷只能由附有DMAC,BCU和S/370的S/88處理器62處理,使得多S/370單元85到85-8不能互相干涉。為此目的,DMAC IRQ線路258a直接與S/88處理器62相連接,DMAC209接到S/88處理機(jī)上,不在公用S/88總線30上出現(xiàn),所有正常的S/88中斷請(qǐng)求線路都是如此。在S/370支持的從S/88搶時(shí)間片期間,給定的S/88處理機(jī)62,為直接與它相接的S/370所占用。
在主S/88向量表內(nèi)預(yù)留八個(gè)用戶向量位置以備DMACs所用,這些向量是加在S/88操作系統(tǒng)中的八個(gè)DMAC中斷處理程序的硬碼地址。所有S/88處理器都可用這八個(gè)中斷處理程序來(lái)處理與S/370處理器相連的所有DMCs提供的中斷。
每個(gè)諸如209的DMAC都有一個(gè)中斷請(qǐng)求(IRQ)輸出信號(hào)和八個(gè)內(nèi)部向量寄存器(每個(gè)通道有兩個(gè),一個(gè)為正常操作,一個(gè)為DMAC檢測(cè)出錯(cuò)誤)。初始化時(shí)(以后說(shuō)明),程序設(shè)置這些DMAC向量寄存器的值為上述相應(yīng)的八個(gè)預(yù)留主向量表的位置。因此當(dāng)DMAC發(fā)出IRQ時(shí),可以調(diào)用八個(gè)處理程序的一個(gè)。這些處理程序存取DMAC,BCU硬件,隊(duì)列,鏈表,以及所有的控制參數(shù),這通過(guò)提供位于“隱”局部存貯器210的地址域內(nèi)的虛擬地址來(lái)完成。硬件設(shè)計(jì)保證了每個(gè)諸如62的S/88處理器只存取它自己的存貯器(如210)。而不存取其它存貯器,即使多個(gè)S/370單元共享一個(gè)公用的虛擬地址的不耦合“窗口”也是如此。即一個(gè)模塊中所有S/88-S/370多處理器都用這個(gè)S/88虛擬地址空間007E××××,即使每個(gè)相伴單元(如22,23)有它自己的專用S/88物理存貯器(如圖10所示)。
在多S/370結(jié)構(gòu)中,考慮到這八個(gè)向量寄存器時(shí),所有DMACs209到209-8的編程是一樣的,都享用主向量表中的八個(gè)預(yù)留的向量其及處理程序,不同之處以及解耦操作發(fā)生在每次存取諸如210這樣的存貯器時(shí)。
DMAC IRQ與它自己的S/88處理器62的硬連線的表示連同解耦操作一起保證了S/370處理單元的分離和集成,并且保證了不干涉S/88的正常運(yùn)行,除了S/88CPU時(shí)間“損失”以外。中斷服務(wù)對(duì)S/88操作系統(tǒng)是透明的。
因此,通過(guò)搶占多道處理系統(tǒng)環(huán)境的單個(gè)處理器設(shè)施,隔離和保護(hù)了多S/370單元,這種完整的中斷設(shè)計(jì)完成了S/370DMAC中斷的間發(fā)“專用請(qǐng)求”服務(wù)。這種多道處理系統(tǒng)環(huán)境使用了不同的中斷服務(wù)原理,它本質(zhì)上對(duì)多道處理系統(tǒng)的運(yùn)行無(wú)任何影響,多道處理操作系統(tǒng)也基本上無(wú)須作任何明顯改動(dòng)。
圖19A和20給出了更詳細(xì)的DMAC中斷機(jī)制的運(yùn)行說(shuō)明。當(dāng)諸如DMAC209那樣的能夠選擇向量的外設(shè)向S/88處理器62發(fā)出中斷請(qǐng)求(IRQ)時(shí),這個(gè)設(shè)備就啟動(dòng)了單個(gè)IRQ線路258a。這個(gè)IRQ線路按S/88處理器體系結(jié)構(gòu)說(shuō)明的方式被連接到編碼線路293上,使其能按指定的優(yōu)先級(jí)(6)經(jīng)輸入引線IPL0-IPL2向S/88處理器62發(fā)送被編碼的中斷請(qǐng)求。
處理器62利用保存在內(nèi)部狀態(tài)寄存器中的優(yōu)先級(jí)屏蔽位有效地決定它什么時(shí)候能處理中斷。一旦就緒,處理器62就開(kāi)始特殊的“中斷確認(rèn)”(IACK)周期。
在由處理器62內(nèi)部控制的IACK周期內(nèi),為了識(shí)別正在被服務(wù)設(shè)備的周期類型和優(yōu)先級(jí)別 ,地址總線161A提供一種獨(dú)特的地址結(jié)構(gòu)。這也是一個(gè)有效的來(lái)自中斷設(shè)備的對(duì)于向量號(hào)的請(qǐng)求。所有提出請(qǐng)求的設(shè)備都比較自己與正在被服務(wù)設(shè)備的優(yōu)先級(jí),具有匹備優(yōu)先級(jí)的設(shè)備向數(shù)據(jù)總線161D提供一字節(jié)的向量號(hào)供處理器62使用。
一旦獲得向量號(hào),處理器62把基本內(nèi)部狀態(tài)存于一個(gè)管理程序棧中,然后生成所使用的異常向量地址。把設(shè)備的向量號(hào)內(nèi)乘以4,所得之積加到內(nèi)部向量基寄存器的內(nèi)容上,這樣就給出了這個(gè)異常向量的主存地址。這個(gè)向量是中斷處理程序的新程序計(jì)數(shù)器的值。
在管理狀態(tài)下,用這個(gè)新的程序計(jì)數(shù)器之值取到第一條指令,正常的指令解碼與執(zhí)行被恢復(fù),并且處理器62狀態(tài)寄存器設(shè)置為當(dāng)前優(yōu)先級(jí)。
從IACK周期開(kāi)始到取出第一條中斷處理指令的上述各步,均是由硬件和處理器62的內(nèi)部操作配合完成的,不需要執(zhí)行程序指令。凈效益是先前運(yùn)行(低優(yōu)先級(jí))的程序透明地騰出地方以執(zhí)行較高優(yōu)先級(jí)的中斷處理程序。
在優(yōu)選的實(shí)施例中,DMAC209中斷的優(yōu)先級(jí)為6,與處理器62的整個(gè)體系結(jié)構(gòu)一致。DMAC209可用內(nèi)部編程的8個(gè)向量號(hào),及其八個(gè)獨(dú)立的處理程序。
除提供S/88處理器62的解耦功能以外,在IACK周期內(nèi)解碼和仲裁邏輯線路216(圖19A)和AS控制邏輯線路215也控制這個(gè)中斷功能。
現(xiàn)在參考圖20來(lái)詳細(xì)說(shuō)明上述的硬件功能,圖20展示了圖19A中邏輯線路215和216的細(xì)節(jié)。來(lái)自PE62的地址選通線路270接到控制邏輯線路215的一條輸入線路上。邏輯線路216有一對(duì)解碼線路280、281。線路280的輸出線路281接到邏輯線路215上;線路281的輸出線路283也不經(jīng)過(guò)“與”門(mén)291接到邏輯線路216和線路287上。正常情況下在執(zhí)行指令期間,解碼線路280,281允許線路270上地址選通信號(hào)(AS)經(jīng)過(guò)邏輯線路215到線路270a。這是一個(gè)對(duì)于與PE62有關(guān)的S/88硬件的正常的地址選通信號(hào)。
但是,如果S/88處理器62所執(zhí)行的指令用了地址總線16161A上的虛擬地址,而且該地址的四個(gè)高位十六進(jìn)制數(shù)為“007E”(指PE62從S/88的硬件上斷開(kāi)接到BCU156上,以便作一個(gè)與S/370I/O操作有關(guān)的功能),則解碼邏輯線路280在線路282上發(fā)一信號(hào)以阻攔線路270a的AS信號(hào),并把在線路270a上的AS信號(hào)經(jīng)線路270b送到BCU156。解碼邏輯線路280也可設(shè)計(jì)為檢測(cè)線路ECO-2的合適的功能碼,但這僅僅是一種設(shè)計(jì)選擇。圖22,23和24圖示了總線161A上的地址信號(hào)與線路270上的地址選通之間的延遲現(xiàn)象,其中線路270可以在AS信號(hào)出現(xiàn)以前阻攔線路270a上的AS。將要看到,不用S/88的應(yīng)用于地址總線的一組特殊虛擬地址而是用其它手段也可以對(duì)上述條件進(jìn)行譯碼,以便把PE62從與它相連的S/88硬件斷開(kāi)接到BCU156上去。
把線路282上的阻攔信號(hào)加到“或”電路284上可在線路190上產(chǎn)生發(fā)往仲裁邏輯線路285的PE62局部總線請(qǐng)求信號(hào)。邏輯線路285只在DMAC209還沒(méi)有在線路269上提出請(qǐng)求時(shí)答應(yīng)對(duì)PE62的請(qǐng)求。如果沒(méi)有DMAC請(qǐng)求,PE62總線承認(rèn)線路191被激活。線路191上的PE62總線的承認(rèn)信號(hào)經(jīng)邏輯線路253啟動(dòng)ENABLE線路286a、b(圖19A)把PE62總線161A、D經(jīng)驅(qū)動(dòng)器217和驅(qū)動(dòng)器/接收器218連接到局部總線247,223上,以便使PE62與BCU156一起操作。在PE62正在執(zhí)行的指令控制下把處理器總線161 A,D連接到局部總線247,223,與此同時(shí),在PE62和BCU的部件之間可以傳輸數(shù)據(jù)和命令。應(yīng)用程序EXEC370和ETIO固件包含運(yùn)種指令。
如果在線路269上有DMAC請(qǐng)求,邏輯線路285給與DMAC209的優(yōu)先級(jí)將比線路190上PE62請(qǐng)求的優(yōu)先級(jí)要高;線路268上的DMAC總線承認(rèn)信號(hào)返回到DMAC209;局部總線247,223要么經(jīng)由高速接口寄存器把局部存貯器210和適配器通道0,1接通,要么使DMAC209和局部存貯器210接通以備DMAC與BCU156一起操作。
因而可以看到,當(dāng)邏輯線路280譯碼所得的地址為007××××?xí)r,輯輯線路215,216把S/88處理器62從與其相連的硬件(如175,176,177)上斷開(kāi)連接到BCU136上。這種脫鉤動(dòng)作對(duì)S/88操作系統(tǒng)是透明的。
與此類似,譯碼邏輯281(及其相關(guān)硬件)封鎖來(lái)自連線270a的地址選通信號(hào)AS,并且在DMAC209中斷前往PE62方向的時(shí)序期間仲裁邏輯285發(fā)出一個(gè)局部總線請(qǐng)求。
更具體地說(shuō),當(dāng)DMAC209在連線258a上施加一個(gè)中斷信號(hào)時(shí),該中斷信號(hào)將經(jīng)過(guò)“或”電路292a和292、再經(jīng)過(guò)S/88中斷優(yōu)先級(jí)邏輯293的第6級(jí)輸入端和連線IPLO-2加到PE62上,PE62則以一個(gè)中斷確認(rèn)周期作出響應(yīng)。預(yù)定的邏輯位(其中包括中斷級(jí)別值)將被放置在輸出FCO-2和地址總線161A(A1-3位,A16-19位)上,由邏輯電路281對(duì)它們進(jìn)行譯碼并在連線283上產(chǎn)生-個(gè)輸出。這個(gè)輸出信號(hào)和連線258C上的中斷信號(hào)將使“與”門(mén)291向連線287輸出一個(gè)信號(hào)而使邏輯電路215通過(guò)連線270b向BCU邏輯253送出AS信號(hào)。
連線287上的信號(hào)阻止來(lái)自連線270a的AS信號(hào),并通過(guò)“或”電路284在連線190上向仲裁邏輯285設(shè)置一個(gè)PE62的總線請(qǐng)求。由于地址選通信號(hào)(AS)被禁止前往S/88硬件,因此,這種中斷對(duì)S/88操作系統(tǒng)來(lái)說(shuō)是透明的。
如上所述,當(dāng)總線161A和FCO-2上接收到特殊的IACK數(shù)據(jù)位時(shí),譯碼邏輯281立即在連線283上產(chǎn)生一個(gè)輸出信號(hào)從而封鎖連線270a上的地址選通信號(hào)。同時(shí)通過(guò)“或”電路284和連線190向仲裁邏輯285產(chǎn)生一個(gè)PE62的請(qǐng)求信號(hào)。如果在連線269上沒(méi)有DMAC請(qǐng)求,那么在前往“與”門(mén)294-1的連線191上就產(chǎn)生一個(gè)PE62總線批準(zhǔn)信號(hào)。“與”門(mén)294立即在連到DMAC209的連線258b上產(chǎn)生一個(gè)IACK信號(hào)。這將提醒DMAC209給出它的中斷向量。接著。DMAC將向量放置在本地總線上并在前往邏輯電路253的連線265上產(chǎn)生“DTACK”。邏輯電路253對(duì)連線270b上的AS信號(hào)作出響應(yīng),在連線286a和286b上產(chǎn)生一個(gè)ENABLE信號(hào)從而使處理器總線161A和D通過(guò)電路217、218與局部總線248、223相連,從而從DMAC209中把適當(dāng)?shù)南蛄孔x入PE62中。DMAC209把中斷向量從它的數(shù)據(jù)總線248(圖19A)的最低有效字節(jié)經(jīng)過(guò)驅(qū)動(dòng)接收器234和局部數(shù)據(jù)總線223送入S/88處理器數(shù)據(jù)總線161D的第23-16位中。
S/88處理器62使用DMAC209發(fā)出的向量號(hào)跳轉(zhuǎn)到S/88接口微碼ETIO中八個(gè)中斷處理程序中的一個(gè)。
連線265上的DTACK信號(hào)以及邏輯電路253在連線266a、b上激勵(lì)出DSACK0,1信號(hào),從而通過(guò)一對(duì)“或”電路288終止PE62周期。連線266a、b與標(biāo)準(zhǔn)的S/88DSACK線266c、d相或而形成最終的、送至PE62的DSACK輸入266e、f。
從綜合服務(wù)設(shè)施(圖49)通過(guò)連線562和563加至“或”電路292a的中斷請(qǐng)求將引起一系列與上面對(duì)于DMAC中斷請(qǐng)求所描述的相類似的操作。一對(duì)“與”門(mén)294-2和294-3(圖20)在連線258d、e上產(chǎn)生IACK信號(hào),從而啟動(dòng)適當(dāng)?shù)南蛄刻?hào),從BCU156經(jīng)過(guò)圖49中的邏輯電路564、565和局部數(shù)據(jù)總線223轉(zhuǎn)移到S/88處理單元62。
從下面可以看到。在邏輯上稍加改變即可給予S/88的第6級(jí)中斷請(qǐng)求比DMAC或BCU中斷請(qǐng)求(當(dāng)它們同時(shí)產(chǎn)生時(shí))級(jí)別更高的優(yōu)先權(quán)。但是目前,把電源故障視為第二中斷源更為合適。
(c)BCU地址變換局部存貯器210(見(jiàn)圖41)具有固定的存貯空間。并被變換成S/88PE62的虛擬地址空間。局部存貯器210被劃分為用于下面三個(gè)不同目的的三個(gè)地址區(qū)1.S/88PE66直接讀/寫(xiě)局部數(shù)據(jù)緩沖器和包括鏈接表(link-list)在內(nèi)的控制結(jié)構(gòu),2.S/88PE66往/從BCU156中讀/寫(xiě)指令,讀狀態(tài)對(duì)來(lái)自特定地址的指令進(jìn)行譯碼,3.S/88PE62對(duì)DMAC寄存器進(jìn)行讀/寫(xiě)(既用于初始化又用于正常操作),對(duì)來(lái)自特定地址的寄存器號(hào)進(jìn)行譯碼。
該局部存貯器的地址空間包括1.?dāng)?shù)據(jù)緩沖器和控制結(jié)構(gòu)(比64K字節(jié)少512包括物理存貯器210中的鏈表);2.BCU命令區(qū)(從特定地址譯碼得到的256字節(jié)的命令);3.DMAC存取區(qū)(從特定地址譯碼得到的256字節(jié)的寄存器號(hào))。
局部總線譯碼和總線仲裁單元216檢測(cè)該局部存貯器的存貯空間中的所有地址。與此同時(shí),DMAC209可能正在把一個(gè)地址置入上面說(shuō)過(guò)的區(qū)域1中。DMAC不可以對(duì)區(qū)域2或3進(jìn)行存取,這是由初始微碼所保證的。
BCU156監(jiān)視局部總成上的所有地址,并且把含有位于范圍2和3中的地址的操作通過(guò)控制標(biāo)志(Control tag)重新引導(dǎo)至正確的單元(BCU或DMAC)而不是引導(dǎo)至局部存貯器210。因此,在利用上面的區(qū)域2和3所表示的局部存貯器210的地址區(qū)域時(shí),決不會(huì)在這兩個(gè)區(qū)域中進(jìn)行存貯。
在這個(gè)較佳實(shí)施例中,局部總線譯碼和總線仲裁單元215還可處理第四種操作類型S/88處理器62對(duì)送至S/88PE62的DMAC209中斷作出應(yīng)答,并根據(jù)上面描述的MC68020結(jié)構(gòu)完成每個(gè)中斷。
這個(gè)特殊操作通過(guò)地址和功能碼的各位來(lái)檢測(cè)。這些功能碼位由S/88PE62提供,其不同之處是(結(jié)構(gòu)特殊的)譯碼不屬于局部存貯器210范圍中的地址。
因此,局部總線仲裁單元216具有一個(gè)用于這種情況的特殊譯碼器和一個(gè)通知DMAC送出它的預(yù)編程的中斷天量的輔助邏輯。除此之外,操作就與S/88處理器62讀一個(gè)DMAC寄存器時(shí)相似。
當(dāng)高位的數(shù)據(jù)位被譯碼成十六進(jìn)制(H)007E時(shí),地址總線247就被PE62選中。
剩下的4個(gè)十六進(jìn)制數(shù)據(jù)位提供范圍為64KB的局部存貯器地址,其分配如下
I/O設(shè)備(或命令) 地址譯碼DMAC寄存器選擇007E0000-007E00FF(區(qū)域3以上)BCU復(fù)位007E0100(區(qū)域2以上)BSM讀選擇抬高007E0104(區(qū)域2以上)BSM寫(xiě)選擇抬高007E0108(區(qū)域2以上)讀BCU狀態(tài) 007E010C(區(qū)域2以上)局部存貯器選擇007E0200-007EFFFF(區(qū)域1以上)S/88處理器62把下列的數(shù)據(jù)放置在局部數(shù)據(jù)總線223上以便傳給選中的DMAC存貯器傳輸計(jì)數(shù)寄存器和BCU156在后讀的BSM讀/寫(xiě)選擇命令中使用31 23 1570000008bb bbbbbbbb rspp kkkk clxx xxxx第31-16位(000008bb bbbb bbbb)將作為字節(jié)傳輸計(jì)數(shù)值置入DMAC存貯器傳輸計(jì)數(shù)器中26 =高位字節(jié)計(jì)數(shù)位(1表示最大字節(jié)計(jì)數(shù)值(只可能是4096))。25-16=低位字節(jié)計(jì)數(shù)位。第26-16位表示實(shí)際字節(jié)計(jì)數(shù)值的1/4(雙字傳輸)。
BCU156以下面的方式為后續(xù)的BSM讀/寫(xiě)選擇命令捕獲數(shù)據(jù)31-27=被BCU忽略。26 =高位字節(jié)計(jì)數(shù)位。該數(shù)據(jù)位只是在作最大字節(jié)計(jì)數(shù)值的傳輸時(shí)才等于1。26-14=對(duì)寄存器220或222的適配器的傳輸字節(jié)計(jì)數(shù)位(最大為4096)。為了傳輸4096個(gè)字節(jié)(上面的字節(jié)計(jì)數(shù)位為1),計(jì)數(shù)值要求為1111 11111111。因此,BCU156在把雙字邊界位26-16順著字節(jié)傳移位15-14(以64字節(jié)為一塊)送至總線適配器154之前要使雙字邊界位26-16遞減一次。15-14=低位字節(jié)計(jì)數(shù)位。這些數(shù)據(jù)位表示雙字邊界的字節(jié)偏離量減1(因總線適配器的要求)。因?yàn)檫@些數(shù)據(jù)位只傳送雙字,它們不會(huì)被DMAC209或BCU156所使用。在送至總線適配器154再送至S/370BSM162之前,它們被存在BCU156中。13-12=對(duì)寄存器219或227而言的適配器總線通道優(yōu)先權(quán)。11-08=對(duì)于寄存器219或227的存貯鍵。07 =對(duì)于寄存器219或227的用戶/IOA空間位。06 =對(duì)于BSM寫(xiě)選擇而言S/88處理器會(huì)激勵(lì)該數(shù)據(jù)位以表示需要一次附加的局部存貯器存取。這在起始的局部存貯器地址不在字邊界內(nèi)時(shí)就會(huì)發(fā)生。由于所有的BCU存取都必須在一個(gè)雙字邊界上開(kāi)始,因此,第一次存取不僅包括指定的起始地址上的字節(jié),還包括在該雙字地址中的前面的字節(jié)。這些前面的字節(jié)將被棄掉。05-00=保留位。
下面的數(shù)據(jù)將由S/88處理器62放置在局部數(shù)據(jù)總線223上送至DMAC存貯器傳輸計(jì)數(shù)寄存器,并由BCU156用于后續(xù)的Q選中命令oooo oooo oooo bbbb oooo kkkk cxxx xxxx字節(jié)傳輸計(jì)數(shù)值(第31-16位)被置入DMAC第3通道的存貯器傳輸計(jì)數(shù)寄存器MTC中。
BCU156以下面的方式為后續(xù)的Q選中命令捕獲數(shù)據(jù)31-20=被BCU忽略。19-16=對(duì)寄存器220或222的字節(jié)計(jì)數(shù)值(最大為64字節(jié))。15-12=被BCU忽略。11-08=對(duì)于寄存器227的存貯鍵。07 =對(duì)于寄存器227的用戶/IOA空間位。06-00=被BCU忽略。
(d)局部地址和數(shù)據(jù)總線操作所有的局部總線操作均由來(lái)自S/88處理器或者DMAC209的總線請(qǐng)求所啟動(dòng)。S/88處理器62的局部總線操作包括讀/寫(xiě)局部存貯器(32位),讀/寫(xiě)DMAC寄存器(8,16,32位),對(duì)DMAC的中斷應(yīng)答周期(8位中斷向量讀取),讀BCU的狀態(tài)(32位的BCU讀),被編程的BCU復(fù)位。DMAC209的局部總線操作包括鏈表裝入(16位),DMAC操作(32位),只提供局部存貯器地址提供局部總線請(qǐng)求中斷向PE62提供4個(gè)通道的正常的中斷向量(8位),向PE62提供關(guān)于非法DMAC操作或者其它DMAC檢測(cè)到的錯(cuò)誤時(shí)的錯(cuò)誤中斷向量(8位)。BCU156的局部總線操作包括在DMAC期間提供讀/寫(xiě)數(shù)據(jù)(32位),向DMAC209發(fā)出數(shù)據(jù)請(qǐng)求,通過(guò)DMAC連線PCLO257a發(fā)出讀“信箱”(miilbcx)中斷請(qǐng)求。
無(wú)論如何,只要S/88處理器62用一個(gè)有效的局部地址譯碼(007EXXXXX)或者用DMAC直接中斷確認(rèn)周期激勵(lì)它的地址總線時(shí),BCU156都將執(zhí)行下列操作封鎖通往S/88的地址選通線,向競(jìng)爭(zhēng)邏輯216輸出一個(gè)總線請(qǐng)求。
如果局部總線不在使用,那么S/88處理器的地址總線161A和地址總線161D通過(guò)驅(qū)動(dòng)接收器217、218與局部總線247、223相連,接著執(zhí)行讀、寫(xiě)或者IACK操作。
DSACK線266a,b在BCU邏輯的激勛下結(jié)束下列操作周期對(duì)于所有局部存貯器和BCU型命令的32位DSACK,對(duì)于所有DMAC寄存器型命令的16位DSACK,對(duì)于IACK周期的16位DSACK。
為了作一次DMAC或裝入鏈表需要激勵(lì)來(lái)自DMAC209的DMAC總線請(qǐng)求(BR)線269。發(fā)生這種情況時(shí),BCU156執(zhí)行下列動(dòng)作如果局部總線不在使用中,則(在DMAC讀/寫(xiě)或鏈表裝入期間的)DMAC地址被選通至局部地址總線247。BCU156邏輯對(duì)(DMAC寫(xiě)入局部存貯器210中的)數(shù)據(jù)從DMAC寄存器經(jīng)門(mén)電路送至局部數(shù)據(jù)總線223。局部存貯器210把它數(shù)據(jù)(DMAC讀或者鏈表裝入)選通至局部總線223。讀/寫(xiě)操作就被執(zhí)行。由BCU邏輯253激勵(lì)通往DMAC209的DTACK線和結(jié)束這個(gè)周期。
(e)S/88處理器和DMAC209向/從局部存貯器210尋址從S/88處理器62至局部存貯器210的地址位分配如下低階位0,1(和SIZO,PE62之一,未示出)確定要傳輸?shù)淖止?jié)(1-4)的數(shù)量和總線定位。第2-15位之內(nèi)為存貯空間210的地址位。
在鏈表方式下,DMAC地址位A2用作局部存貯器210的低階地址位(雙字邊界)。由于DMAC209是一個(gè)面向字(16位)的裝置(A1是它的低位地址位),并且由于局部存貯器210是以雙字(32位)為單位進(jìn)行存取的,某些裝置必須裝有允許DMAC209把數(shù)據(jù)從鄰接的局部存貯位置讀入其內(nèi)部鏈表之中的硬件。這是通過(guò)使用A2作為低階地址位在存貯器210中的同一雙字位置讀兩次來(lái)實(shí)現(xiàn)的。此時(shí),A1位被用來(lái)從局部總線中選擇高/低字。對(duì)局部存貯器210進(jìn)行的地址移位是在硬件中通過(guò)DMAC功能碼位來(lái)實(shí)現(xiàn)的。DMAC209中除7之外的所有功能碼都將使地址位A15-A02送給局部存貯器210。這種安排將使得DMAC209的局部存貯器鏈表數(shù)據(jù)存貯在存貯器210中的鄰接位置上。
在局部存貯器讀/寫(xiě)模式中,DMAC位A1被用作輸向局部存貯器210的低位地址位。讀出的數(shù)據(jù)從適配器總線通道0的讀緩沖器226送到存貯器210中。未自存貯器210的數(shù)據(jù)被寫(xiě)入適配器總線通道1的寫(xiě)緩沖器228中。由于DMAC是一個(gè)16位裝置,因地低位地址被用來(lái)表示一個(gè)字邊界。但是,每次DMAC操作對(duì)雙字進(jìn)行存取。為了使一個(gè)單字存取尋址機(jī)構(gòu)進(jìn)行雙字存取,必須進(jìn)行地址移位。
對(duì)局部存貯器210進(jìn)行的地址位移位是在硬件中通過(guò)DMAC功能碼位來(lái)實(shí)現(xiàn)的。DMAC209的功能碼“7”將使地址位A14-A10送給局部存貯器210。為了能進(jìn)行正確的操作,DMAC中只裝入實(shí)際字節(jié)計(jì)數(shù)值的1/4(亦即實(shí)際字計(jì)數(shù)值的1/2)。對(duì)于DMAC寫(xiě)操作,有這么一條規(guī)定即允許通過(guò)控制來(lái)自DMAC209的UDS和LDS線(未示出)的方法來(lái)進(jìn)行字寫(xiě)入,雖然一般情況下所有的DMAC操作均為雙字存取。UDS和LDS信號(hào)將引起對(duì)局部存貯器210的高位(D31-D16)和低位(D15-D0)部分進(jìn)行存取。
就PE62至DMAC209的方式而言,S/88處理器PE62為了給DMAC操作建立內(nèi)部控制而對(duì)四個(gè)DMAC通道0-3中的每一個(gè)的DMAC寄存器進(jìn)行寫(xiě)操作。PE62還具有讀所有的DMAC寄存器的能力,DMAC209在具有二根連線DSACK0,DSACK1(能使端口容量為8,16,32位)的總線266上返回一個(gè)字DSACK(16位)。這將允許DMAC209為正確地執(zhí)行DMAC取操作而占用任何所需的周期。
S/88處理器SIZ0,SIZ1(未示出)和A0線用來(lái)產(chǎn)生DMAC209的UDS(高位數(shù)據(jù)選通)和LDS(低位數(shù)據(jù)選通)輸入(未示出)。正如上面說(shuō)過(guò)的那些DMAC出版物中詳細(xì)描述的那樣,為了對(duì)DMAC209中的字節(jié)寬度的寄存器進(jìn)行存取,就需要這兩個(gè)輸入。IDS由非SIZ0和SIZ1或地址總線161D中的A0三者進(jìn)行邏輯或而得到。UDS則從A0的邏輯非得到。當(dāng)對(duì)一個(gè)字寬寄存器進(jìn)行存取時(shí)(非SIZ0),就用SIZ0線對(duì)低位字節(jié)進(jìn)行存取。當(dāng)通過(guò)一個(gè)“字節(jié)剩余”這樣一個(gè)S/88的處理器操作對(duì)一個(gè)字寬寄存器進(jìn)行存取時(shí),就使用SIZ1線存取低位字節(jié)。這只是在S/88處理器對(duì)DMAC在奇字節(jié)邊界上執(zhí)行雙字(32位)讀/寫(xiě)操作時(shí)才會(huì)發(fā)生。A0位被用來(lái)在雙字節(jié)寄存器中選擇高位還是低位字節(jié)。A0、A1位用來(lái)在4字節(jié)寄存器中選擇字節(jié)。PE62地址總線161D中的A6,A7位用來(lái)從4個(gè)DMAC通道中選出一個(gè)。
(f)BCUBSM讀/寫(xiě)字節(jié)計(jì)數(shù)器操作BCU156能從DMAC209(它能沿每根適配器總線250、251轉(zhuǎn)送最多達(dá)4KB的數(shù)據(jù))接收單條命令。但是,每根總線在一次數(shù)據(jù)傳輸操作中處理64字節(jié)的數(shù)據(jù)塊。另外為滿足約定的要求上述硬件還必須遵循適配器總線的一些限制。下面是實(shí)現(xiàn)這個(gè)目的的BCU156的詳細(xì)描述BCU156包含二個(gè)全字(11位)計(jì)數(shù)器220,222和用作適配器總線BSM讀和BSM寫(xiě)操作的二個(gè)邊界(4位)計(jì)數(shù)器221、224。當(dāng)BCU156在任何單一命令/數(shù)據(jù)傳輸操作中檢測(cè)到64字節(jié)邊界越界或者字節(jié)計(jì)算值大于64字節(jié)時(shí),邊界計(jì)數(shù)器221、224被用來(lái)表示總線適配器的起始地址。對(duì)于最后一次除外的所有塊傳輸操作,邊界計(jì)數(shù)器的內(nèi)容都送到總線適配器154,而全字計(jì)數(shù)器的內(nèi)容只在最后一次塊傳輸(最后的命令/數(shù)據(jù)轉(zhuǎn)移操作)時(shí)才送出。
S/88處理器62把字節(jié)計(jì)數(shù)器,鍵和優(yōu)先級(jí)別位放置在(圖45F中的)局部總線223上,以便轉(zhuǎn)送至寄存器222或220。r位(計(jì)數(shù)位1)表示,字(2字節(jié))邊界,而s位(計(jì)數(shù)位0)表示字節(jié)邊界。全字計(jì)數(shù)位代表了ZKB-1雙字傳輸能力。由于所有的傳輸都是在雙字基礎(chǔ)上進(jìn)行的,因此,第2位是低位的遞減位。r位和s位由BCU鎖存,在進(jìn)行最后的64字節(jié)的傳輸時(shí)送至總線適配器154。
由于下面的對(duì)總線適配器的限制以及雙字傳輸只在局部總線223上進(jìn)行這個(gè)事實(shí),有必要對(duì)字節(jié)和字計(jì)數(shù)位進(jìn)行操縱。這將允許把奇字節(jié)/字傳送給S/370PE85,并將允許使用不在雙字邊界上的起始地址。送至總線適配器154的字節(jié)計(jì)數(shù)值不能大于64字節(jié),而且這個(gè)計(jì)數(shù)值必須由字節(jié)1來(lái)表示。任何塊傳輸都不能跨越64字節(jié)的邊界。當(dāng)字節(jié)計(jì)數(shù)值等于或小于64字節(jié)且沒(méi)有邊界越界,而且起始地址又不在雙字邊界上時(shí),需要時(shí)雙字計(jì)數(shù)值進(jìn)行一次額外的調(diào)整。
當(dāng)發(fā)生64字節(jié)邊界跨越時(shí),不管計(jì)數(shù)值如何,都需要至少用兩次適配器總線命令/數(shù)據(jù)傳輸操作。S/88處理器會(huì)根據(jù)對(duì)前面所述的幾個(gè)因素的檢查情況預(yù)先計(jì)算雙字計(jì)數(shù)位和r、s和i位以及字節(jié)傳輸?shù)目傆?jì)數(shù)值。r和s位直至進(jìn)行最后一次命令/數(shù)據(jù)傳輸操作時(shí)才被送至總線適配器154。
當(dāng)S/88PE62把計(jì)數(shù)值放置在局部總線223上(見(jiàn)圖45F)時(shí),DMAC209捕獲第31-16位,BCU156捕獲第26-6位。BCU156把第26-14位存貯在寄存器220或222中。數(shù)據(jù)位26-16代表雙字計(jì)數(shù)字段。計(jì)數(shù)器220或222以一個(gè)雙字邊界(第2位)遞減。S/88處理器PE62把一個(gè)BSM讀/寫(xiě)選擇命令放置在局部地址總線247上。把BSM起始地址放置在局部數(shù)據(jù)總線223上。
DMAC209是一個(gè)與32位總線相連的16位裝置。它被編程為能在DMA操作期間在所有通道上傳輸字(2個(gè)字節(jié)),每個(gè)內(nèi)部存貯器地址寄存器MAR在每次傳輸時(shí)遞增一個(gè)字(2個(gè)字節(jié))。但是,由于每次傳輸?shù)膶?shí)際上是32位,因此需要進(jìn)行一次雙字(4個(gè)字節(jié))的遞增運(yùn)算。為了達(dá)到這一目的,S/88處理器PE62總是把MAR初始化為所需的(存貯器210中的)起始地址的一半。接著,BCU156通過(guò)在把來(lái)自MAR的地址送入局部總線223之前使之加倍的方法進(jìn)行補(bǔ)償,從而產(chǎn)生在存貯器210處看到的那些正確的地址序列。
BCU156執(zhí)行下列操作1.在裝入BSM地址寄存器228或231的同時(shí),把局部數(shù)據(jù)總線223的第2-5位上的數(shù)據(jù)求反后取到邊界計(jì)數(shù)器221或224;2.使全字計(jì)數(shù)器220或222在一個(gè)雙字邊界(第2位)上遞增;以及3。使BSM地址寄存器228或231在一個(gè)雙字邊界(第2位)上遞增;當(dāng)進(jìn)行數(shù)據(jù)塊傳輸時(shí)仍然超過(guò)64字節(jié)或者發(fā)生邊界跨越,則BCU156把讀/寫(xiě)命令字節(jié)計(jì)數(shù)值從邊界計(jì)數(shù)器221或224和BSM的地址寄存器231或228中的第1,0位中(求反后)裝入命令/狀態(tài)總線249或者252。接著,執(zhí)行讀/寫(xiě)操作。BCU156將在一個(gè)雙字邊界上使邊界計(jì)數(shù)寄存器221或224和全字計(jì)數(shù)寄存器220或222遞減。此外,它將使BSM地址寄存器231或228接雙字邊界遞增。當(dāng)BSM地址寄存器231或228的第5-2位=0000(64字節(jié)的邊界)時(shí),BCU156即停止工作。此時(shí),邊界計(jì)數(shù)器位應(yīng)該為1111。
當(dāng)數(shù)據(jù)塊傳輸期間剩下的數(shù)據(jù)等于或少于64字節(jié)并且沒(méi)有發(fā)生邊界跨越時(shí),BCU156就把來(lái)自計(jì)數(shù)器220或222的第5-2位和r、s位的BSM讀/寫(xiě)命令字節(jié)計(jì)數(shù)值裝入適配器總線命令/狀態(tài)總線249或252。接下來(lái),BCU156執(zhí)行讀/寫(xiě)操作。在此期間,它使寄存器220或222按雙字邊界遞減,使BSM地址寄存器231或228按雙字邊界遞增,并在寄存器220或222的第12-2位全為1時(shí)停止。通過(guò)把計(jì)數(shù)寄存器220或222的第2-5位與它的邊界寄存器221或224加以比較,即可檢測(cè)出是否有邊界跨越。如果計(jì)數(shù)寄存器220、222的值大于邊界寄存器221,224的值,那么就檢測(cè)出一次邊界跨越。
(g)握手序列的BCU156/適配器154圖25所示的定時(shí)圖展示了BCU156和適配器154之間對(duì)于讀信箱命令和存貯器讀命令而言的握手過(guò)程,這兩條命令均涉及到要把兩個(gè)32位字傳送到局部存貯器210中的工作放到緩沖器。
當(dāng)總線290(圖19A)上發(fā)出讀信箱區(qū)或讀存貯器命令時(shí),一對(duì)信號(hào)“選通左”和“選通右”順序地把命令的左邊部分和右邊部分以及寄存器214和219(見(jiàn)圖19B)中的地址選通至適配器154,從而從S/370存貯器162中取出合適的數(shù)據(jù)。在連線262a上,上升特征(Tag Up)命令緊接在周期性的讀出數(shù)據(jù)信號(hào)之后產(chǎn)生;而在連線262b上的下降特征命令則在取出的數(shù)據(jù)存入緩沖器259之后才產(chǎn)生。當(dāng)下一次周期性的“時(shí)鐘左”和“時(shí)鐘右”信號(hào)產(chǎn)生時(shí),第一次取出的字的左半部分和右半部分通過(guò)總線250選通至緩沖器226。
對(duì)于DMAC通道0或1的總線請(qǐng)求在連線263a或b上產(chǎn)生。當(dāng)邏輯216批準(zhǔn)這一請(qǐng)求時(shí),在連線268上產(chǎn)生總線批準(zhǔn)信號(hào)。DMAC209在連線264a或連線264b上產(chǎn)生確認(rèn)信號(hào),這個(gè)確認(rèn)信號(hào)將使BCU把緩沖器226中的數(shù)據(jù)選通至局部地址總線223;與此同時(shí),DMAC209還把選中的局部存貯地址放在局部地址總線247上。接著,DMAC209在連線267上發(fā)出DTC使邏輯電路253在連線210a上產(chǎn)生存貯選擇信號(hào),總線223上的數(shù)據(jù)則被放入局部存貯器210中適當(dāng)?shù)木彌_器中。
以后的周期性的上升標(biāo)志、時(shí)鐘左和右、和DMAC請(qǐng)求信號(hào)把隨后的數(shù)據(jù)字選通入緩沖器226中,這些數(shù)據(jù)字在DMAC209通過(guò)判優(yōu)邏輯216實(shí)現(xiàn)對(duì)局部總線247,223的訪問(wèn)并且在發(fā)出承認(rèn)信號(hào)和DTC信號(hào)時(shí)被傳輸?shù)酱尜A器210中適當(dāng)?shù)木彌_器中。
與此類似,圖26中也示出了隊(duì)列選擇(Queue selectUp)和寫(xiě)存貯器命令的握手過(guò)程。當(dāng)總線290上發(fā)出其中一個(gè)命令時(shí),“選通左”和“選通右”信號(hào)把事先存貯在寄存器225和227中的命令和地址傳送到適配器154中。在連線262a上,上升特征命令緊接在周期性的數(shù)據(jù)信號(hào)之后產(chǎn)生。在連線263c或d上產(chǎn)生DMAC請(qǐng)求信號(hào)。DMAC209通過(guò)連線269和邏輯電路216對(duì)局部總線247,223進(jìn)行擇優(yōu)。當(dāng)連線269上的請(qǐng)求被批準(zhǔn)之后,DMAC209則在連線264c或d上產(chǎn)生應(yīng)答信號(hào)緊接著在連線267上產(chǎn)生DTC信號(hào),從而把第一個(gè)數(shù)據(jù)字從存貯器210轉(zhuǎn)移至寄存器227。以后的周期性“選通左”和“選通右”信號(hào)再把第一個(gè)數(shù)據(jù)字從寄存器227傳送至適配器154的緩沖器260。
在DMAC209對(duì)局部總線247、223的控制進(jìn)行仲裁時(shí),后讀的連線263c或d上的DMAC請(qǐng)求信號(hào)和DMAC的應(yīng)答及DTC信號(hào)再把后讀的數(shù)據(jù)字傳送到寄存器227中。后讀的“選通左”和“選通右”信號(hào)再把每個(gè)數(shù)據(jù)字從寄存器227傳送到緩沖器260中。
S/370處理單元PE85本最佳實(shí)施例中的每個(gè)處理“單元”(如PE85)都包含用于處理S/370指令的基本設(shè)施和下列設(shè)施基本的32位數(shù)據(jù)流,32位算術(shù)/邏輯單元(ALU)306,32位的移位單元307,48個(gè)寄存器(每個(gè)32位)數(shù)據(jù)局部存貯,具有3一端口尋址能力的303,8字節(jié)S/370指令緩沖器309,以及定時(shí)設(shè)施(CPU定時(shí)器、比較器等等)315。
圖27中示出了PE85的一種較佳形式的簡(jiǎn)化數(shù)據(jù)流??梢岳斫獾氖?,目前存在著許多本技術(shù)領(lǐng)域內(nèi)眾所周知的S/370處理器具體實(shí)現(xiàn)。本較佳實(shí)施例中的每個(gè)處理器單元85的較佳形式是一個(gè)能執(zhí)行系統(tǒng)/370結(jié)構(gòu)中的指令的處理器。該處理器通過(guò)處理器總線170從存貯器16中的一個(gè)實(shí)存貯區(qū)域162中讀取指令和數(shù)據(jù)。雙向總線170是PE85和S/370的芯片組150之間的通用連接線。PE85起到一個(gè)主控的作用,但在系統(tǒng)中具有最低的優(yōu)先級(jí)別。指令由硬件和處于微方式時(shí)由處理器執(zhí)行的微指令來(lái)執(zhí)行。
PE85具有4個(gè)主要功能組總線組”由用于存貯操作數(shù)和指令的發(fā)送寄存器和接收寄存器300、301以及地址寄存器302組成。
“算術(shù)/邏輯組”由數(shù)據(jù)局部存貯器(DLS)303,A、B操作數(shù)寄存器304、305和ALU306及移位單元307組成。
“操作譯碼器組”由控制存貯地址寄存器(CSAR)308,S/370的指令緩沖器(I-緩沖器)309,操作碼寄存器310和具有陷井和異??刂频难h(huán)計(jì)數(shù)器311組成。
“定時(shí)器組”是一個(gè)小型的、相對(duì)獨(dú)立的單元315,由間隔時(shí)鐘315,實(shí)時(shí)鐘,時(shí)鐘比較器和CPU定時(shí)器組成。
下面的簡(jiǎn)要描述將概括出這些邏輯單元的使用情況I-緩沖器309使譯碼器盡可能快地得到S/370指令。包含操作碼的第一個(gè)半字將經(jīng)過(guò)操作碼寄存器310送到譯碼器312從而啟動(dòng)S/370的第Ⅰ階段。第二、三個(gè)半字(如果有的話)則送至ALU進(jìn)行地址計(jì)算。I-緩沖器309是一雙字寄存器,它是在一條S/370指令時(shí)序開(kāi)始之前先通過(guò)寄存器313中的一次強(qiáng)制操作(FOP)(諸如IPL、取PSW、PSW交換等)加載的。I-緩沖器309隨著指令被送入操作碼寄存器310作地址計(jì)算時(shí)是送入ALU306被逐字逐句地重新填滿,在每次成功的分支轉(zhuǎn)移期間被完全重新填滿。操作譯碼器312選擇要執(zhí)行的操作。譯碼器中被送入操作碼及微碼操作碼寄存器310中的內(nèi)容。狀態(tài)位決定由誰(shuí)來(lái)控制譯碼(在強(qiáng)制操作時(shí)沒(méi)有控制者)。
I-緩沖器309中的內(nèi)容被送入操作譯碼寄存器310。并且并行地送入CSAR308中對(duì)控制存貯器171中的一張操作碼表進(jìn)行尋址。該表中的每一條輸入都起到兩個(gè)目的指出微碼程序是否存在并且對(duì)該程序中的第一條指令進(jìn)行尋址。微碼程序的存在是為了執(zhí)行復(fù)雜的指令(如可變字段長(zhǎng)指令)和所有不能被硬件直接執(zhí)行的其它指令。微指令中的特殊功能碼使支持硬件啟動(dòng),從而能用差不多都是16位的微指令來(lái)控制32位的數(shù)據(jù)流。
所有的處理都發(fā)生在一個(gè)如下所述的三級(jí)流水線中第一級(jí)把指令讀入操作碼寄存器310中,第二級(jí)把數(shù)據(jù)和/或地址讀入A/B寄存器304、305和總線發(fā)送寄存器300中。操作碼寄存器310把它的內(nèi)容傳給控制第三級(jí)的操作譯碼器312中,從而為另一次操作的第一級(jí)釋放寄存器310。
第三級(jí)根據(jù)情況需要執(zhí)行ALU移位,或者總線操作。DLS寫(xiě)操作也在第三級(jí)中實(shí)現(xiàn)。
通過(guò)把譯碼器設(shè)置在幾個(gè)組中(未示出)(如,一個(gè)專門(mén)用于ALU,另一個(gè)用于總線組,等等),有效處理可以進(jìn)一步加強(qiáng)。位于A/B寄存器輸入端和ALU輸出端的可選字節(jié)多路復(fù)用器(未示出)進(jìn)一步增強(qiáng)了操作。這樣就有了只占據(jù)流水線的每一級(jí)一個(gè)周期的S/370RR指令。
強(qiáng)制操作寄存器(SOP)313用于內(nèi)部控制。它們從陷井和異常狀態(tài)得到輸入,把另一種狀態(tài)強(qiáng)制置入譯碼器312中。典型的操作是I-緩沖器裝入,過(guò)渡到陷井處理級(jí)別和啟動(dòng)異常處理程序。
每個(gè)過(guò)程碼寄存器310都有它自身的循環(huán)計(jì)數(shù)器311而微碼循環(huán)計(jì)數(shù)器則被一些強(qiáng)制操作碼(FOP)所共享。算術(shù)運(yùn)算和大多數(shù)的其它微指令都只需要一個(gè)周期。執(zhí)行處理器總線操作的大多數(shù)微指令需要二個(gè)周期。
數(shù)據(jù)局部存貯器303包括可通過(guò)三個(gè)端口(二個(gè)輸出,一個(gè)輸入)進(jìn)行存取的48個(gè)全字(4一字節(jié))寄存器。任何寄存器都可以通過(guò)寄存器314進(jìn)行尋址輸入,同一寄存器和兩個(gè)不同的寄存器一起可以同時(shí)進(jìn)行尋址輸出。這種用二重尋址可以允許操作數(shù)的讀取與處理并行進(jìn)行。由于有比較器邏輯和數(shù)據(jù)選通(未示出)功能,在一次寫(xiě)操作中剛剛被尋址過(guò)的寄存器也可以在同一周期中用作輸入,這將便于進(jìn)行流水作業(yè)。
ALU306最好是能夠?qū)φ嬷岛头创a形式的二個(gè)全字操作數(shù)執(zhí)行AND.OR.XOR和ADD操作的一個(gè)全字邏輯單元。也支持十進(jìn)制加法。除了快速進(jìn)位傳送之外,還包括奇偶性判斷和產(chǎn)生。保存寄存器320還支持除法運(yùn)算。狀態(tài)邏輯321還產(chǎn)生和存貯用于轉(zhuǎn)移判決,符號(hào)評(píng)價(jià)等等的各種條件。
控制存貯寄存器308對(duì)控制存貯器171中的微指令和表進(jìn)行尋址。送至CSAR308的輸入要么是來(lái)自相應(yīng)的變址裝置322的經(jīng)刷新的地址,或者是來(lái)自成功的轉(zhuǎn)移操作的轉(zhuǎn)移目標(biāo)地址,或者是進(jìn)行表查找操作的一個(gè)強(qiáng)制地址。在每個(gè)S/370指令的開(kāi)始時(shí)以及對(duì)某些強(qiáng)制操作(SOP)來(lái)說(shuō),表尋找操作是必需執(zhí)行的。CSAR308把得到的操作碼模式作為地址對(duì)操作碼表(見(jiàn)圖29)進(jìn)行存取。這張操作碼表中的輸出定義了能引導(dǎo)操作碼寄存器310的譯碼輸出的執(zhí)行方式。如果要求的是非直接執(zhí)行,操作碼表的輸出則被送回CSAR以便對(duì)合運(yùn)的微程序進(jìn)行尋址。
存貯器地址寄存器302是按24位地址設(shè)計(jì)的。一個(gè)相關(guān)變址器323根據(jù)要取出的數(shù)據(jù)塊的大小刷新地址。指令的取出是在I-緩沖器209空出時(shí)予先以一個(gè)字(4字節(jié))為單位進(jìn)行的。送到存貯地址寄存器302的輸入來(lái)自指令操作數(shù)地址寄存器324。此外為達(dá)到高速度,它是和指令地址寄存器324并行設(shè)置的。
CPU數(shù)據(jù)流允許最大可達(dá)3個(gè)S/370指令同時(shí)重疊執(zhí)行。S/370指令要么被硬件執(zhí)行,要么被微指令所譯碼。本最佳實(shí)施例中的基本循環(huán)時(shí)間為80ns。指令處理在一個(gè)或者多個(gè)80ns的步驟中執(zhí)行。高速乘法裝置PE151提高了二進(jìn)制和浮點(diǎn)制乘法運(yùn)算的速度。采自控制存貯器171中的微指令只用來(lái)執(zhí)行那些光用硬件來(lái)執(zhí)行就會(huì)太復(fù)雜、太費(fèi)時(shí)的S/370指令。這些微指令如果需要的話能以每條指令60ns的速率提供。微指令集針對(duì)S/370指令的解釋而被優(yōu)化。這些微指令具有半字格式,可以對(duì)二個(gè)操作數(shù)進(jìn)行尋址。
控制存貯器171中包含的微碼被保存在IOA區(qū)域187中,IOA區(qū)域187是S/370存貯器162(見(jiàn)圖28、29)中的一個(gè)保留區(qū)。這些微碼中包括用于異常情況的對(duì)操作性能影響不大的代碼,和不太常用的S/370指令等等。這些指令根據(jù)需要讀入控制存貯器171的RAM部分中的64B緩沖器186中。不管什么時(shí)候只要PE85遇到一個(gè)大于控制存貯器171提供的地址,它就向高速緩沖存貯控制器153和存貯控制器接口155發(fā)出一個(gè)64字節(jié)塊讀取操作。單元153、155從IOA187中取出64字節(jié)的數(shù)據(jù)塊,把它送給PE85。PE85再把它存入緩沖器186中。微指令由PE85從緩沖器186中取出,然后執(zhí)行。所有的微碼都在原始微碼裝入(TML)時(shí)間內(nèi)裝入存貯器。本系統(tǒng)提供對(duì)TML的支持,以便于把微碼從S88裝入存貯器中。
S/370指令和用戶數(shù)據(jù)從一個(gè)8KB高速緩沖存貯器340(見(jiàn)圖31)中取出。數(shù)據(jù)以一個(gè)全字為單位讀/寫(xiě)出/入高速緩沖存貯器340中。從/往該高速緩沖器中讀/寫(xiě)一個(gè)全字所需的時(shí)間為120ns。需要時(shí),高速緩沖340可以自動(dòng)地從存貯器162中再裝入64字節(jié)的數(shù)據(jù)塊。PE85通過(guò)處理器總線命令與高速緩沖器340進(jìn)行通訊。PE85提供的虛擬地址用來(lái)在目錄檢索表(DLAT)341中查找相應(yīng)的翻譯以前的頁(yè)地址。
PE85中的數(shù)據(jù)局部存貯器303中包括16個(gè)通用寄存器,4個(gè)浮點(diǎn)寄存器和24個(gè)工作寄存器。所有的寄存器都可以通過(guò)分離的3個(gè)可尋址端口獨(dú)立的進(jìn)行尋址。這樣存貯器303可以在一個(gè)80ns的周期中并行地把兩個(gè)操作數(shù)送入ALU306中,同時(shí)從ALU306或者高速緩沖340中接收一個(gè)全字。由于不象現(xiàn)有的數(shù)據(jù)局部寄存器那樣具有串行性。算術(shù)和邏輯運(yùn)算可以以重疊的方式執(zhí)行,這樣可以為后續(xù)的指令作準(zhǔn)備。
CPU為S/370指令保留了一個(gè)8字節(jié)的指令緩沖器(I-緩沖器)309。這種緩沖器被一條成功的S/370轉(zhuǎn)移指令所初始化。PE85從來(lái)自高速緩沖340的S/370指令流中取出一個(gè)雙字?jǐn)?shù)據(jù),并把它裝入I-緩沖器309中。當(dāng)?shù)谝粋€(gè)全字被裝入I-緩沖器309的時(shí)候,PE85又開(kāi)始了指令執(zhí)行。從高速緩存340中取出I-緩沖數(shù)據(jù)與S/370指令的執(zhí)行是向時(shí)進(jìn)行的。由于每條S/370指令執(zhí)行時(shí)的第一個(gè)周期為非-高速緩存周期,CPU就利用這個(gè)周期把一個(gè)全字從高速緩存340中預(yù)先讀入I-緩沖器309中。
第二個(gè)非-高速緩存周期只是那些在進(jìn)行有效地址計(jì)算中需要變址或者需要由微程序執(zhí)行的那些S/370指令才可利用。在這些情形下,S/370指令的讀取和執(zhí)行可以完全地重疊在一起。
在本最佳實(shí)施例中,S/370的芯片組150是通過(guò)一個(gè)中斷機(jī)構(gòu)進(jìn)行通訊的、該中段機(jī)構(gòu)要求收到中斷的芯片通過(guò)使送出芯片的中斷鎖存器復(fù)位的方式作出應(yīng)答。
不論何時(shí),一旦系統(tǒng)(比方說(shuō)通過(guò)BCU156)設(shè)置(激勵(lì))適配器154的狀態(tài)寄存器(STR)中的一個(gè)或多個(gè)數(shù)據(jù)位時(shí),系統(tǒng)也必需激勵(lì)N-ATTN-REQ控制線。當(dāng)目前的S/370指令執(zhí)行完以后上述的狀態(tài)寄存器中的所置的位將在處理器單元85中造成一個(gè)異常情況,這樣就迫使處理器單元85查看狀態(tài)寄存器。接著一個(gè)異常情況處理器程序檢測(cè)STR的內(nèi)容。詢問(wèn)“中段類型”,分配合適的微程序。一旦處理器單元85激勵(lì)STR中的一個(gè)數(shù)據(jù)位,系統(tǒng)必需因此作出反應(yīng)?;旧嫌卸N類型的中段請(qǐng)求1.系統(tǒng)請(qǐng)求(SYSREQ)是(通過(guò)BCU156)送至S/370處理器單元85的要求。系統(tǒng)把中段類型置入STR中以規(guī)定它的要求。這將在處理器單元85中產(chǎn)生異常情況,處理器單元85把控制轉(zhuǎn)移給異常情況處理程序,這個(gè)異常情況處理程序即調(diào)用合適的微程序,這些微程序?qū)⑾蜻m配器154發(fā)出一個(gè)PROC總線命令使STR中適當(dāng)?shù)闹卸晤愋蛷?fù)位,執(zhí)行由該中段類型定義的功能,再執(zhí)行下一條S/370指令。
2.轉(zhuǎn)移請(qǐng)求既可以被系統(tǒng)、也可以被PE85所調(diào)入,它與系統(tǒng)接口上的附加數(shù)據(jù)傳輸有關(guān)。出于這個(gè)目的,STR中設(shè)定了兩個(gè)中斷鎖存器一個(gè)是處理器通信請(qǐng)求(PCR),另一個(gè)是系統(tǒng)通訊請(qǐng)求(SCR)。PCR由PE85設(shè)定,由系統(tǒng)復(fù)位;而SCR由系統(tǒng)設(shè)定,由PE85復(fù)位。
對(duì)于快速數(shù)據(jù)傳輸操作,假定有二個(gè)附加的寄存器由PE85設(shè)置被系統(tǒng)讀取的BQ寄存器115(圖13)和由系統(tǒng)設(shè)置被PE85讀取的BS寄存器116。
下面是PE85對(duì)系統(tǒng)傳送請(qǐng)求所作響應(yīng)的一個(gè)例子。PE85把要發(fā)送給系統(tǒng)的數(shù)據(jù)置入寄存器115中,并設(shè)定PCR1鎖存器。系統(tǒng)從寄存器115中讀出數(shù)據(jù),并使PCR鎖存器復(fù)位。
處理器85能檢測(cè)PCR鎖存器??此欠褚驯粡?fù)位。通過(guò)重復(fù)上述的順序,PE85可以把其它的數(shù)據(jù)也傳送到系統(tǒng)之中。
系統(tǒng)也可以采用下面所描述的相似方法來(lái)傳送數(shù)據(jù)。系統(tǒng)把要送往PE85的數(shù)據(jù)置入寄存器116中并且設(shè)定SCR鎖存器。PE85即被中斷,檢測(cè)STR,發(fā)現(xiàn)SCR鎖存器已被設(shè)定,就從寄存器16中讀出數(shù)據(jù),并使SCR鎖存器復(fù)位。系統(tǒng)可以詢問(wèn)SCR鎖存器是否已經(jīng)復(fù)位。
3.系統(tǒng)可以通過(guò)重復(fù)以上的順序的方式向PE85轉(zhuǎn)移更多的數(shù)據(jù)。
數(shù)據(jù)也可以通過(guò)IOA存貯區(qū)187進(jìn)行交換。對(duì)于PE85和適配器154有若干PROCBUS命令允許它們往/從IOA區(qū)域187中存/取數(shù)據(jù)。
PE85有一套分配在IOA區(qū)域187中的緩沖器,并把要被系統(tǒng)讀取的數(shù)據(jù)置入其中。因此,系統(tǒng)也有一套分配在IOA區(qū)域187中的緩沖器187,并把要被PE85讀取的數(shù)據(jù)置入其中。中斷類型IOASYS/IOAPU可以用在SYSREQ中,用來(lái)指示對(duì)方數(shù)據(jù)已置入IOA緩沖器中。
使用系統(tǒng)可以產(chǎn)生一定的機(jī)器校驗(yàn)和外部中斷條件。系統(tǒng)可以通過(guò)發(fā)出一個(gè)SYSREQ或XFERREQ通信請(qǐng)求的方式向PE發(fā)送一個(gè)通訊請(qǐng)求。PE85執(zhí)行下列功能a.檢測(cè)寄存器STR并詢問(wèn)它的內(nèi)容。
b.調(diào)用系統(tǒng)提供的微程序。系統(tǒng)的中斷請(qǐng)求處理器執(zhí)行特定的中斷處理。在合適的時(shí)間點(diǎn)上微程序向適配器154發(fā)出一個(gè)PROCBUS命令從而使相應(yīng)的SYSREQ或者XFEREQ復(fù)位。最后,再把控制送回至S/370的微碼。
c.PE85為適當(dāng)?shù)腟/370中斷級(jí)別執(zhí)行PSWSWAP并執(zhí)行NS1功能。
I/O中斷請(qǐng)求由系統(tǒng)通過(guò)設(shè)置STR中的I/O位來(lái)產(chǎn)生。每次當(dāng)目前的S/370指令被完成時(shí),異常情況處理器被調(diào)用。在本程序中,PE85讀DTR從而識(shí)別出I/O中斷請(qǐng)求。PE85使STR位復(fù)位,并把其內(nèi)部的中斷請(qǐng)求鎖存器設(shè)置為PE85。這個(gè)鎖存器被當(dāng)前PSW的I/O表征碼(mask)所掩蔽。如果表征碼為1,且沒(méi)有更高優(yōu)先級(jí)別的中斷請(qǐng)求處于懸而未決狀態(tài),異常處理器則把控制轉(zhuǎn)給一個(gè)處理I/O中斷請(qǐng)求的由系統(tǒng)提供的I/O中斷請(qǐng)求處理程序。
處理器總線170(圖11和30)和處理器總線命令。
處理器總線170是所有的S/370芯片組部件的公共連線。從邏輯上說(shuō),下面列出的所有線均屬于這條總線1.處理器總線(0-31加上4個(gè)奇偶校驗(yàn)位)通常被用于在一個(gè)周期內(nèi)傳輸一條命令及一個(gè)地址;接著在下一周期中傳送相應(yīng)的數(shù)據(jù)。使用該總線的許可由最好位于總線適配器154中的仲裁器給出。當(dāng)通過(guò)總線批準(zhǔn)邏輯PE85給出許可信號(hào)時(shí),PE85在下一周期中在適當(dāng)?shù)目偩€連線上放置4項(xiàng)數(shù)據(jù)。對(duì)于存貯器存取操作型的命令,它被放置在PROC總線的連線0-7上;地址放在PROC總線連線8-31上,存取鍵被放置在鍵狀態(tài)總線上,同時(shí)還產(chǎn)生“N-命令-有效”信號(hào)。
2.鍵/狀態(tài)總線(0-4加上奇偶校驗(yàn)位)用于兩個(gè)目的把存取鍵送去存貯,并取回狀態(tài)報(bào)告。被傳送的是4位S/370PSW存取鍵加上一個(gè)表示PSW控制方式位(BC或EC)和動(dòng)態(tài)地址翻譯位相與結(jié)果的第5位。
對(duì)于一個(gè)成功的操作而言,返回的狀態(tài)應(yīng)該為零。非零狀態(tài)在大多數(shù)情況下都會(huì)在PE85中產(chǎn)生一個(gè)陷井。對(duì)于在被尋址的總線單元中設(shè)置控制鎖存器的“消息”類命令而言,不期望有任何狀態(tài)信息。
3.一旦一個(gè)操作不能在啟動(dòng)時(shí)的同一周期內(nèi)完成,“N-總線-忙”連線上就會(huì)產(chǎn)生一個(gè)忙碌指示信號(hào)。對(duì)于需要多于1個(gè)周期來(lái)完成的所有命令,N-總線-忙碌信號(hào)由PE85與N-CMD-有效信號(hào)同時(shí)發(fā)出。
如果命令的執(zhí)行需要兩個(gè)或更多的周期,被尋址的總線單元有責(zé)任把N-總線-忙碌信號(hào)的電平拉至有效電平。當(dāng)被尋址的總線單元在后面的兩個(gè)周期中不能接受下一條命令時(shí),N-總線-忙碌信號(hào)的電平也將被拉至有效電平。但這條規(guī)則有一條例外如果把PE85向BSM陣列主存貯器162發(fā)出存貯操作命令,它將在三個(gè)周期中激勵(lì)N-總線-忙碌信號(hào)。一般情況下,N-總線-忙碌信號(hào)至少在比命令執(zhí)行所需的周期少一個(gè)周期的期間內(nèi)處于有效電平。
4.存貯器管理單元(MMU)忙碌信號(hào)發(fā)源于高速緩存控制器153。該信號(hào)被用來(lái)向PE85指出所有的需要多于一個(gè)周期來(lái)執(zhí)行的存貯器存取型操作要用的狀態(tài)和數(shù)據(jù)已經(jīng)來(lái)到。
取操作時(shí)原則上是在(開(kāi)始之后的)下一個(gè)周期或更晚的周期中才送出數(shù)據(jù)。如果在下一周期就送出數(shù)據(jù)和狀態(tài),MMU-忙碌信號(hào)保持在無(wú)效的低電平(0)上。如果在下一周期不能送出數(shù)據(jù)和狀態(tài),則MMU-忙碌信號(hào)上升至1,然后在數(shù)據(jù)和狀態(tài)被實(shí)際放至總線上的那個(gè)周期中回到0。
在存貯操作期間,PE85(在存貯操作開(kāi)始之后的)下一周期內(nèi)期待著鍵狀態(tài)總線上的狀態(tài)。如果狀態(tài)數(shù)據(jù)在下一周期中被送出,則MMU-忙碌信號(hào)保持在無(wú)效(0);不然的話就上升至1,并在狀態(tài)數(shù)據(jù)實(shí)際送出的那個(gè)周期中回到0。
5。高速緩存控制器153用MISS IND線上的高速緩存喪失指示向PE85指出DLAT-丟失,鍵-丟失,和地址違例。這個(gè)指示是狀態(tài)中也要用到的信息的復(fù)制。這根線只有在鍵狀態(tài)總線上出現(xiàn)狀態(tài)的那個(gè)周期內(nèi)才有效,但是丟失指示線提早幾階毫微秒就被激勵(lì)。這個(gè)丟失指示在下一周期中通過(guò)PE85產(chǎn)生一個(gè)陷井。
6.在“總線-批準(zhǔn)PE85”線上的信號(hào)將給PE85以使用該總線的許可。該信號(hào)源于仲裁器。PE85在批準(zhǔn)信號(hào)變成有效、N-總線-忙碌信號(hào)為無(wú)效的那個(gè)周期之后的周期中PE85把預(yù)定操作的命令和地址順次放到總線上。
7.使用N-ATTN-REQ線上的任意請(qǐng)求信號(hào)來(lái)源于其他一些總線單元(如總線適配器154),要求PE85執(zhí)行一次“檢測(cè)”操作。只要進(jìn)行中的當(dāng)前操作(如指令執(zhí)行)一結(jié)束,PE85就執(zhí)行上述請(qǐng)求。
8.PE85用N-CMD-有效線上的命令有效信號(hào)指出PROCBUS線0-31和鍵狀態(tài)總線中第0-4線(包括所有的奇偶校驗(yàn)線)上的位模式有效。這根線可以在“總線-批準(zhǔn)-PE85”信號(hào)變成有效及“N-總線-忙碌”信號(hào)變?yōu)闊o(wú)效的那個(gè)周期之后的周期中變成有效(低電平)。
9.對(duì)于存貯器訪問(wèn)型操作,PE85用地址-遞減線對(duì)被訪問(wèn)的地址進(jìn)行從起始地址向下的遞減操作(比方說(shuō)象十進(jìn)制數(shù)處理的數(shù)據(jù)傳輸所要求的那樣)。這個(gè)信號(hào)在N-CMD-有效被激勵(lì)的同一周期中被激勵(lì)。
10.“CMD-取消”線上的命令取消信號(hào)被PE85用來(lái)取消已經(jīng)發(fā)出的對(duì)存貯器的讀取。這種情況發(fā)生在這樣的一個(gè)周期內(nèi),即N-CMD-有效信號(hào)已變?yōu)橛行Ф鳳E85卻發(fā)現(xiàn)應(yīng)禁止直接使用被請(qǐng)求的數(shù)據(jù)條件。
本最佳實(shí)施例中,有五組眾所周知類型的PROC BUS命令CPU存貯器型,I/O存貯器型,MMU操作型,信息交換型和浮點(diǎn)型。
要求總線171實(shí)施控制的總線單元(PE85,適配器154或高速緩存控制器153)把命令放置在總線上。對(duì)于CPU-存貯器型和I/O-存貯器型命令,總線單元還把存取鍵和動(dòng)態(tài)地址翻譯位放置在鍵狀態(tài)總線上。命令完成之后,通過(guò)相同的總線把狀態(tài)送到發(fā)出請(qǐng)求的那個(gè)總線單元。
適配器154能發(fā)出CPU-存貯器命令和I/O-存貯器型命令,而PE85只發(fā)出CPU-存貯器型命令。這些命令組如下所示操作 CPU存貯器型命令I(lǐng)/O-存貯器型命令1.對(duì)S/370主存貯器的引用a)讀取高速緩存命中 以高速緩存中讀取從高速緩存中讀取高速緩存丟失 用存貯器對(duì)高速緩存線進(jìn)行再裝入(包括丟失),從高速緩存中讀取b)存貯高速緩存命中 存入高速緩存中 存入高速緩存中高速緩存丟失 從存貯器對(duì)高速緩 存入存貯器中存線進(jìn)行再裝入(包括丟矢),存入高速緩存中2.內(nèi)部目標(biāo)區(qū)域 某些CPU-存貯(IOA)參考 器命令允許對(duì)IOA存貯地址進(jìn)行檢驗(yàn)I/O-存貯器型命令不檢驗(yàn)S/370的主存貯器地址便在高速緩存控制器153中被執(zhí)行。這種檢驗(yàn)是在STC1155中執(zhí)行的。CPU-存貯器型命令被轉(zhuǎn)到控制器153去執(zhí)行,此類命令具有1個(gè)字節(jié)的命令字段和三個(gè)字節(jié)的實(shí)的或虛擬的地址字段。命令字段中的數(shù)據(jù)位如下CMD位 意義0-1=10CPU-存儲(chǔ)型命令2=1 取(操作)2=0 存(操作)3=1 超高速緩(沖)存(儲(chǔ)器)旁路,無(wú)地址檢驗(yàn)3=0 超高速緩(沖)存(儲(chǔ)器)訪問(wèn),有地址檢驗(yàn)-S/370地址比較-ACB檢驗(yàn)4=1 不存取DLAT(目錄查閱表);即-不作鍵保護(hù)檢驗(yàn)-不做引用和修改位的處理存取目錄查詢表即-鍵保護(hù)檢驗(yàn)-作引用和改變位的處理5-7=nnn 字節(jié)長(zhǎng)度計(jì)數(shù)000=1字節(jié)001=2字節(jié)010=3字節(jié)011=4字節(jié)100=8字節(jié)101=64字節(jié)110=64字節(jié)取1從BSM放慢111=64字節(jié)取1從適配器放慢CPU-存儲(chǔ)型命令的例子是1.取(10111nnn)/存(10011nnn)實(shí)N字節(jié),以一實(shí)地址從存儲(chǔ)器162中取出/存入最多為64字節(jié)。2.取(101010nn)/存(100010nn)超高速緩存實(shí)N字節(jié),以一實(shí)地址從超高速緩存讀出/寫(xiě)入最多為4字節(jié)。3.取(101011nn)/存(100011nn)高速緩存實(shí)N字節(jié),以一實(shí)地址從IOA讀出/寫(xiě)入最多為4字節(jié)。4.取(101000nn)/存(100000nn)高速緩存虛N字節(jié),以一虛地址從高速緩存讀出/寫(xiě)入最多為4字節(jié)。
I/O存儲(chǔ)型命令由適配器154啟動(dòng)并指向高速緩存控制器153。它們傳送數(shù)據(jù)串以遞升的地址次序,長(zhǎng)度從1至64字節(jié)。32位的命令格式包括三個(gè)低位字節(jié)和一個(gè)高位字節(jié),低位三字節(jié)表示實(shí)際的字節(jié)地址,而高位字節(jié)中的最高位為“0”,次高位定義-存或取的操作,而其余的6位定義數(shù)據(jù)傳送的長(zhǎng)度(1-64字節(jié))。數(shù)據(jù)串按字邊界傳送,但第一和最后的傳送例外,它們可能需要在總線上對(duì)準(zhǔn)位置。
MMU命令用以控制高速緩存控制器153及其寄存器包括DLAT,ACB,目錄之類。
消息命令系用以在連到總線151上的名總線單元之間傳送消息。S/370存儲(chǔ)管理單元811.高速緩(沖)存(儲(chǔ)器)控制器153(圖31)高速緩存控制器,圖31,包括高速緩沖存儲(chǔ)器340及訪問(wèn)和比較邏輯347,348,取操作的邊界對(duì)準(zhǔn)器,以及為快速地址翻譯用的目錄查詢表(DLAT)341,當(dāng)通過(guò)高速緩存340不能滿足要求時(shí)控制器153從處理器總線170接收虛地址和存儲(chǔ)命令并且通過(guò)多路轉(zhuǎn)接器349和STC總線157傳送取或存命令到存儲(chǔ)控制接口155(圖11)。
DLAT341提供從虛頁(yè)地址到實(shí)頁(yè)地址的快速翻譯。它的2×32表項(xiàng)容納64翻譯前的頁(yè)地址。DLAT341使用二義樹(shù)聯(lián)想尋址方案來(lái)訪問(wèn)。虛頁(yè)的大小以4KB為宜。在DLAT丟失的情況下,PE85即被中斷而虛地址的翻譯就由微程序使用S/370主存162中的表和頁(yè)表(未示出)以眾所周知的方法完成。然后DLAT341被更新以反映從主存中取出而放入高速緩存中的信息的新的虛和實(shí)頁(yè)地址。存儲(chǔ)鍵的拷貝從S/370的鍵存儲(chǔ)器中取出而包含到DLAT的表項(xiàng)中。
8KB高速緩存340及其相關(guān)聯(lián)的高速緩存目錄342提供高速度的緩沖以顯著地改善處理器的性能。數(shù)據(jù)和目錄陣列劃分為4個(gè)部分。高速緩存中的每個(gè)部分由256×8B(字節(jié))組成。為從高速緩存340中取出數(shù)據(jù),虛地址中的字節(jié)位移用以同時(shí)訪問(wèn)DLAT341,高速緩存目錄342和高速緩存340。鍵控制的保護(hù)檢驗(yàn)由比較電路345用選定的DLAT表項(xiàng)中的存儲(chǔ)鍵來(lái)完成。4×8B數(shù)據(jù)在高速緩沖340的輸出340a上鎖定。如果所要的數(shù)據(jù)在高速緩存340中,則用一個(gè)滯后的選擇信號(hào)把此適當(dāng)?shù)淖止?jié)選通到取操作邊界對(duì)準(zhǔn)器343。
對(duì)于存儲(chǔ)型操作,部分存儲(chǔ)是在字節(jié)基礎(chǔ)上實(shí)現(xiàn)的。
在高速緩存丟失的情況下,高速緩存控制器153自動(dòng)設(shè)置一個(gè)BSM命令以用實(shí)發(fā)方式取出所要的64B超高速緩存行。如果由于要由新的起高速緩存行代替的那一超高速緩存行已被裝入而改變,就在新的超高速緩存行裝入之前啟動(dòng)對(duì)存儲(chǔ)器162的超高速緩存行的擲出操作。I/O數(shù)據(jù)永不引起超高速緩存行的擲出和裝入操作。要從存儲(chǔ)器162中取出的I/O數(shù)據(jù)將以訪問(wèn)主存162和超高速緩存340的方法在兩設(shè)備雙方中尋找。如果在超高速緩沖中找出,存儲(chǔ)操作就取消,而超高速緩存就提供數(shù)據(jù)。如果I/O數(shù)據(jù)不在超高速緩存中,則它將從主存中直接取出,但是不取代超高速緩存行。要存入主存的I/O數(shù)據(jù)將存入超高速緩存340,如果要訪問(wèn)的行已經(jīng)在超高速緩存中;否則,它即將直接存入主存162。
4KB鍵存儲(chǔ)器344為16MB存儲(chǔ)器保存鍵。鍵存儲(chǔ)器是4K×8組成的陣列。每個(gè)字節(jié)保存一個(gè)存儲(chǔ)鍵。每個(gè)DLAT表項(xiàng)保存一個(gè)存儲(chǔ)鍵及其相關(guān)連的4KB塊地址的拷貝。當(dāng)反復(fù)訪問(wèn)一個(gè)頁(yè)面時(shí),這種情況就顯著減少訪問(wèn)鍵存儲(chǔ)器的次數(shù)。存儲(chǔ)鍵字賦值的改變既影響鍵存儲(chǔ)器也影響在超高速緩沖存儲(chǔ)器中的任何拷貝。
超高速緩存控制器153經(jīng)過(guò)接收器線路355從處理器總線170接受來(lái)的命令、數(shù)據(jù)和地址存儲(chǔ)在命令的、數(shù)據(jù)的和地址的寄存器350,351和352中。地址寄存器347為有關(guān)的S/370處理部件PE85儲(chǔ)存有效地址的范圍。比較邏輯348檢驗(yàn)收到的地址的有效性。由地址寄存器347及其有關(guān)的比較邏輯348所提供的S/370地址比較功能既從PE85也從I/O總線適配器154處理地址。
地址比較邊界(ACB)寄存器353的比較功能保證預(yù)定給顧客區(qū)域的S/370主存訪問(wèn)不訪問(wèn)IOA區(qū)域。ACB寄存器353儲(chǔ)存在S/370主存162中的保留的IOA區(qū)域和非保留的區(qū)域之間的分界線(邊界)。對(duì)S/370主存的每個(gè)訪問(wèn)導(dǎo)致比較邏輯354將收到的地址與ACB的值相比較。2.STCI155(圖32A,B)(a)導(dǎo)言存儲(chǔ)控制接口(STCI)155將S/370芯片組150經(jīng)過(guò)總線邏輯178和系統(tǒng)總線30(圖1)連接到S/88雙聯(lián)的容錯(cuò)存儲(chǔ)器16,18。它支持所有的S/370處理器的和I/O存/取的命令,這些命令定義每個(gè)命令中從1至64字節(jié)的數(shù)據(jù)傳送。所有ECC刷新,存儲(chǔ)器初始化和配置,重試等等都由S/88處理器62和存儲(chǔ)器16、18處理,STCI155的詳細(xì)的數(shù)據(jù)流由圖32A,B示出。
在存儲(chǔ)管理單元83中的STCI155,它的對(duì)偶STCI155a(未示出),和他們?cè)诨锇閱卧?3(圖8)中的對(duì)應(yīng)的STCI對(duì)偶(未示出)經(jīng)過(guò)諸如在每個(gè)STCI中的邏輯408(圖32B)的仲裁一起對(duì)系統(tǒng)總線結(jié)構(gòu)30實(shí)施控制。STCI155不但要象在圖7中所見(jiàn)那樣對(duì)I/O控制器和模塊9的其他CPU25,27和29,31仲裁,而且STCI155必須對(duì)它的相關(guān)聯(lián)的S/88處理器62(和該處理器在圖8的CPU21,23中的對(duì)偶和伙伴處理器進(jìn)行仲裁,因?yàn)樘幚砥?2可能正為S/370的I/O功能或常規(guī)的S/88功能要求控制總線。
但是,仲裁邏輯不象通常類似于Reid專利中所描述的主要基于處理器和I/O板的模塊式的底板插槽的位置?,F(xiàn)在讓我們來(lái)描述這一邏輯。在仲裁階段,處理器模塊9的能夠成為總線主人并且準(zhǔn)備啟動(dòng)總線周期的任何單元對(duì)總線結(jié)構(gòu)的使用作出仲裁。上述功能是這樣實(shí)現(xiàn)的,一方面保持總線周期的請(qǐng)求信號(hào),同時(shí)借助于仲裁網(wǎng)絡(luò)對(duì)于具有更高優(yōu)先權(quán)的單元進(jìn)行檢查看看是否有更高優(yōu)先權(quán)的單元也堅(jiān)持有總線周期請(qǐng)求。在仲裁期間能夠成功地獲得訪問(wèn)總線結(jié)構(gòu)的單元或伙伴單元的對(duì)偶稱為總線主人并在下一時(shí)鐘階段開(kāi)動(dòng)一個(gè)傳送周期。各個(gè)存儲(chǔ)單元16,18都永不作主人也不仲裁。
在一周期的定義階段,已經(jīng)決定作該周期內(nèi)的總線主人的單元以產(chǎn)生一組周期定義或功能信號(hào)來(lái)定義周期的類型。總線主人還維護(hù)地址信號(hào)并且在地址奇偶線上為此地址和功能信號(hào)設(shè)置偶校驗(yàn)。處理器模塊的所有單元,不論其內(nèi)部運(yùn)行狀態(tài),總是在攜帶功能和地址信號(hào)的總線導(dǎo)線上接收信號(hào),盡管外圍控制單元沒(méi)有收到奇偶校驗(yàn)信號(hào)也能運(yùn)行。如果此時(shí)出現(xiàn)一個(gè)總線等待信號(hào)被定義的周期就停止。
在響應(yīng)階段,系統(tǒng)的任何正在工作的被尋址單元可以保持總線忙碌信號(hào)以取消此周期。例如,存儲(chǔ)單元工作時(shí)或在刷新周期中如果被尋址就可以保持總線忙信號(hào)。在響應(yīng)階段出現(xiàn)總線差錯(cuò)信號(hào)將停止此周期,因?yàn)檫@個(gè)錯(cuò)誤可能已經(jīng)混在周期定義階段給出的地址中。在數(shù)據(jù)傳送階段數(shù)據(jù)既在總線A上也在總線B上傳送,既供讀周期也供寫(xiě)周期。這樣就能夠使系統(tǒng)在總線結(jié)構(gòu)上把讀周期與寫(xiě)周期以流水線方式混合傳送,而不為使用數(shù)據(jù)線而重新仲裁并且無(wú)須為源單元或目的地單元而標(biāo)記數(shù)據(jù)。
全字傳送伴以既插入U(xiǎn)DS也插入LDS(低和高數(shù)據(jù)選通)信號(hào)。半字或字節(jié)傳送定義為伴隨著上述選通信號(hào)之一的出現(xiàn)而傳送。在循環(huán)的早期,總線主人只要不給出任一種選通信號(hào)就能把寫(xiě)傳送停止正在被讀的從單元必須與數(shù)據(jù)一起插入選通信號(hào)。選通信號(hào)包含在計(jì)算總線數(shù)據(jù)奇偶性中。
數(shù)據(jù)傳送階段查出的差錯(cuò)將引起查出此差錯(cuò)的單元在下一定時(shí)階段即第一個(gè)數(shù)據(jù)結(jié)束階段給出上述的總線差錯(cuò)信號(hào)之一個(gè)或二者。外圍控制單元在使用數(shù)據(jù)以前等著檢測(cè)是否有差錯(cuò)發(fā)生然而在系統(tǒng)的中央處理單元21和主存單元16則只要一接到數(shù)據(jù)就使用,而在差錯(cuò)錯(cuò)情況下,事實(shí)上就退回,等待正確的數(shù)據(jù)。在數(shù)據(jù)結(jié)束階段插入總線差錯(cuò)信號(hào)引起在下一個(gè)即傳送周期的第六階段中重復(fù)傳送階段。這樣就停止了這個(gè)周期(如果有的話),它要不能在這個(gè)第二個(gè)數(shù)據(jù)滯留階段即第六階段就會(huì)在總線結(jié)構(gòu)上傳送數(shù)據(jù)。
示例系統(tǒng)的通常的底板操作方式是當(dāng)所有單元處在服從雙方方式時(shí),在此方式中A總線和B總線雙方都沒(méi)有差錯(cuò)。例如,響應(yīng)在A總線上的差錯(cuò),所有單元同步地轉(zhuǎn)向服從B方式。模塊9借助于運(yùn)行在S/88中央處理器中的管理程序軟件回到服從雙方狀態(tài)。
在服從B和服從A兩種操作狀態(tài),A總線和B總線二者都由系統(tǒng)單元驅(qū)動(dòng)并且所有單元仍執(zhí)行全部的差錯(cuò)檢驗(yàn)。與服從雙方方式的操作僅有的不同在于各單元只是將接著的差錯(cuò)記錄到不被服從的總線上而并不要求重復(fù)數(shù)據(jù)和停止任何周期。然而總線差錯(cuò)信號(hào)在被服從的總線上是按上述處理并且所有單元轉(zhuǎn)向服從另一總線。(b)系統(tǒng)總線的各階段圖33示出關(guān)于模塊9在總線結(jié)構(gòu)30上帶有四個(gè)管道式的多階段傳送周期的上述操作。波形56a和56b示出時(shí)鐘38運(yùn)用于X總線46的S/88主時(shí)鐘和主同步信號(hào),對(duì)21個(gè)連續(xù)的計(jì)時(shí)階段編號(hào)為(1)至(21),如圖中上部所標(biāo)示。以波形58a表示的在總線結(jié)構(gòu)上的仲裁信號(hào)在每個(gè)啟動(dòng)的計(jì)時(shí)階段開(kāi)始時(shí)交替,對(duì)一個(gè)新周期仲裁為周期編號(hào)代號(hào)#1,#2,#3…#21所注明。圖33以波形58b表示周期定義信號(hào)。對(duì)每個(gè)周期的周期定義信號(hào)比對(duì)該周期的仲裁信號(hào)延遲一個(gè)時(shí)鐘階段發(fā)生,如在波形58b上以周期編號(hào)所注明。該圖還表示了占線、等待,數(shù)據(jù),A總線差錯(cuò)和B總線差錯(cuò)等信號(hào)。該圖底部一行示出系統(tǒng)在其中運(yùn)行的底板狀態(tài)并示出在不同狀態(tài)間的轉(zhuǎn)換。
進(jìn)一步參看圖33,在定時(shí)階段編號(hào)(1)期間,模塊9對(duì)周期#1產(chǎn)生周期仲裁信號(hào)。系統(tǒng)在服從雙方狀態(tài)中運(yùn)行,如圖所示。在階段(1)的周期仲裁期間所決定的總線主單元定義在定時(shí)階段(2)所要執(zhí)行的周期,如在周期定義信號(hào)波形58b上以符號(hào)#1所標(biāo)明。同樣,在定時(shí)階段(2)執(zhí)行對(duì)第二個(gè)周期即周期#2的仲裁。
在定時(shí)階段(3)在總線結(jié)構(gòu)上沒(méi)有對(duì)周期#1的響應(yīng)信號(hào),這種情況表示這一周期已準(zhǔn)備進(jìn)行下去著手?jǐn)?shù)據(jù)傳送,如同發(fā)生在定時(shí)階段(4)并在數(shù)據(jù)波形58e上以符號(hào)#1所標(biāo)明那樣。同樣,在定時(shí)階段(3)期間,執(zhí)行對(duì)周期#2的周期定義和執(zhí)行對(duì)進(jìn)一步的周期#3的仲裁。
在定時(shí)階段(4),傳送對(duì)周期#1的數(shù)據(jù)和執(zhí)行對(duì)周期#3的定義。同樣,在此定時(shí)階段插入總線A差錯(cuò),如以波形58f所示明。該差錯(cuò)信號(hào)停止周期#2并且把在模塊內(nèi)的所有單元轉(zhuǎn)向服從B方式。定時(shí)階段(4)的總線A差錯(cuò)信號(hào)表示在前一定時(shí)階段(3)至少有一個(gè)系統(tǒng)的單元查出了關(guān)于從A總線42來(lái)的差錯(cuò)。差錯(cuò)發(fā)生于在總線結(jié)構(gòu)上沒(méi)有數(shù)據(jù)的時(shí)候,如在定時(shí)階段(3)期間在波形58e中沒(méi)有數(shù)據(jù)的情況所示,這就沒(méi)有重復(fù)數(shù)據(jù)傳送的需要。
在定時(shí)階段5期間,當(dāng)系統(tǒng)運(yùn)行于服從B狀態(tài)時(shí)仲裁第5個(gè)周期,定義周期#4的功能并且在總線結(jié)構(gòu)上對(duì)周期#3沒(méi)有響應(yīng)信號(hào)。于是該周期在時(shí)間階段(6)繼續(xù)進(jìn)行傳送數(shù)據(jù)。同樣,在時(shí)間階段(6)插入總線等待,如在波形58d中所表現(xiàn);此情況與周期#4相連接,其效果是為另一定時(shí)階段延伸該周期并停止周期#5。
在定時(shí)階段(7)仲裁新周期#7并為周期#6進(jìn)行定義操作。在時(shí)間階段(8),供周期#4的數(shù)據(jù)施加于總線結(jié)構(gòu)以供傳送。同樣,在時(shí)間階段(8)插入占線信號(hào)。此信號(hào)為對(duì)周期#6響應(yīng)的一部分并停止該周期。
在時(shí)間周期(9)中仲裁和定義的操作根據(jù)確認(rèn)的另一總線A的錯(cuò)誤遵循相同的模式。系統(tǒng)已經(jīng)運(yùn)行于服從B狀態(tài)于是對(duì)此信號(hào)的響應(yīng)僅為記錄此差錯(cuò)。
在時(shí)間階段(10)中并繼續(xù)到時(shí)間階段(11)中插入的總線等待信號(hào),將周期#8延伸兩個(gè)時(shí)間階段,使得給該周期的數(shù)據(jù)在時(shí)間階段(13)期間傳送,如圖所示。在這些階段期間確認(rèn)的總線等待信號(hào)同樣也停止周期#9和#10,如圖所示。鑒于周期#8被總線等待信號(hào)所延伸,在階段(10),(11)或(12)期間給出的任何占線信號(hào)會(huì)停止周期#8。注意偽周期#7的數(shù)據(jù)傳送發(fā)生在時(shí)間階段(10)而不依賴在此時(shí)間階段等待和占線導(dǎo)線上的信號(hào)。
發(fā)生在時(shí)間階段(11),(12)和(14)期間的新的總線A差錯(cuò)信號(hào)除了被記錄之外對(duì)系統(tǒng)同樣沒(méi)有影響,因?yàn)橄到y(tǒng)已經(jīng)運(yùn)行在服從B狀態(tài)。在時(shí)間階段(14)給出的等待信號(hào)停止周期#13。同樣,它延伸周期#12,不管怎樣該周期系被在時(shí)間階段(14)期間所出現(xiàn)的占線信號(hào)所停止。偽周期#11的數(shù)據(jù)在時(shí)間階段(14)期周以正常順序傳送。再者,偽周期#14的數(shù)據(jù)傳送發(fā)生在時(shí)間階段(17)。
在時(shí)間階段(19)中,緊接時(shí)間階段(18)的周期#15的數(shù)據(jù)傳送出現(xiàn)了總線B差錯(cuò)。該差錯(cuò)信號(hào)停止正在響應(yīng)階段的周期#17,并啟動(dòng)偽周期#15數(shù)據(jù)傳送的重復(fù)。重復(fù)傳送發(fā)生在周期#20期間。再者,該差錯(cuò)信號(hào)將模塊轉(zhuǎn)向服從A狀態(tài)。
注意,總線等待信號(hào)只由已經(jīng)被總線主單元訪問(wèn)的并且沒(méi)有準(zhǔn)備引起數(shù)據(jù)傳送的那些從單元所驅(qū)動(dòng)。由于STCI155永不做從單元并且只訪問(wèn)主存而不訪問(wèn)I/O設(shè)備,此線并不被STCI155所利用。
系統(tǒng)總線邏輯178(圖19c)提供從STCI155到S/88存儲(chǔ)板16,18的連接并且包括仲裁邏輯408(圖32B)。邏輯178使用上述為總線30定義的相同的基本傳送周期1.仲裁階段--此階段在每個(gè)周期進(jìn)行以便總線控制器競(jìng)爭(zhēng)總線控制權(quán)。仲裁優(yōu)先級(jí)一般基于仲裁設(shè)備的底板槽位標(biāo)識(shí),對(duì)STCI設(shè)計(jì)的優(yōu)選形式的仲裁優(yōu)先級(jí)是基于對(duì)單個(gè)CPU的槽位標(biāo)識(shí),但是,對(duì)每個(gè)CPU(PE85及其配偶)使用了FIFO殆滿/殆空(AFE)標(biāo)志和半滿標(biāo)志線409,以便在多CPU實(shí)現(xiàn)中根據(jù)實(shí)際任務(wù)請(qǐng)求來(lái)分配優(yōu)先級(jí)。
2.周期定義階段--此階段跟在前一周期的總線許可的后面。它包含在總線30的總線功能代碼A和B上的一個(gè)4位功能代碼以規(guī)定隨著27位起為物理地址到存儲(chǔ)器16的16,32或64位讀/寫(xiě)傳送。存儲(chǔ)器16對(duì)優(yōu)選的實(shí)施例是256MB。所有的存儲(chǔ)器訪問(wèn)是在16,32或64位邊界上,所以不使用地址位0。相反地字節(jié)和字訪問(wèn)是由圖14所示的UDS和LDS信號(hào)和總線功能代碼定義一起指明。
3.周期響應(yīng)階段--這個(gè)階段可能包括存儲(chǔ)器在總線30上產(chǎn)生的總線差錯(cuò)或總線忙條件,這種條件將強(qiáng)使STCI155重新仲裁和重新發(fā)出先前周期定義階段。
4.?dāng)?shù)據(jù)階段--一當(dāng)存儲(chǔ)請(qǐng)求被接受,(過(guò)去了的周期響應(yīng)階段)就發(fā)生跟在周期響應(yīng)階段后的周期中(在周期定義階段之后兩個(gè)周期)的數(shù)據(jù)傳送階段。16,32,或64位數(shù)據(jù)可以根據(jù)讀或?qū)懖僮髟?25毫微秒中傳送。
5.結(jié)束數(shù)據(jù)階段--在這一段要對(duì)總線錯(cuò)誤進(jìn)行檢驗(yàn),這將在數(shù)據(jù)初始發(fā)送之后的兩個(gè)周期強(qiáng)使在總線30上重復(fù)數(shù)據(jù)(從或者STCI155或者存儲(chǔ)器16)。由于A和B總線兩者攜帶同一的數(shù)據(jù),無(wú)論A或B的總線差錯(cuò)都會(huì)在結(jié)束數(shù)據(jù)階段時(shí)發(fā)生。
在S/88處理器62仲裁總線30和STCI155仲裁總線30之間的一個(gè)重要區(qū)別現(xiàn)在可以描述。通常,S/88處理器62在時(shí)間的任何瞬間只在五個(gè)階段之一上運(yùn)行。但是,由于在STCI155中的流水線式的存取能力(下面描述),STCI能夠在同時(shí)甚至在所有五個(gè)階段上運(yùn)行。例如,在64字節(jié)讀操作期間,如果沒(méi)有差錯(cuò)并且STCI被許可在五個(gè)相繼的各個(gè)階段仲裁控制總線30,STCI155能夠同時(shí)在所有五個(gè)階段上運(yùn)行。這種情況改進(jìn)了系統(tǒng)性能,特別是在模塊9的單處理器方案中。(c)STCI特性某些STCI特性描述如下1.FIFO400--4個(gè)(64×9位)先進(jìn)先出快速隨機(jī)存取存儲(chǔ)器形成一個(gè)緩沖器以允許多達(dá)4個(gè)64字節(jié)存儲(chǔ)器命令在單元155占線以前被保存。它還為所有數(shù)據(jù)攜帶進(jìn)來(lái)的奇偶性直至輸出。S/370的時(shí)鐘152記錄進(jìn)入FIFO400的命令和數(shù)據(jù);而S/88的時(shí)鐘38記錄從FIFO400出來(lái)的命令和數(shù)據(jù)。FIFO400的優(yōu)選實(shí)施例是CY7C409,后者在Cypress半導(dǎo)體公司1988年1月15出版的“產(chǎn)品信息手冊(cè)”中從5-34頁(yè)開(kāi)始有更充分的描述。
除工業(yè)標(biāo)準(zhǔn)握手信號(hào)之外,還提供了殆滿/殆空(AFE)和半滿(HF)標(biāo)志。當(dāng)FIFO幾乎充滿或幾乎排空時(shí),AFE為高,否則AFE為低。當(dāng)FIFO為半滿時(shí)HF為高,否則HF為低。
當(dāng)輸入就緒(IR)控制信號(hào)為高時(shí),存儲(chǔ)器在移入(SI)輸入的控制下在其輸入處接受9-位并行字。當(dāng)輸出就緒(OR)控制信號(hào)為高時(shí),數(shù)據(jù)在移出(SO)輸入的控制下以和它存入時(shí)同樣的次序輸出。如果FIFO為滿(IR低),在SI輸入上的脈沖被忽略;如果FIFO為空(OR低)在SO輸入上的脈沖被忽略。
對(duì)于更寬字的并行擴(kuò)展是以把個(gè)別各FIFO的IR和OR輸出(各自地)進(jìn)行邏輯與運(yùn)算加在一起來(lái)實(shí)現(xiàn)的。邏輯與運(yùn)算保證所有FIFO或者準(zhǔn)備好接受更多數(shù)據(jù)(IR高)或者準(zhǔn)備好輸出數(shù)據(jù)(OR高),這樣就補(bǔ)償了各設(shè)備間傳播延遲時(shí)間的變異。
讀寫(xiě)操作完全異步,這就允許FIFO可以用來(lái)在兩個(gè)工作時(shí)鐘頻率或時(shí)鐘相位相差懸殊的數(shù)字機(jī)器之間作為緩沖器。FIFO包含一個(gè)字指針,一個(gè)讀指針,和生成所謂握手(SI/IR,SO/OR)信息所必要的控制邏輯以及殆滿/殆空(AFE)和半空(HF)標(biāo)志。當(dāng)FIFO是空的,STCI邏輯將保持SO為高,使得一個(gè)字被寫(xiě)入后直接地轉(zhuǎn)向輸出。OR信號(hào)在一個(gè)內(nèi)部周期內(nèi)抬高然后再回降低。如果更多的字寫(xiě)入FIFO,它們將在第一個(gè)字后面排隊(duì)并且直到SO變?yōu)榈椭皩⒉怀霈F(xiàn)。
數(shù)據(jù)不是物理地傳播通過(guò)存儲(chǔ)器。讀和寫(xiě)指針被遞增而不是移動(dòng)數(shù)據(jù)。遞增寫(xiě)指針并把從SI輸入的信號(hào)傳播引空的FIFO的OR輸出所需的時(shí)間(下行時(shí)間)或者遞增讀指針并且把從SO輸入的信號(hào)傳播到滿的FIFO的IR輸出所需的時(shí)間(上行時(shí)間)決定數(shù)據(jù)能被傳遞通過(guò)FIFO400的速度。
電源接通時(shí),F(xiàn)IFO由總清信號(hào)復(fù)位,這就引起設(shè)備進(jìn)入空狀態(tài),后者是用OR信號(hào)低而同時(shí)IR信號(hào)高來(lái)表示的。在這種情況下,數(shù)據(jù)輸出(D00-D08)將是低。AFE標(biāo)志將是高而HF標(biāo)志將是低。
一個(gè)空單元能否使用由輸入就緒(IR)信號(hào)的高狀態(tài)指明。當(dāng)IR是高時(shí),在移入(SI)針腳上一個(gè)低到高的變換將把輸入處的數(shù)據(jù)裝入FIFO400。IR輸出將變?yōu)榈?,這就指明數(shù)據(jù)已經(jīng)取樣。SI信號(hào)高到低的變換指明IR信號(hào)低到高的變換,如果FIFO400是殆滿或殆空,則也指明AFE標(biāo)志低到高的變換。
FIFO400的輸出處的數(shù)據(jù)能否使用由輸出就緒(OR)信號(hào)的高狀態(tài)表明。在FIFO復(fù)位后所有數(shù)據(jù)輸出(D00-D08)將在低狀態(tài)。只要FIFO仍是空的,OR信號(hào)將是低并且加于它的所有移出(SO)脈沖將忽略不計(jì)。在數(shù)據(jù)移入FIFO之后,OR信號(hào)將變?yōu)楦摺?br>
兩個(gè)標(biāo)志,即殆滿/殆空(AFE)和半滿(HF),描述有多少字被存入FIFO。當(dāng)有8個(gè)或少些或者56個(gè)或多些個(gè)字存在FIFO中,則AFE為高,否則AFE標(biāo)志為低。當(dāng)有32個(gè)或多些字存在FIFO中則HF為高,否則HF標(biāo)志為低。標(biāo)志變換發(fā)生在相對(duì)于SI和SO的后緣。
2.SBI邏輯--系統(tǒng)/88總線接口(SBI)邏輯178允許S/370處理器85啟動(dòng)對(duì)S/88存儲(chǔ)器16的讀/寫(xiě)。它包括邏輯408,后者為訪問(wèn)總線30啟動(dòng)16,32或64-位傳送而仲裁每一個(gè)周期。邏輯178接口線和仲裁邏輯408是在李德專利中描述過(guò)的優(yōu)選類型,本文描述沒(méi)有修改。
3.容錯(cuò)--所有STCI邏輯,包括FIFO緩沖器400,都是成雙的以便在S/370處理器板上提供自檢。僅有的單份邏輯包括比較電路邏輯402a-g,中斷邏輯403和時(shí)鐘生成邏輯(未示出)。這樣,STCI155有一個(gè)實(shí)質(zhì)上同一的配對(duì)STCI155a(未示出),后者是圖8的存儲(chǔ)管理單元83的一部分。
比較電路邏輯402a-g形成圖8的比較邏輯15而中斷邏輯形成圖8的普通控制邏輯75的一部分。在優(yōu)選的實(shí)施例中,S/370的比較檢驗(yàn)只在配對(duì)的STCI155和155a上執(zhí)行以防止錯(cuò)誤的數(shù)據(jù)通過(guò)總線結(jié)構(gòu)30擴(kuò)散。但是,S/370的機(jī)器檢驗(yàn)和奇偶錯(cuò)通過(guò)總線460提供給邏輯403,某些在BCU總線247和223上的差錯(cuò)由S/88比較線路12f(圖8)拾取。
4.地址檢驗(yàn)--兩個(gè)存儲(chǔ)器映射的寄存器404,405(MEM基址和MEM大小)用來(lái)保證在使用一個(gè)基址位移(圖10)來(lái)生成系統(tǒng)/88存儲(chǔ)器16中的一個(gè)有效物理S/370用戶地址時(shí),每個(gè)S/370處理器存儲(chǔ)空間的大小(例如162)不被破壞。
5.同步操作--S/370時(shí)鐘152是通過(guò)總線30和同步邏輯158(圖19c)從S/88時(shí)鐘38(圖7)的16兆赫輸入中導(dǎo)出的,以允許在一個(gè)從S/88時(shí)鐘38開(kāi)始的一個(gè)S/370振蕩器的輸入時(shí)鐘周期內(nèi)的各時(shí)鐘之間的同步。這樣就允許連續(xù)的讀(例如64-字讀命令)能夠從存儲(chǔ)器162流水線式地傳送到S/370芯片組150其間沒(méi)有等待狀態(tài)(假定在系統(tǒng)總線30上給予STCI155連續(xù)的周期)。
6.STC總線接口--所具標(biāo)準(zhǔn)的S/370存取命令和命令刪除一起執(zhí)行。奇偶錯(cuò)和/或ECC錯(cuò)將不報(bào)告給S/370操作系統(tǒng)而寧可當(dāng)作重做(ECC或總線錯(cuò))處理或成為打斷(內(nèi)部板奇偶錯(cuò))。64-字節(jié)行邊界交叉將導(dǎo)致地址越界。
如圖11所示,STCI155通過(guò)處理S/370的動(dòng)態(tài)(虛)地址翻譯的超高速緩存控制單元153耦合到S/370處理器85上,(此接合)是利用一個(gè)8KB指令/數(shù)據(jù)超高速緩存340以及一個(gè)64-表項(xiàng)DLAT(目錄查詢表)341。這樣,所有實(shí)/虛的I/O或處理器的傳送導(dǎo)致由單元153發(fā)出一“實(shí)”地址在STC總線157上。典型地,當(dāng)總線適配器154或S/370處理器85實(shí)行“實(shí)”存儲(chǔ)操作,單元153只是充當(dāng)從處理器總線170到STC總線157的轉(zhuǎn)換地點(diǎn),除了超高緩存被命中,它可能導(dǎo)致一個(gè)已經(jīng)發(fā)給STC總線的命令157被刪除。
現(xiàn)在給出41條STC總線的各連線(圖32A和30)的簡(jiǎn)明描述。STC的數(shù)據(jù)/地址/命令總線406有32條雙向數(shù)據(jù)總線連線加上每字節(jié)的奇檢驗(yàn)。這個(gè)總線是用來(lái)輸送在一個(gè)周期里的命令和地址的,并且在存儲(chǔ)操作的每個(gè)相繼的周期上可達(dá)32位數(shù)據(jù),STC有效線由單元153驅(qū)動(dòng)向STCI155發(fā)出在同一周期中STC總線上的命令/地址為有效的信號(hào)。STC刪除線由單元153驅(qū)動(dòng)向STCI155刪除一個(gè)先前發(fā)出的命令。它在STC有效發(fā)出后看來(lái)可達(dá)兩個(gè)周期。它和PE85命令刪除輸入一起被進(jìn)行或運(yùn)算。STC忙碌線440由STCI155驅(qū)動(dòng)向單元153,在“STC有效”發(fā)出之后一個(gè)周期,以表示此單元忙而不能接受新的命令。它在單元155能夠接受新命令以前一個(gè)周期釋放。
在線433上的STC數(shù)據(jù)無(wú)效信號(hào)可以由STCI155向單元153發(fā)出,這與取操作情況下的數(shù)據(jù)回送處于同一周期,從而使數(shù)據(jù)傳送無(wú)效。如果該線被啟動(dòng),單元153對(duì)數(shù)據(jù)周期忽略不計(jì)。當(dāng)在總線上發(fā)生了一快速ECC差錯(cuò),或者數(shù)據(jù)在配對(duì)的STCI單元155和155a的邏輯之間錯(cuò)誤比較,或者在總線30的讀周期期間查出不正確的奇偶性,則該線上的信號(hào)與數(shù)據(jù)同步送出。
STC數(shù)據(jù)傳送線441由STCI155驅(qū)動(dòng)向單元153以在后續(xù)周期中在STC總線157上發(fā)出一個(gè)數(shù)據(jù)傳送信號(hào)。對(duì)于存入,它(該信號(hào))命令單元153提供在后續(xù)周期的下一個(gè)32-位字。對(duì)于取出,它提醒單元153注意次一周期將包含有效數(shù)據(jù),除非它在次一周期中被STC數(shù)據(jù)無(wú)效所取代。STCI155的設(shè)計(jì)是充分考慮了流水線式的工作方式的,以允許在一個(gè)S/370CPU中所有上述狀態(tài)在同一瞬間都是有效的。在這種方式下,假定相鄰總線許可且沒(méi)有總線錯(cuò),STCI155則對(duì)取操作能維持流水線式的數(shù)據(jù)而不用等待狀態(tài),在這種情況下利用64位的讀操作(系統(tǒng)總線30的周期是125毫微秒)把數(shù)據(jù)象流水似的送往32位的62.5毫微秒的總線157上。
系統(tǒng)/88接口410是用來(lái)在STCI155中支持訪問(wèn)在BCU局部虛地址空間中的MEM大小/MEM基地寄存器405和404的。同樣,“打斷”403和“總線中斷要求”(IRQ)差錯(cuò)與在S/88處理器板102上的那些中斷要求合并起來(lái)作為象單一CPU一樣以驅(qū)動(dòng)在總線30上的一個(gè)低優(yōu)先級(jí)維護(hù)中斷。
總線IRQ差錯(cuò)在下述意義下與‘打斷’型的那些錯(cuò)誤不同,這些差錯(cuò),通常由于在總線30上被同一或伙伴板查出不同的未保護(hù)的信號(hào)時(shí),并不像“打斷”所做那樣從總線30切斷一塊板。當(dāng)該板處在服從雙方狀態(tài)下這些差錯(cuò)只起作用。
此外,在行411,412,413上的‘服從A’,‘服從B’和‘雙份’信號(hào)是從S/88處理器板邏輯415驅(qū)動(dòng)的而不是在S/370處理器之中重新制作出來(lái)的。服從A/服從B信號(hào)分別用來(lái)控制檢驗(yàn)電路的輸入多路切換器71.7-3和驅(qū)動(dòng)端數(shù)據(jù)輸入多路轉(zhuǎn)接器,并且也為了選通總線差錯(cuò)狀態(tài)。線413上的“雙份”信號(hào)是用來(lái)當(dāng)板是配成伙伴時(shí)發(fā)出信號(hào)(即,用于總線仲裁邏輯408以保證在相鄰插槽中時(shí)伙伴雙方共同仲裁)。
服從A和B信號(hào)被反轉(zhuǎn)以提供+服從A,-服從A,+服從B和-服從B。+服從A和-服從A信號(hào)分別施用于寄存器428和429。寄存器428和429各自分別耦合到總線結(jié)構(gòu)30的A和B總線。S/88時(shí)鐘信號(hào)(未示出)對(duì)所有三個(gè)時(shí)鐘狀態(tài)A,B,和雙方定時(shí)地記錄從A和B總線分別到寄存器428和429的數(shù)據(jù)。當(dāng)總線處在服從A或服從雙方狀態(tài)下工作而寄存器429只在服從B狀態(tài)期間對(duì)總線435和436開(kāi)啟時(shí)寄存器428里的數(shù)據(jù)被選通出來(lái)到總線435和436上。同樣,如在圖34中所見(jiàn),SCTI155a的寄存器428a的內(nèi)容同樣地在服從B或服從雙方狀態(tài)期間開(kāi)啟出來(lái)。寄存器429a的內(nèi)容在服從A狀態(tài)期間開(kāi)啟出來(lái)。寄存器428,429和428a,429a的各輸出的點(diǎn)或運(yùn)算執(zhí)行各自的數(shù)據(jù)輸入多路轉(zhuǎn)接器的功能71,73(圖3)。
寄存器405,404的MEM大小/MEM基址的值在S/88處理器62虛地址空間中是以BCU局部地址空間方式映射的。一旦給定的S/370CPU空間162定義了,這些值必須在S/88引導(dǎo)期間設(shè)置。它們可以由S/88改變只要在引導(dǎo)過(guò)程中沒(méi)有STCI存/取操作。
寄存器404,405之訪問(wèn)是由圖19A的地址解碼邏輯216通過(guò)一個(gè)局部地址(007E01FC)實(shí)現(xiàn)的并且包括以下數(shù)據(jù)PA位20-23和PA位20-27,它們分別等于S/370存儲(chǔ)器162大小(MEM大小)和存儲(chǔ)器基底地址(MEM基底),其中MEM大小=從S/88存儲(chǔ)器16到存儲(chǔ)區(qū)162分配好的主存的(1到16)兆字節(jié)。
MEM基底=從存儲(chǔ)器16的物理地址空間中指派給存儲(chǔ)區(qū)162的位移的兆字節(jié)。
PA=S/88已翻譯的虛地址(即物理地址)。
當(dāng)邏輯216對(duì)地址007E01FC解碼時(shí),就由處理器62通過(guò)其總線161D在寄存器405和404中設(shè)置大小和基底的地址位。在此操作期間,邏輯216把處理器62從其相關(guān)連的硬件中分開(kāi),從而寄存器404,405的裝入對(duì)S/88操作系統(tǒng)是透明的。此外,S/370操作系統(tǒng)并不知道它們的存在或他們?cè)谠L問(wèn)S/370存儲(chǔ)器162中的使用。
圖32A,B和30還示出存儲(chǔ)器控制接口155所使用的信號(hào)的I/O線。這包括在STC總線157之外所有的為接到S/88系統(tǒng)總線30,S/88處理器62和在S/88CPU板102上的邏輯415上所需要的線。為便于描述。在圖32A,B中未示出圖8的收發(fā)器13。(d)數(shù)據(jù)存操作根據(jù)從超高速緩存控制器單元153來(lái)的存命令,STCI155將在地址/數(shù)據(jù)總線406(它是STC總線157的一部分)的位0-7上定時(shí)地驅(qū)動(dòng)此命令并且把它連同STC有效位存在命令緩沖器416中和緩沖器417中。STC忙信號(hào)將由邏輯401在次一周期期間送到線440上以指明單元155占線。同時(shí),總線406上的24-位實(shí)地址也記錄到A/D寄存器417中。
只要FIFO400不滿并且能接受命令(沒(méi)有FIFO溢出)中規(guī)定的整個(gè)數(shù)據(jù)傳送長(zhǎng)度(高達(dá)64字節(jié)),STC數(shù)據(jù)傳送將被邏輯401提升并在每個(gè)周期仍能活躍直到對(duì)此命令的所有STC總線數(shù)據(jù)傳送完成。對(duì)于存,STC數(shù)據(jù)傳送命令并不發(fā)出(這樣該命令就沒(méi)有移入FIFO)直到它被保證沒(méi)有發(fā)出刪除(直到在STC有效之后2個(gè)周期)。但是,在此期間邏輯401把24-位地址從寄存器417移到寄存器442并且數(shù)據(jù)的前四個(gè)字節(jié)從單元153傳送到寄存器417。此外,F(xiàn)IFOHF和AFE標(biāo)志409就與從命令緩沖器416中解碼來(lái)的字節(jié)傳送長(zhǎng)度相比較。FIFO標(biāo)志指明使用中4個(gè)緩沖器深度范圍之一。如果字節(jié)傳送長(zhǎng)度加上命令字?jǐn)?shù)據(jù)的4字節(jié)超過(guò)FIFO64字容量(當(dāng)加到最壞情況的緩沖器深度時(shí)),如同F(xiàn)IFO標(biāo)志所指明,那么所有STC數(shù)據(jù)傳送激活都被堵塞直到這個(gè)溢出狀態(tài)消失。在足夠的字剛剛從FIFO中移出以引起標(biāo)志狀態(tài)的改變時(shí),就出現(xiàn)上述情形。
如果沒(méi)有刪除發(fā)生和沒(méi)有FIFO溢出存在,那么從時(shí)鐘401來(lái)的經(jīng)過(guò)多道轉(zhuǎn)接器447與寄存器442的24-位地址串聯(lián)的命令解碼就儲(chǔ)存在FIFO400。一旦初始的存命令移入FIFO從A/D寄存器417來(lái)自后續(xù)的32-位數(shù)據(jù)塊就通過(guò)寄存器442在連續(xù)的周期中存入FIFO400,對(duì)于總線30上的位的傳送操作門(mén)423是用于把較低16位多路轉(zhuǎn)換到較高16位。
S位是用于從取出區(qū)分出存入并且C/A位是用于區(qū)別在FIFO400中的命令字和數(shù)據(jù)令,如在圖35中所見(jiàn)。奇偶性通過(guò)FIFO保持。
FIFO的輸入和輸出各不相同地記錄。數(shù)據(jù)用S/370時(shí)鐘移入FIFO400,而移出則用S/88時(shí)鐘。當(dāng)FIFO400是空的時(shí),設(shè)置空時(shí)以允許在最壞情況的FIFO的下行時(shí)間(60毫微秒)。FIFO的命令和數(shù)據(jù)字在圖35中示出,其中S=(1=存,0=取)C/A=(1-Cmd/Add,0=數(shù)據(jù))P01=字節(jié)0,1偶校驗(yàn)P23=字節(jié)2,3偶校驗(yàn)LDW=較低數(shù)據(jù)字選擇(較低數(shù)據(jù)字多路轉(zhuǎn)換到較高字;在此情況P01=P23)64BOVFL=由于奇地址邊界16字傳送被超過(guò),需要額外的32位數(shù)據(jù)傳送周期32B,16B,8B,4B=加權(quán)字節(jié)傳送計(jì)數(shù)
TRL1,0=為“曳尾”字中的有效字節(jié)解碼(最后32位數(shù)據(jù)傳送)。
FIFO400的輸入/輸出端的塊401各個(gè)空序器跟蹤FIFO的傳送入/出。輸出空序器實(shí)際上跟蹤總線30上等侯當(dāng)前的取或存命令待處理的數(shù)據(jù)傳送數(shù)目,一旦命令字到達(dá)FIFO的輸出處,C/A=1在邏輯401中解碼,而且只要沒(méi)有先前的命令還在等待完成,從FIFO400來(lái)的S/370實(shí)際地址就通過(guò)邏輯422和423與基址寄存器404相合并,后者于是作為開(kāi)始的‘物理’地址裝入地址緩沖器420而傳送計(jì)數(shù)則裝入401中的輸出空序器。同樣,仲裁邏輯408則置為開(kāi)始仲裁。
408中的周期控制邏輯將為取和存兩種操作追蹤所有活躍的STCI155總線30各個(gè)階段。和總線30狀態(tài)行(即,總線占線,總線差錯(cuò))一起,這個(gè)邏輯用于在STCI155中處理正規(guī)總線30的階段操作以及處理差錯(cuò)條件,差錯(cuò)條件將導(dǎo)致刪除周期定義或數(shù)據(jù)。
物理地址的形成是先在邏輯422中把從FIFO來(lái)的S/37024-位實(shí)地址的上部4位與寄存器405中的S/370存儲(chǔ)器大小的值作比較。如果S/370地址位不超過(guò)分配給S/370處理器85的大小區(qū)域,上部4位將由邏輯423加到在寄存器404中的S/370存儲(chǔ)器基地址值上。并連接到緩沖器420中的較低位19-1以形成一個(gè)物理27-位字地址用作進(jìn)入S/370區(qū)域162的開(kāi)始的S/88地址。否則即報(bào)告出一個(gè)軟程序檢驗(yàn)。任何64-字節(jié)地址邊界交叉將導(dǎo)致返轉(zhuǎn)到開(kāi)始地址。
地址U/D計(jì)數(shù)器421用來(lái)保持輸出的物理地址的位5-2。它與輸出定序器同步記錄,并且當(dāng)正常增量時(shí),可能因響應(yīng)一個(gè)周期響應(yīng)階段的總線占線或總線差錯(cuò)狀態(tài)而減量。輸出定序器一旦裝入,相關(guān)的邏輯根據(jù)總線仲裁許可通過(guò)邏輯408啟動(dòng)存入周期,響應(yīng)總線差錯(cuò)或總線占線狀態(tài)。適當(dāng)?shù)腟/88功能代碼由邏輯對(duì)應(yīng)于S/88存入命令而產(chǎn)生;當(dāng)仲裁周期要求被許可,該功能代碼即被入寄存器443以備應(yīng)用于總線結(jié)構(gòu)30的A,B兩總線。
輸出定序器通常按每次許可減量,對(duì)到總線30的32-位傳送減1和對(duì)64-位減2,直到它達(dá)到0,表明對(duì)當(dāng)前命令再無(wú)字節(jié)要傳送。
另一與周期定義階段(背對(duì)背許可)重迭的一個(gè)周期響應(yīng)階段內(nèi)總線忙或總線有錯(cuò),輸出定序器將對(duì)被刪除的32位傳送增1和對(duì)664位傳送增2(只取)。同時(shí),地址U/D計(jì)數(shù)器421對(duì)刪除的32位傳送減1和對(duì)64位傳送減2(只取)。
數(shù)據(jù)輸出寄存器425用以緩沖輸出的數(shù)據(jù)。數(shù)據(jù)輸出保持寄存器426在數(shù)據(jù)由于一個(gè)后續(xù)的總線差錯(cuò)(A或B總線)必須重新驅(qū)動(dòng)的情況下是需要的。在此情況,后續(xù)的數(shù)據(jù)(到較高地址)可能被接受并存入存儲(chǔ)器16,18而較先前周期的數(shù)據(jù)為早,后者與總線差錯(cuò)相關(guān)連因?yàn)樵摂?shù)據(jù)傳送必須在其初始傳送之后兩個(gè)周期才重復(fù)。(與存入不同,取出的數(shù)據(jù)不能被不按順序接受)。同時(shí),總線仲裁邏輯408對(duì)各周期連續(xù)地仲裁直到所有傳送在總線30上已經(jīng)啟動(dòng)和接受。對(duì)系統(tǒng)總線30和存儲(chǔ)16,18的仲裁和數(shù)據(jù)傳送與在(B)節(jié)中所描述者相同。
最后注意FIFO的設(shè)計(jì)允許在占線之前存儲(chǔ)高達(dá)64字(幾乎是4組64-字節(jié)存儲(chǔ)傳送)。對(duì)于存入,只要FIFO不滿而且能夠接受與存儲(chǔ)相關(guān)的命令和數(shù)據(jù)的字,F(xiàn)IFO就連續(xù)地裝入直到完成。因此,STC占線(命令)在每個(gè)存儲(chǔ)命令執(zhí)行之后就丟掉,這就釋放單元153和允許S/370處理器85繼續(xù)執(zhí)行。假定在單元153中有一高的超高速緩存命中率,性能就會(huì)顯著的改善,這是由于緩沖了的當(dāng)量幾乎有4個(gè)64-字節(jié)在FIFO里的存儲(chǔ)或者32個(gè)1-4字節(jié)的存儲(chǔ)。
假定STCI155是STCI配對(duì)155,155a的“驅(qū)動(dòng)”方而STCI155a是其差錯(cuò)“檢驗(yàn)”方。所以,只有STCI155驅(qū)動(dòng)信號(hào)(控制,地址,數(shù)據(jù))到總線結(jié)構(gòu)30上,如圖32B所示。其中信號(hào)是予定給總線A和B二者,STCI155驅(qū)動(dòng)行示出為耦合于雙方總線(通過(guò)在圖32B中未示出的收發(fā)器B)。在STCI155a中,相對(duì)應(yīng)的線并不耦合到總線結(jié)構(gòu)30;只是耦合到比較邏輯402a-g。
比較邏輯402g比較從緩沖器420來(lái)的地址位27-6,從地址U/D計(jì)數(shù)器421來(lái)的地址位5-2,修改過(guò)的地址1和從奇偶生成器邏輯445來(lái)的奇偶檢驗(yàn)位,和從寄存器443來(lái)的功能代碼及其從STCI155a來(lái)的對(duì)應(yīng)位。萬(wàn)一比較有錯(cuò),邏輯402g使用差錯(cuò)信號(hào)來(lái)打斷邏輯403和總線差錯(cuò)A和B線。
邏輯402e比較從數(shù)據(jù)輸出寄存器425來(lái)的數(shù)據(jù)輸出位及其從STCI155a來(lái)的對(duì)應(yīng)位并施加錯(cuò)比較信號(hào)于邏輯403和總線差錯(cuò)A與B線。邏輯402a比較從FIFO邏輯401來(lái)的位及其從STCI155a來(lái)的對(duì)應(yīng)位。與門(mén)446提供一差錯(cuò)信號(hào)給邏輯403如果STC有效信號(hào)被提升而STC占線信號(hào)在線440上活躍的話。(e)數(shù)據(jù)取操作取命令按照上面描述的存命令通過(guò)寄存器416,417和FIFO400的同一途徑。一個(gè)區(qū)別就是STC數(shù)據(jù)傳送信號(hào)并不提升到STC總線邏輯408上直到知道數(shù)據(jù)從存儲(chǔ)器162經(jīng)過(guò)總線30接受在寄存器428或429中。取命令和STC有效信號(hào)被接受和存入寄存器416,命令和它的起始存儲(chǔ)地址存在寄存器417,401中的STC總線邏輯在下一STC總線周期發(fā)出STC占線信號(hào)以防止超高速緩存控制器153送出另一命令直到STC占線取消。
這樣,當(dāng)取命令被收到時(shí),STC占線信號(hào)由邏輯401維持直到取命令已充分執(zhí)行,因?yàn)槌咚倬彺婵刂破?53正在等待要接受的所取數(shù)據(jù)。(當(dāng)存儲(chǔ)周期期間當(dāng)所有存儲(chǔ)數(shù)據(jù)剛一從控制器153傳送到FIFO400STC占線就被消除。)在取命令周期期間,STC占線必須維持直到任何的和所有的FIFO400中的存命令都已執(zhí)行,然后取命令被執(zhí)行。只有此時(shí)STC占線能被取消以允許傳送下一個(gè)命令到STCI155。
在跟著把命令存在寄存器416和417后面的各周期中,命令和地址傳送到寄存器442然后到FIFO400里。
當(dāng)S/370取命令在FIFO400的最后階段被接收(并且輸出就緒為高一如上述),C/A和別的命令位就在邏輯401中解碼。對(duì)應(yīng)于經(jīng)過(guò)解碼的S/370命令位的S/88功能代碼就放在寄存器443中以當(dāng)仲裁周期要求被許可時(shí)施加于總線結(jié)構(gòu)30。
緊接一個(gè)許可和后續(xù)的周期定義階段和周期響應(yīng)階段,假定在周期響應(yīng)階段期間沒(méi)有總線占線和總線差錯(cuò)出現(xiàn),STCI155將進(jìn)入數(shù)據(jù)階段。前32位和DP,UDS與LDS等位一起從存儲(chǔ)器16和伙伴的區(qū)域162的適當(dāng)?shù)拇鎯?chǔ)單元接受到結(jié)構(gòu)30的A,B總線上,并且分別鎖進(jìn)寄存器428,429中,而以S/88時(shí)鐘開(kāi)始總線30周期的后一半。假定服從雙方狀態(tài)或服從A狀態(tài)起作用,在下一個(gè)S/88時(shí)鐘周期(下一個(gè)總線30周期的開(kāi)始)。數(shù)據(jù)將從寄存器428被開(kāi)門(mén)到緩沖器430上對(duì)于64-位傳送,后32位鎖進(jìn)寄存器428和429是和先前的數(shù)據(jù)并行地傳送到緩沖器430的。一個(gè)奇偶性生成器431把奇檢驗(yàn)加到儲(chǔ)存在430中的數(shù)據(jù)字上。這些數(shù)據(jù)和奇偶檢驗(yàn)位和收到的UDS,LDS和DP位一起,經(jīng)過(guò)總線435和436施用于邏輯402e。邏輯402c用配對(duì)的STCI155a中產(chǎn)生的對(duì)應(yīng)的各個(gè)位與這些位比較。緩沖器430此時(shí)將為第一個(gè)數(shù)據(jù)字開(kāi)門(mén),加上奇偶性,到緩沖器432上,緩沖器432在下一個(gè)STC總線周期中經(jīng)過(guò)STC總線157的總線406傳送到超高速緩存控制器153而被驅(qū)動(dòng)。緩沖器432以S/370的時(shí)鐘計(jì)時(shí),后者與S/88時(shí)鐘同步使得STC總線周期的開(kāi)始發(fā)生在S/88時(shí)鐘啟動(dòng)之后。由于已經(jīng)為S/88和S/370兩時(shí)鐘定義了同一的62.5毫微秒周期,這允許從總線30到STC總線管道輸送連續(xù)的讀。這樣,在優(yōu)選的實(shí)施例中,對(duì)每個(gè)總線30的125毫微秒周期執(zhí)行兩個(gè)STCI155周期。
假定對(duì)STCI155連續(xù)的許可,第二個(gè)數(shù)據(jù)階段將遵照上面描述的第一個(gè)數(shù)據(jù)階段(假定沒(méi)有總線差錯(cuò)等等)。假定64位傳送,此時(shí)數(shù)據(jù)將被記錄到寄存器428和429中,這與數(shù)據(jù)從緩沖器428(或429在服從B狀態(tài))中記錄到緩沖器430并行進(jìn)行。緩沖器430數(shù)據(jù)于是將施用后32位到緩沖器432供傳送到超高速緩存控制器153,如上所述。所以可以看到,在優(yōu)選的實(shí)施例中連續(xù)64-位傳送是如何運(yùn)用本維護(hù)管道傳送的數(shù)據(jù)流。
如果在數(shù)據(jù)階段期間發(fā)生了快速ECC差錯(cuò)或數(shù)據(jù)錯(cuò)誤比較或奇偶性錯(cuò)誤,STC數(shù)據(jù)無(wú)效信號(hào)由邏輯402e送到線433上,和在STC地址/數(shù)據(jù)總線406上的數(shù)據(jù)并行進(jìn)行。再者,如果后續(xù)的數(shù)據(jù)在數(shù)據(jù)已宣布無(wú)效的周期之后的周期中到達(dá),總線差錯(cuò)狀態(tài)將由STCI SBI邏輯強(qiáng)加在跟在后面的數(shù)據(jù)周期的A和B兩總線上。這就保證數(shù)據(jù)將在兩個(gè)周期之后重新驅(qū)動(dòng)(即,在報(bào)告出總線差錯(cuò)之后的一個(gè)周期),因此由按順序傳送取出的數(shù)據(jù)維護(hù)了數(shù)據(jù)的完整性和在STC總線上的功能性。在A和B兩總線上驅(qū)動(dòng)總線差錯(cuò)等價(jià)于存儲(chǔ)器16報(bào)告一個(gè)ECC差錯(cuò)狀態(tài)與一個(gè)“真的”總線差錯(cuò)相對(duì),這就不引起在系統(tǒng)總線30上沿著所有控制器的總線服從邏輯中的改變。
同樣地,用于比較進(jìn)入的數(shù)據(jù)和經(jīng)過(guò)總線435,436檢驗(yàn)奇偶性的同一邏輯402e也用于存儲(chǔ)操作以檢驗(yàn)在402e中的數(shù)據(jù)輸出比較的結(jié)果,系由實(shí)行一個(gè)從系統(tǒng)總線30通過(guò)寄存器428或429的“返回”數(shù)據(jù)比較來(lái)檢驗(yàn)。這將有助于較快地認(rèn)定板101上的收發(fā)器13的問(wèn)題并將把板損壞邏輯403置在存儲(chǔ)器上,如果在下一個(gè)總線周期中沒(méi)有給出一個(gè)錯(cuò)誤比較和一個(gè)總線差錯(cuò)。此外,所有比較器輸出402a-g(它們對(duì)取和存操作的有效的錯(cuò)誤比較上產(chǎn)生故障情況)將在A,B兩總線上生成總線差錯(cuò)信號(hào),這樣就保證了在先前的周期中的數(shù)據(jù)傳送重復(fù)了,而在先前周期中的任何周期定義階段防止了。
與存入不同,對(duì)取出則先前在FIFO中的所有命令必須被執(zhí)行,并且在本處理單元面前的當(dāng)前的取操作能夠降下STC忙的那條線440,并接受別的命令。超高速緩存控制器153必須在另一個(gè)存儲(chǔ)命令能夠發(fā)出之前為取命令接受數(shù)據(jù)。
可用的讀/寫(xiě)周期類型的定義在圖36A-D中示出,其中UU=較高字的較高字節(jié)UM=中等字的較高字節(jié)LM=中等字的較低字節(jié)LL=較低字的較低字節(jié)MEM16=16-位存儲(chǔ)周期MEM32=32-位存儲(chǔ)周期MEM64=64-位存儲(chǔ)周期LW=長(zhǎng)字(32位)UDS=較高數(shù)據(jù)閘門(mén)LDS=較低數(shù)據(jù)閘門(mén)64位與操作在單元155的優(yōu)選實(shí)施例中是不可用的,由于重點(diǎn)是放在硬件最小化上,64×36FIFO是足夠支持從S/370的32位存儲(chǔ)傳送的。只使用32位寫(xiě)的一個(gè)性能限制乃是因?yàn)樵诮徊娲嫒〉拇鎯?chǔ)器16中每個(gè)S/88存儲(chǔ)器板“葉”是72位長(zhǎng)(64位加8個(gè)ECC位),每個(gè)葉,一旦進(jìn)行了寫(xiě)訪問(wèn),在三個(gè)附加的(125毫微秒)周期內(nèi)這片葉子一直處于忙狀態(tài)。這就意味著同一葉在連續(xù)寫(xiě)時(shí)每5個(gè)周期(625毫微秒)只能被訪問(wèn)一次。因?yàn)樗蠸/37032-位寫(xiě)定義為連續(xù)地址,這就意味著在此同一個(gè)64-位邊界內(nèi)的連續(xù)傳送不能比每5個(gè)周期(625毫微秒)發(fā)出得更快,而在不同的64位邊界上可以在連續(xù)的125毫微秒周期中發(fā)出(假定仲裁得勝)。
64位讀周期總是得到支持的,在這種情況下只要連續(xù)的讀操作確實(shí)不訪問(wèn)同一個(gè)葉,它們能在連續(xù)的周期中被執(zhí)行。不能的話,它們能夠每隔兩個(gè)周期(250毫微秒)執(zhí)行一次。因?yàn)閷?duì)于64位的讀操作,每62.5毫微秒從總線30接受到各個(gè)32位,(即,兩倍每125毫微秒總線30周期),STC總線和總線30周期時(shí)間互相匹配使得數(shù)據(jù)在收到后能夠從系統(tǒng)總線30管道式地傳送到STC總線157。兩個(gè)額外的緩沖級(jí)(緩沖器430和432)是用來(lái)和寄存器428和429一起支持各周期的正確同步并且允許各個(gè)數(shù)據(jù)字節(jié)的奇偶性生成。
各個(gè)27位地址和各個(gè)4位功能代碼在總線30周期定義階段期間和伴隨的奇偶位一起送出。32位數(shù)據(jù)在總線30數(shù)據(jù)階段期間也攜帶與其相關(guān)的奇偶位??偩€30上的基本125毫微秒周期允許正規(guī)的16和32位傳送,以及在125毫微秒窗口內(nèi)的64位讀傳送。作為選擇項(xiàng),可以用附加的硬件來(lái)支持在STCI155內(nèi)的連續(xù)64位寫(xiě)傳送。S/370I/O支持(圖37)圖37圖解地說(shuō)明S/88硬件的觀和應(yīng)用代碼,后者是用來(lái)支持S/370I/O功能的。硬件設(shè)備601,602,615-619,621和623-625。軟件(或固件)子程序?yàn)?03-614,620,622和626。
這些部件的功能現(xiàn)在加以描述。塊606是由塊606到塊614組成的S/88應(yīng)用代碼的主控制。這一組塊稱為EXEC370執(zhí)行與S/370的外部設(shè)備,服務(wù),配置,操作員控制臺(tái)等等的仿真和支持有關(guān)的所有應(yīng)用代碼功能。
塊603是運(yùn)行在S/370微處理器上的微代碼。它支持S/370的CPU功能。塊603和塊606之間的沒(méi)定使它們能夠彼此傳遞關(guān)于S/370I/O操作的啟動(dòng)及完成和S/370I/O設(shè)備與通道狀態(tài)信息的要求和響應(yīng)。它還使塊606能夠要求塊603執(zhí)行特殊的S/370CPU功能。塊605是S/370的存儲(chǔ)器,它可以被塊603和塊606直接訪問(wèn)。塊606通過(guò)S/88的數(shù)據(jù)文件塊602中所包含的數(shù)據(jù)提供正常的S/370配置。
塊604是一單獨(dú)的運(yùn)行的任務(wù),通過(guò)S/88終端設(shè)備這個(gè)任務(wù)提供S/370操作只控制面板。該任務(wù)能夠在任何時(shí)候開(kāi)始和停止而不中斷S/370進(jìn)程的邏輯功能。塊607是EXEC370的一部分并在S/370過(guò)程和塊604之間提供接口仿真功能。
塊601是一組S/88數(shù)據(jù)“補(bǔ)釘文件”,包括為調(diào)試S/370及其BCU156的目的而已經(jīng)專門(mén)編寫(xiě)好的S/370目標(biāo)代碼。塊604提供一個(gè)調(diào)試面板。這個(gè)塊是可選件,并可把它裝入到上述“補(bǔ)釘文件”之一的605號(hào)塊中去。
塊608-1由負(fù)責(zé)仿真S/370通道的代碼組成。它執(zhí)行取出S/370CCW,數(shù)據(jù)從塊605的出入運(yùn)動(dòng),向塊603報(bào)告S/370I/O中斷信息,和正常控制單元代碼仿真器的選擇。可能有多于一個(gè)的S/370通道(例如,608-2),但是使用同一代碼。
塊609-1是S/370控制單元仿真代碼。系統(tǒng)370有許多不同類型的控制單元,即,DASD控制器,磁帶控制器,通訊控制器,等等。S/370控制器功能在塊609-1和特殊的設(shè)備仿真器即塊610至614之間劃分。塊609-1的主要用途是地址分離功能,雖然別的控制單元特定功能可能也歸屬于塊609-1。所以有不止一個(gè)這樣類型的塊(例如,609-2),即,DASD控制器仿真器,通訊控制器仿真器,等等,但是與那些得到支持的S/370控制單元并沒(méi)有一一對(duì)應(yīng)的關(guān)系。
塊610表示為仿真一個(gè)S/370控制臺(tái)所必要的代碼。塊611表示為仿真S/370終端所必要的代碼。塊612表示為仿真S/370輸入機(jī)所必要的代碼。這是一個(gè)虛輸入設(shè)備,仿照標(biāo)準(zhǔn)的VM輸入機(jī)。它是為從別的來(lái)源通常是磁帶或軟盤(pán)生成的順序文件的輸入而提供的。
塊613表示為仿真S/370打印機(jī)所必要的代碼??梢则?qū)動(dòng)真正的S/88打印機(jī),或者把S/370數(shù)據(jù)寫(xiě)入S/88文件供稍后作假機(jī)打印。塊614表示為仿真S/370磁盤(pán)所必要的代碼。兩種格式計(jì)數(shù)、鍵和數(shù)據(jù)與固定塊由兩個(gè)不同的代碼集支持。
塊615表示S/88終端,通常是S/88控制臺(tái)輸出設(shè)備。系統(tǒng)/88控制臺(tái)除了把消息記入磁盤(pán)上的日志文件以外,還顯示S/88操作員消息和S/370操作員消息。對(duì)S/370來(lái)說(shuō),這個(gè)Syslem/88控制臺(tái)就象它的3278或3279型終端一樣。
塊616表示S/88終端。塊617表示在S/88磁盤(pán)上的S/88順序數(shù)據(jù)文件。塊618表示在S/88打印機(jī)或在S/88磁盤(pán)上的順序數(shù)據(jù)文件。塊619表示在S/88磁盤(pán)上的S/88數(shù)據(jù)文件。塊620是將要讀裝在S/88磁帶設(shè)備上的系統(tǒng)/370磁帶的代碼,并且把S/88磁帶設(shè)備格式化為塊617,使之看起來(lái)就象原裝的S/370磁帶。塊621表示S/88的磁帶驅(qū)動(dòng)器,它裝有安裝好的已經(jīng)寫(xiě)過(guò)的S/370磁帶。
框622是一種程序,它將文件從個(gè)人計(jì)算機(jī)讀入S/88,并以在S/370系統(tǒng)上產(chǎn)生時(shí)的原有形式編入框617。
框623是一個(gè)用于向S/88或系統(tǒng)/370發(fā)送數(shù)據(jù)和從S/88及系統(tǒng)/370接收數(shù)據(jù)的個(gè)人計(jì)算機(jī)。框624是一個(gè)S/370系統(tǒng)???25代表一個(gè)S/88假脫機(jī)打印機(jī)???26是一個(gè)程序,它將S/88文件編入仿真系統(tǒng)370直接存取存儲(chǔ)器裝置(DASD)。這是S/88單獨(dú)運(yùn)行的任務(wù),它將該文件格式化為所要求的能支持S/370直接存取存儲(chǔ)器設(shè)備(DASD)的任何形式。
S/370I/O操作和固件概述現(xiàn)提供系統(tǒng)/370I/O的一個(gè)簡(jiǎn)化、通用圖。S/370結(jié)構(gòu)提供幾類I/O指令,程序可檢驗(yàn)的狀態(tài)碼(CC)型式和程序中斷機(jī)構(gòu)。從概念上看,I/O指令的目標(biāo)在于I/O通道,它指導(dǎo)并控制I/O操作和其它CPU處理并行地工作,并且當(dāng)I/O指令被執(zhí)行時(shí)(通過(guò)狀態(tài)碼)和/或當(dāng)I/O操作完成時(shí)(通過(guò)程序中斷)對(duì)CPU報(bào)告其狀態(tài)。
將S/370指令、狀態(tài)碼、中斷和I/O裝置(DASD、磁帶、終端設(shè)備等)進(jìn)行緊密地設(shè)計(jì)。然而I/O通道的設(shè)計(jì)可松散些以提供設(shè)計(jì)寬容度,這里有許多不同的實(shí)施方案。
容錯(cuò)系統(tǒng)370改進(jìn)的廣義圖是一個(gè)S/370CPU(具有定制固件的芯片組)和一個(gè)由S/88CPU時(shí)間芯片和操作系統(tǒng)(OS)組成的“偽I/O通道,再加上能夠?qū)/370I/O設(shè)備進(jìn)行仿真和對(duì)系統(tǒng)復(fù)合體實(shí)施整體控制的特殊固體和應(yīng)用級(jí)軟件(EXEC370)。這個(gè)復(fù)合體的S/88部分設(shè)有容錯(cuò)CPU、OS、I/O裝置,電源組、總線和存儲(chǔ)器;通過(guò)硬制冗余和加入的比較邏輯將S/370做成可容錯(cuò)的。
所需要的定制固件(即微代碼)分為兩組a.在S/88處理器62上運(yùn)行的S/88總線控制器(BCU)驅(qū)動(dòng)器固件(ETIO)、用于初始化和BCU/DMAC(直接存儲(chǔ)器存取控制器)硬件控制的服務(wù)程序、DMAD中斷服務(wù)和狀態(tài)及錯(cuò)誤處理。
b.S/370(處理器85)微代碼-I/O指令、I/O中斷處理、和一些特殊控制,比如禁止(invocoution)復(fù)位、初始程序裝入、停止等。
為幫助了解各種固件操作的前后關(guān)系,讓我們來(lái)看一看發(fā)生在一個(gè)典型I/O操作中的事件的下面簡(jiǎn)化序列S/370寫(xiě)一個(gè)80字節(jié)信息到一個(gè)仿真S/370 3278顯示終端。
在此例中假設(shè)初始化已經(jīng)完成,S/370和S/88正常地工作著,沒(méi)有任何其它S/370I/O操作在進(jìn)行,請(qǐng)參看圖43和圖19A-C。采用上面參考圖20描述的“非耦合”機(jī)構(gòu)來(lái)完成在PE62和BCU156的部件之間的每個(gè)數(shù)據(jù)/命令傳送。圖43的流程圖表示這種典型的起動(dòng)I/O操作。
a.S/370處理器85遇到一個(gè)起動(dòng)I/O(SIO)指令(在該最佳實(shí)施方案中將芯片組150中的所有I/O指令都進(jìn)行了微編碼)。
b.調(diào)用SIO的定制固件;它傳送幾個(gè)參數(shù)到固定的信箱區(qū)單元188(在S/370主存器的輸入輸出轉(zhuǎn)接器(IOA)里),對(duì)BCU156發(fā)出一個(gè)服務(wù)請(qǐng)求(PU-BCU請(qǐng)求),并且等待回答。
c.BCU硬件檢測(cè)該請(qǐng)求,并產(chǎn)生一個(gè)指令去從S/370IOA固定單元中讀16字節(jié)信箱,然后通過(guò)經(jīng)BCU-PUACK復(fù)位該請(qǐng)求來(lái)回答S/370處理器85(其意義是“請(qǐng)求已被服務(wù)過(guò)了”)。
d.在S/370處理器85中,將SIO固件釋放,以結(jié)束該SIO指令,并繼續(xù)處理下一個(gè)程序指令。
e.與事件“d”同時(shí)進(jìn)行,作為“c”的一個(gè)結(jié)果,S/370硬件將16字節(jié)的信箱數(shù)據(jù)經(jīng)總線170傳送到轉(zhuǎn)接器154中的BCU接口緩存器259。
f.當(dāng)該數(shù)據(jù)被緩存時(shí)(在4字節(jié)的字區(qū)中),BCU硬件對(duì)DMAC209(通道0)重復(fù)地發(fā)信號(hào),將該信箱數(shù)據(jù)(以4字節(jié)大小的塊為單位)傳送到在局部存儲(chǔ)器210中的工作隊(duì)列(WORK QUEUE)塊里。
g.當(dāng)該16字節(jié)傳送完成時(shí),DMAC209對(duì)S/88處理器62提供一個(gè)中斷〔圖43中的通知(NOTIFY)〕,然后通過(guò)裝入下一個(gè)連接表項(xiàng)目自己準(zhǔn)備將要的信箱操作。這個(gè)中斷是處理器62的8個(gè)DMAC中斷之一,即一個(gè)“通?!盌MAC通道0中斷。
h.當(dāng)S/88接受該DMAC中斷時(shí)(由于屏蔽可能有延遲),定制固件服務(wù)程序(在ETIO中)執(zhí)行;它檢查DMAC209的狀態(tài),通過(guò)參考所述連接表找到剛剛接收的工作隊(duì)列塊,使該塊排隊(duì),以傳到EXEC370應(yīng)用程序。
i.EXEC370檢查該工作隊(duì)列,使該工作隊(duì)列塊離隊(duì),建立一個(gè)在該工作隊(duì)列塊的數(shù)據(jù)請(qǐng)求,調(diào)用一個(gè)固件程序去取得送給3278終端的80個(gè)字節(jié)的數(shù)據(jù)。
j.該固件準(zhǔn)備并起動(dòng)DMAC209(通道1),然后對(duì)BCU硬件發(fā)出一個(gè)命令,以便經(jīng)轉(zhuǎn)接器154、總線170和存儲(chǔ)控制器155從一個(gè)具體的S/370存儲(chǔ)器單元開(kāi)始讀80個(gè)字節(jié)。
k.BCU硬件156、轉(zhuǎn)接器154和DMAC209傳送該80個(gè)字節(jié)到工作隊(duì)列塊,DMAC209對(duì)S/88提供一個(gè)中斷;這與上述的“f”和“g”中的操作相似。這個(gè)中斷,屬“正?!盌MAC通道1中斷,是上述的8個(gè)DMAC中斷之一。
1.固件中斷服務(wù)程序再次檢查DMAC的狀態(tài),并使對(duì)于EXEC370的工作隊(duì)列塊指針入隊(duì)。
m.EXEC370做任何必要的數(shù)據(jù)轉(zhuǎn)換,然后利用S/88OS的服務(wù)將該數(shù)據(jù)寫(xiě)到仿真3278終端。過(guò)一些時(shí)間,它收到操作結(jié)束(正?;蝈e(cuò)誤)的通知,然后它在該工作隊(duì)列區(qū)建立一個(gè)適當(dāng)?shù)腟/370中斷信息,其中包括狀態(tài),并再調(diào)動(dòng)一個(gè)固件程序?qū)⑺鼘?xiě)到S/370信息隊(duì)列。
n.該固件準(zhǔn)備并起動(dòng)DMAC(通道3),然后發(fā)一個(gè)命令到BCU硬件將16字節(jié)寫(xiě)到S/370信息隊(duì)列中。除了在比例中,在該操作的終了,轉(zhuǎn)接器154在S/370處理器85中產(chǎn)生一個(gè)微碼級(jí)的異常中斷之外,其它方面與反向信箱讀出是相似的(也經(jīng)受一個(gè)屏蔽延遲)。正如上面在“g”和“k”中一樣,DMAC209也中斷(見(jiàn)圖43中的NOTIFY)S/88處理器62。這個(gè)中斷,即一個(gè)“正?!盌MAC通道3中斷,是8個(gè)DMAC中斷之一。
o.在S/370處理器85中,定制固件處理該異常,并且必須檢驗(yàn)有延遲可能性的通道屏蔽;如果被屏蔽了,不能把中斷提供給運(yùn)行的程序,將基本數(shù)據(jù)從該信息隊(duì)列塊189移到懸置中斷隊(duì)列;當(dāng)下一次中斷啟動(dòng)該通道時(shí),另一個(gè)定制固件處理器將為之服務(wù)。如果沒(méi)有屏蔽,這個(gè)固件立即將S/370的上下文關(guān)系轉(zhuǎn)換到該程序的中斷子程序。
改進(jìn)的FT系統(tǒng)的廣義視圖導(dǎo)出了S/88作為附屬I(mǎi)/O處理器角色的概念,它是一個(gè)I/O處理器或是S/370的偽通道。然而,在實(shí)際上,處理器之間的所有基本通訊都必須從S/88開(kāi)始(由于設(shè)計(jì)的原因)。同時(shí),S/88經(jīng)EXEC370能訪問(wèn)所有的S/370存儲(chǔ)器和微碼空間。而當(dāng)該反轉(zhuǎn)不為真時(shí),S/370處理器85絕不能訪問(wèn)S/88存儲(chǔ)器,甚至偶然的也不成。于是,比較真實(shí)的圖象是S/370作為S/88的從屬,但具有一個(gè)通常單獨(dú)S/370與S/370I/O一起的內(nèi)部映象。該S/370并不知道S/88的存在。
但因?yàn)镾/370程序運(yùn)行對(duì)S/88是異步的,并且必須不被阻止,S/370I/O指令必須能啟動(dòng)一個(gè)動(dòng)作,這種功能是由PU-BCU請(qǐng)求線256a提供的,它具有一個(gè)唯一的意思S/370對(duì)于S/88信息等待具有一個(gè)高優(yōu)先權(quán)(通常一個(gè)I/O指令)。這個(gè)服務(wù)要求的優(yōu)先性質(zhì)正是自動(dòng)信箱方案和DMAC通道0連接表編程的原因。
DMAC209是BCU硬件設(shè)計(jì)的整體部分。它基本上是由S/88固件控制和初始化的,且數(shù)據(jù)傳送是由BCU邏輯步進(jìn)的,BCU邏輯驅(qū)動(dòng)四條請(qǐng)求REQ輸入線263a-d,每個(gè)通道用一個(gè)。此外,當(dāng)每個(gè)信箱傳送完成時(shí),外部BCU邏輯啟動(dòng)信道0PCL線257a,使DMAC209對(duì)S/88處理器62提供一個(gè)中斷請(qǐng)求。
在S/370和S/88之間有四種基本的數(shù)據(jù)傳輸操作
DMAC209的初始化和編程完全是標(biāo)準(zhǔn)的,最好與MC68450結(jié)構(gòu)兼容,簡(jiǎn)而言之所有四個(gè)通道16位字傳送大??;REQ線控制傳送,設(shè)備(BCU數(shù)據(jù)緩存器)地址不計(jì)數(shù)。
中斷開(kāi)啟;不中止的周期偷用;設(shè)備帶有應(yīng)答/隱尋址/單尋址型;16位設(shè)備端口;PCL二狀態(tài)輸入。
除上面之外還有
設(shè)備到存儲(chǔ)器(存儲(chǔ)器210)的傳送;連接數(shù)組鏈;PCL=帶有中斷的狀態(tài)輸入。
CH1設(shè)備到存儲(chǔ)器(存儲(chǔ)器210)傳送;無(wú)任何鏈接。
CH2和3存儲(chǔ)器(存儲(chǔ)器210)到設(shè)備的傳送;無(wú)鏈接。
DMAC“認(rèn)為”設(shè)備具有16位數(shù)據(jù),但外部邏輯使其做32位傳送。在CHO(DMAC209的通道0)中所用的連接的數(shù)組鏈暗指連接表存在,并且通過(guò)ETIO初始化程序來(lái)建立它。一旦啟動(dòng)了CHO,只有因錯(cuò)誤狀態(tài)或遇到連接表中的最后一個(gè)有效項(xiàng)目才停止。在通常操作中,每次發(fā)生對(duì)S/88的中斷,DMAC209完成一個(gè)信箱讀,而且該固件監(jiān)視并且實(shí)時(shí)地補(bǔ)填連接表;所以絕不會(huì)達(dá)到該表的最后一個(gè)有效項(xiàng)目,且CHO繼續(xù)運(yùn)行(空閑)。
每個(gè)DMAC通道設(shè)有兩個(gè)中斷向量寄存器NIV、EIV(圖18),一個(gè)用于操作的正常結(jié)束,介另一個(gè)用于檢出錯(cuò)誤時(shí)的強(qiáng)制結(jié)束?,F(xiàn)在的改進(jìn)是運(yùn)用總共8個(gè)向量,采用在微碼存儲(chǔ)器174中的八個(gè)獨(dú)立的ETIO中斷程序。此外,通道0的正常中斷具有兩個(gè)可能的意思PCL引起的“信箱被接收”,和“由于連接表的結(jié)束而產(chǎn)生的不太尋常的通道停止”。通過(guò)檢查DMAC狀態(tài)位,該中斷處理器區(qū)分它們。
S/88固件還提供四個(gè)服務(wù)項(xiàng)目,用于EXEC370應(yīng)用程序初始化,上面討論的三個(gè)基本數(shù)據(jù)傳輸?shù)膯?dòng)——數(shù)據(jù)讀、數(shù)據(jù)寫(xiě)和信息Q寫(xiě)。
通常在加電以后很快調(diào)用ETIO一初始化入口,但也能被用作為錯(cuò)誤恢復(fù)嘗試的重新初始化。它復(fù)位BCU硬件和DMAC209,然后以結(jié)構(gòu)和控制值把所有四個(gè)通道中的DMAC寄存器置初值。它還建立必要的連接表并啟動(dòng)通道0,使DMAC209自動(dòng)裝入笫一連接表參數(shù)組,然后等待在線263a上來(lái)自BCU硬件的請(qǐng)求傳輸。
調(diào)用其它三個(gè)服務(wù)項(xiàng)目以啟動(dòng)DMAC通道1(數(shù)據(jù)讀),2(數(shù)據(jù)寫(xiě)),3(信息Q寫(xiě))。調(diào)用程序(EXEC370)對(duì)預(yù)先置有數(shù)據(jù)地址的工作隊(duì)列塊提供一個(gè)指針,計(jì)數(shù)等等。這些程序或者立即啟動(dòng)DMAC209和BCU硬件,或者被請(qǐng)求的DMAC信道是忙碌時(shí)排隊(duì)該操作。(圖41E中所示的單獨(dú)的工作未決隊(duì)列供這三個(gè)通道中的每一個(gè)使用)。一旦所要求的服務(wù)被啟動(dòng)或排隊(duì),將控制返回到該調(diào)用程序,且該中斷處理器繼續(xù)操作到完成。
第三,雖小但很重要,S/88定制固件的區(qū)域是S/88OS(操作系統(tǒng))的改進(jìn),以攔截和定向?qū)Χㄖ铺幚砥鞯?個(gè)DMAC中斷,但對(duì)于S/88OS是透明的。這包含對(duì)操作系統(tǒng)中第6級(jí)(通常被用作電源故障的自動(dòng)向量入口)的標(biāo)準(zhǔn)結(jié)構(gòu)的MC68020向量表的修改,且將該定制中斷處理程序放到該操作系統(tǒng)中。這是一個(gè)最佳實(shí)施方案,然而在下面將看到涉及中斷的初始化程序的部分中,在BCU156中可設(shè)置一個(gè)邏輯,以把一個(gè)向量放到局部總線223,消除向量修改的需要。
所有該最佳實(shí)施方案的S/88固件都是以MC68020匯編語(yǔ)言寫(xiě)的,所以不能稱作微編碼。它被考慮成固件是由于它的功能特性。
S/370處理器85所要求的定制固件有四類1.去到S/88偽通道的微碼I/O指令;2.處理來(lái)自S/88的異步信息,包括I/O中斷;3.維護(hù)所有(仿真的)S/370I/O設(shè)備的結(jié)構(gòu)數(shù)據(jù)和狀態(tài);4.實(shí)現(xiàn)用戶手動(dòng)操作的子集。
將這個(gè)特殊固件整個(gè)寫(xiě)到S/370微碼中,在任何可能之處它可使用預(yù)存的功能子程序。
在S/370中有10個(gè)I/O類指令,將結(jié)合圖44A-1的描述進(jìn)行詳細(xì)地討論。
CLRCH-清通道(只有通道OP)CLRIO-清I/OHDV-停止設(shè)備HIO-停I/ORIO-恢復(fù)I/OSIO-超動(dòng)I/OSIOF-快速起動(dòng)I/OSTIDC-存儲(chǔ)通道ID(只有通道操作)TCH-測(cè)試通道(只有通道操作)TIO-測(cè)試I/O上述每個(gè)指令全都是以微碼型式執(zhí)行的,從而經(jīng)信箱機(jī)構(gòu)將所有重要信息傳送給在S/88中的EXEC370,同時(shí)又保持了與S/370體系結(jié)構(gòu)的一致性。
在適配器154中的幾個(gè)不同的硬件狀態(tài)導(dǎo)致啟動(dòng)“適配器注意”請(qǐng)求,它依次是在S/370處理器85中微碼級(jí)“強(qiáng)制異?!钡膸追N可能原因之一。通過(guò)微碼的這種異常的服務(wù)在S/370指令之間發(fā)生(如果PE85處在等待狀態(tài)則立即進(jìn)行)?!斑m配器注意”的多數(shù)共同原因是,PE85收到一種信息,該信息從I/O偽通道S/88到S/370主存器的IOA區(qū)的固定信息區(qū)189。
對(duì)于“適配器注意”的情況,修改了現(xiàn)在的S/370微碼異常處理程序。該程序(code)檢測(cè)適配器154的狀態(tài),以確定該請(qǐng)求之原因,并且只修改“Q不空”(這意味著接收信息)的處理;其它使之返回到現(xiàn)存的未修改程序處理。
被定義的接收信息的種類是0000 不操作。
0001RESET調(diào)用現(xiàn)在的S/370程序的復(fù)位子程序。
0002CLEARRESET調(diào)用現(xiàn)有S/370清除復(fù)位子程序。
0003HALT 停止S/370程序的執(zhí)行,接通ISTEP方式。
0004STEP 指令單步;執(zhí)行一個(gè)指令,然后停止。
0005RUN 復(fù)位ISTEP方式;恢復(fù)程序的執(zhí)行。
0006LPSW 執(zhí)行S/370“裝入PSW”功能,運(yùn)用信息中提供的PSW。脫離停機(jī)狀態(tài)。
0007SMSG 狀態(tài)信息——更新一個(gè)或多個(gè)所配置的I/O設(shè)備的在局部(IOA)設(shè)備狀態(tài)表中的狀態(tài)位。
0008IMSG 中斷信息——根據(jù)信道屏蔽狀態(tài)或者排隊(duì)或者立即提供一個(gè)S/370I/O中斷。
上述0001-0006信息類是準(zhǔn)對(duì)狀態(tài)控制的S/370的手工操作,它來(lái)自于(仿真)S/370系統(tǒng)控制臺(tái)的用戶輸入。當(dāng)錯(cuò)誤恢復(fù)或同步需要時(shí),通過(guò)EXEC370也可直接強(qiáng)制上述信息類型0001~0006。信息類0007用于通知S/370關(guān)于I/O設(shè)備狀態(tài)的異步變化,比如掉電,聯(lián)機(jī)/脫機(jī)變化,設(shè)備檢測(cè)錯(cuò)誤等等。也可將它擴(kuò)展為用于從S/88到S/370的一般通訊目的。信息類0008是傳遞設(shè)施,用于對(duì)S/370報(bào)告I/O操作結(jié)束狀態(tài)——或者是正常的或者是因錯(cuò)誤的結(jié)束狀態(tài)。它將總是導(dǎo)致最終的程序中斷和在S/370中設(shè)備狀態(tài)表的修改。
ETIO和EXEC370的功能、接口、協(xié)議和指令流的細(xì)節(jié)將在下面討論。
1.引言圖38表示本改進(jìn)的最佳實(shí)施方案的微碼設(shè)計(jì)。在S/370處理單元(每個(gè)處理部件如85)中運(yùn)行的程序保持在控制存儲(chǔ)器171中,并在被PE85執(zhí)行時(shí)用來(lái)解釋S/370指令如圖中所示,具體地設(shè)計(jì)起動(dòng)I/O、中斷處理、操作員功能、機(jī)器檢查和初始微程序裝入/程序裝入(IML/IPL)等微碼指令,以便與S/88微碼相接。該接口包括接口邏輯81的公共硬件設(shè)施,例如局部存儲(chǔ)210、S/370超高速緩存器340,和對(duì)處理器85和62二者的微碼具有中斷能力的實(shí)存空間162。在該S/88程序中,S/370微碼驅(qū)動(dòng)程序包括CCW轉(zhuǎn)換、中斷處理程序、錯(cuò)誤處理程序、IML/IPL和與S/88應(yīng)用接口(EXEC/370)及S/88OS相接的同步程序。
容錯(cuò)處理器62執(zhí)行所有的I/O、診斷、故障隔離、IPL/IML,和系統(tǒng)的同步。不能將這個(gè)系統(tǒng)看作協(xié)處理器系統(tǒng)。因?yàn)镾/370程序只是來(lái)自用戶觀點(diǎn)執(zhí)行的程序。該系統(tǒng)的管理者通過(guò)S/88容錯(cuò)操作系統(tǒng)可控制該系統(tǒng)屬性。S/88OS和應(yīng)用EXEC/370的基本功能是帶有多370通道外部特性的I/O轉(zhuǎn)換。通過(guò)S/88OS處理所有的系統(tǒng)錯(cuò)誤和恢復(fù)功能及動(dòng)態(tài)資源分配功能。原來(lái)由S/370OS處理的機(jī)器檢驗(yàn)和操作多功能,現(xiàn)在交給了S/88OS,所以可以用容錯(cuò)方式處理這些功能。
圖39表示一個(gè)S/370I/O命令的執(zhí)行,在此例中是一個(gè)起動(dòng)I/O命令。簡(jiǎn)要地示出了S/370指令、S/370微碼、耦合硬件(PE85-PE62)、耦合微碼ETIO(在PE62上執(zhí)行的)和S/88程序EXEC370所采取的動(dòng)作,最后的動(dòng)作是在S/88處理器PE62上執(zhí)行S/370SIO。
圖40是一個(gè)簡(jiǎn)化圖,簡(jiǎn)要地表示了對(duì)于EXEC370的改進(jìn)系統(tǒng)的某些部件和功能,和在SIO執(zhí)行中所用的微碼驅(qū)動(dòng)器,與之一起還有控制流程、數(shù)據(jù)流、信號(hào)和硬件/程序分割。
2.ETIO/EXEC370程序接口——圖41A-H,42在這部分中所用3下列術(shù)語(yǔ)EXEC370——與S/370外部設(shè)備、服務(wù)、配置、操作員控制臺(tái)等的仿真和支援有關(guān)的在PE62上運(yùn)行的所有S/88軟件,存儲(chǔ)在微碼存儲(chǔ)器174中。可把較少使用的EXEC370程序存儲(chǔ)在超高速緩存器173中。
S/370微碼——該微碼運(yùn)行在支援S/370處理器操作的S/370處理器85中,存儲(chǔ)在存儲(chǔ)器171。
ETIO——EXEC370和BCU156硬件之間的微碼介面,保持在存儲(chǔ)器174中。
S/370PE85微碼和EXEC370通過(guò)“協(xié)議”彼此通訊,如圖41A所示。PE85微碼對(duì)EXEC370發(fā)消息請(qǐng)求執(zhí)行I/O等功能,EXEC370則發(fā)出表示I/O功能完成的消息,關(guān)于I/O設(shè)備和通道狀態(tài)變化的消息、以及請(qǐng)求PE85微碼執(zhí)行具體的S/370CPU功能的消息。通過(guò)硬件將這些消息(以后將詳細(xì)描述)在PE85微碼和EXEC370之間傳送,其硬件包括超高速緩存控制器153、轉(zhuǎn)接器154、BCU和它的DMAC209等。ETIO對(duì)EXEC370也可用這種信息傳送服務(wù)。
現(xiàn)在來(lái)描述ETIO和EXEC370之間的界面以及PE85微碼和EXEC370之間的協(xié)議。
在EXEC370,由S/88執(zhí)行的S/370外部支撐軟件和運(yùn)行在PE62中的BCU微碼驅(qū)動(dòng)器(ETIO)之間的界面,由駐留在存儲(chǔ)器210中的一組隊(duì)列和緩存器,一個(gè)事件標(biāo)識(shí)(ID)、一個(gè)EXBUSY變量和一個(gè)子程序調(diào)用序列組成。該子程序的調(diào)用界面啟動(dòng)S/88和S/370之間的數(shù)據(jù)傳送操作,并在S/88重新引導(dǎo)時(shí)初始化DMAC209和BCU156。事件ID界面(對(duì)S/88中斷)當(dāng)把工作加入隊(duì)列時(shí)通知EXEC370 。
在存儲(chǔ)器210中,有16個(gè)4KB塊500(圖41C)。14個(gè)(500-0到500-13)被用作4KB塊緩存器。余下的兩個(gè)分到32個(gè)256字節(jié)的塊501-0到501-31。
將4個(gè)塊501-0到501-3用作硬件通訊,另一個(gè)501-4用作隊(duì)列(QS),其它變量對(duì)EXEC370和ETIO是共同的。其余的27個(gè)用作為工作隊(duì)列緩存器(WQB)501-5到501-31。在等價(jià)與塊501-0和501-1的地址空間中,BCU156命令(PE62執(zhí)行的)被指定有256個(gè)字節(jié),DMAC寄存器地址被指定有256個(gè)字節(jié),供PE62訪問(wèn),如上面描述的BCU156之操作。27個(gè)工作排隊(duì)緩存器的每個(gè)都保存著關(guān)于一項(xiàng)具體任務(wù)或服務(wù)請(qǐng)求的數(shù)據(jù)。26個(gè)WOB被用來(lái)服務(wù)于PE85微碼啟動(dòng)請(qǐng)求。其余的WOB(EXWOB)501-31用于為來(lái)自S/88并送到PE85微碼去的請(qǐng)求服務(wù);它絕不會(huì)出現(xiàn)在圖23E的空閑的Q上。通過(guò)一個(gè)基本地址和一個(gè)存儲(chǔ)在DMAC209中的偏移值對(duì)每個(gè)WQB進(jìn)行尋址。
圖41D的每個(gè)WQB包括一個(gè)16字節(jié)郵件塊505、一個(gè)16字節(jié)參數(shù)塊506、和224字節(jié)與設(shè)備相關(guān)的工作區(qū)507。該郵件塊505包含在EXEC370和PE85微碼間傳送的數(shù)據(jù)。它的內(nèi)容對(duì)整個(gè)ETIO界面是透明的。該參數(shù)塊506包含有在ETIO和EXEC370之間傳送的參量。通常是對(duì)于局部存儲(chǔ)器210和主存器162之間的數(shù)據(jù)傳送。該工作區(qū)507是屬EXEC370所有。它包括關(guān)于被請(qǐng)求操作的進(jìn)程、現(xiàn)在S/370設(shè)備狀態(tài)、可能的用戶數(shù)據(jù)、S/88設(shè)備的種類和對(duì)其它EXEC370控制塊的指針信息,以及錯(cuò)誤發(fā)生信息等等。
該郵件塊505包括4個(gè)字段,該4個(gè)字段含有在PE85微碼和EXEC370之間傳送的S/370I/O信息OP-這一字段包括來(lái)自EXEC370或PE85微碼的請(qǐng)求。
CVA-16位通道單元地址。
CAW-當(dāng)有關(guān)的I/O指令發(fā)出時(shí),在S/370存儲(chǔ)器162中的16進(jìn)制單元48中的32位S/370通道地址字。
CCW-由上述CAW尋址的S/370通道命令字。當(dāng)EXEC370返回一個(gè)中斷指示時(shí),這個(gè)字段含有CSW、S/370通道狀態(tài)字。
當(dāng)EXEC370請(qǐng)求在存儲(chǔ)器210和主存器162之間進(jìn)行數(shù)據(jù)傳送時(shí),該參量塊156包括6個(gè)參數(shù)。
1.req——ETIO請(qǐng)求字段0.空操作1.將PE85消息隊(duì)列189中的內(nèi)容寫(xiě)入存儲(chǔ)器162中,然后對(duì)線256a上的PU請(qǐng)求發(fā)一個(gè)BCU。
2.從S/370存儲(chǔ)器讀數(shù)據(jù)。
3.將數(shù)據(jù)寫(xiě)入S/370存儲(chǔ)器。
2.ret——由“req”字段所作請(qǐng)求的結(jié)果。由EXEC370保證該字段的初值為0。如果返回為非零,則ETIO指有某種類型的錯(cuò)誤。
3.COUNT——被傳輸?shù)淖止?jié)的數(shù)目。
4.S/370ADDR——在S/370存儲(chǔ)器中數(shù)據(jù)區(qū)的開(kāi)始單元。這不一定是CCW地址字段值。
5.Key——這個(gè)16位字段將包含下面的位模式PPKKKK1000000000
這里PP(優(yōu)先權(quán))=00,而KKKK=適當(dāng)?shù)腟/370存儲(chǔ)器保護(hù)鍵。
Butt Addr——在存儲(chǔ)器210中數(shù)據(jù)區(qū)的起始單元。它可以在一個(gè)4K緩沖器內(nèi)部或一個(gè)WQB。
EXEC370將確保下面的關(guān)系(S/370ADDR模4)=(Buff Addr模4)EXEC370用排隊(duì)來(lái)保持WQB。該隊(duì)列通訊區(qū)501-4是256個(gè)字節(jié)長(zhǎng),并保持在存儲(chǔ)器210中有400(16進(jìn)制)偏移。圖41E表示在ETIO和EXEC370之間定義的隊(duì)列,用于保持對(duì)WQB的指針入口free Q 510 保存對(duì)現(xiàn)在沒(méi)有采用的WQB的指針。
(空隊(duì)列)Work Q 511 保存對(duì)正等待EXEC370服務(wù)的WQB(工作隊(duì)列) 的指針。
S/3701Q512 保存對(duì)正等待從EXEC370到PE85傳送信息的WQB的指針。
S/3702Q513 保存對(duì)正等待從超高速緩存控制器153到S/88傳送數(shù)據(jù)的WQB的指針。
S/3703Q514 保存對(duì)正等待從S/88到超高速緩存控制器153傳輸數(shù)據(jù)的WQB的指針。
S/88Q515保存對(duì)ETIO服務(wù)完成之后的WQB的指針。
圖41E表示通過(guò)該排隊(duì)的WQB的路徑。在S/88重新引導(dǎo)時(shí)由EXEC370對(duì)所有隊(duì)列進(jìn)行初始化。在free Q上保存空WQB。當(dāng)需要去填充連接表516時(shí)ETIO將它們從free Q移出。DMAC209經(jīng)連鏈表516將S/370郵箱條目從存儲(chǔ)器162的郵箱區(qū)188放入空WQB的郵件區(qū)。已經(jīng)填入鏈表中的WQB通過(guò)ETIO移到Work Q 511。當(dāng)ETIO放置一個(gè)(或多個(gè))WQB到Work Q 511上并且EXEC370不處在忙碌狀態(tài)時(shí),ETIO通知EX370事件識(shí)別(ID)。EXEC370在它服務(wù)該請(qǐng)求之前從Work Q移出該WQB。
在該請(qǐng)求的處理過(guò)程中,數(shù)據(jù)可能必須在超高速緩存控制器153和緩存器(WQB或區(qū)緩存器)之間傳送,或者可能不得不向PE85微碼程序發(fā)送一個(gè)消息。ETIO對(duì)EXEC370提供這種服務(wù)。EXEC370調(diào)用ETIO,起動(dòng)適當(dāng)?shù)腂CU156操作,或者如果硬件資源正在工作著,則將該WQB放到適當(dāng)?shù)腟/370Q上。這三種服務(wù)每種(對(duì)S/370發(fā)送信息,對(duì)S/370傳送數(shù)據(jù)和從S/370傳輸數(shù)據(jù))具有它們自己的隊(duì)列512、513、514。ETIO程序(code)將WQB加到S/370諸隊(duì)列之一中,同時(shí)放到EXEC370執(zhí)行軌道上。當(dāng)該I/O服務(wù)完成時(shí),ETIO中斷程序?qū)⒃揥QB放到S88Q515上;并且如果EXEC370不是在忙著,通知EX370事件ID。
圖42表示通過(guò)與EXEC370和ETIO之間的界面、界面硬件89和S/370微碼一起排隊(duì)的WQB的運(yùn)動(dòng)。當(dāng)原有的工作請(qǐng)求全部完成時(shí),數(shù)據(jù)傳輸完成時(shí),I/O中斷(如果有)被送到PE85;且EXEC370將WQB返回到free Q。然后EXEC370通過(guò)先檢查S88Q515,然后查Work Q511來(lái)獲得它的下一項(xiàng)任務(wù)。如果二者都是空的,EXEC370將EXBUSY變量置零且等待要被通知的EX370事件。EXEC370當(dāng)它被通知時(shí)在它開(kāi)始處理之前將EXBUSY置1。
如圖41F所示,所有的排列,EX370事件識(shí)別和EXBUSY變量保持在存儲(chǔ)器210的隊(duì)列公用區(qū)501-4中。如圖41G所示,每個(gè)隊(duì)列在性質(zhì)上是循環(huán)的(circnlar),帶有兩個(gè)索引型的指針填索引517和空索引518。填索引517指出要填的下一個(gè)排隊(duì)入口,而空索引518指示要排空的下一個(gè)入口。如果空的等于填的索引,則該隊(duì)列是空的。所有這6個(gè)隊(duì)列絕不會(huì)溢出,因?yàn)槊恳粋€(gè)具有32個(gè)入口,而只有27個(gè)WQB。
每個(gè)隊(duì)列還包括qid標(biāo)識(shí)這個(gè)隊(duì)列。
QSIZE 在該隊(duì)列中的表數(shù)目數(shù)(n)。
Q(i) 地址入口,指向隊(duì)列中的WQB。
硬件通訊區(qū)包括1024個(gè)字節(jié)。BCU通訊區(qū)采用512個(gè)字節(jié)地址空間。鏈表516采用480個(gè)字節(jié)。將32個(gè)字節(jié)保留作其它硬件通訊之用。DMAC209運(yùn)用鏈表516(圖41H),從存儲(chǔ)器162中的郵箱區(qū)188取來(lái)郵件塊條目。來(lái)自free Q510的WQB被用來(lái)填充鏈表516中的條目。每個(gè)鏈表?xiàng)l目包含10個(gè)字節(jié),并標(biāo)識(shí)出在存儲(chǔ)器210中的WQB的地址,在這里放入數(shù)據(jù)、被傳送的數(shù)據(jù)的字節(jié)計(jì)數(shù)(16),和該表中下一個(gè)連接條目的地址。當(dāng)DMAC209(通道0)到達(dá)鏈表中下一個(gè)連接地址為零的條目時(shí),它就中斷S/88。該DMAC209(通道0)在表中的現(xiàn)在位置不論什么時(shí)候?qū)τ谲浖际强傻玫降摹?br>
除了它的中斷入口指針之外,ETIO具有兩個(gè)外部可調(diào)用的入口指示etio initetio (Wbn)每當(dāng)S/88重新引導(dǎo)時(shí),EXEC370調(diào)用一項(xiàng)etioinit,與此同時(shí)EXEC進(jìn)行初始化。此時(shí)這些隊(duì)列已被初始化了,且事件識(shí)別字段將是有效的。PE85微碼還不在操作,然而它可以是處在IML過(guò)程中(初始微程序裝入)。
當(dāng)希望從S/370或到S/370傳輸數(shù)據(jù)或信息時(shí),EXEC370調(diào)用etio(Wbn)。
參數(shù)Wbn是一個(gè)識(shí)別包含服務(wù)請(qǐng)求的WQB的兩字節(jié)整型工作隊(duì)列緩存器數(shù)目。Wbn是一個(gè)索引值,范圍從0到27。該服務(wù)請(qǐng)求用參數(shù)區(qū)中的req字段進(jìn)行識(shí)別。該req字段值是1=將這個(gè)郵件塊的內(nèi)容寫(xiě)入在存儲(chǔ)器162中的S/370消息隊(duì)列189,然后對(duì)PU請(qǐng)求發(fā)一個(gè)BCU;2=將數(shù)據(jù)從S/370存儲(chǔ)器162中讀入規(guī)定的存儲(chǔ)器210區(qū)域;而3=將數(shù)據(jù)從所規(guī)定的存儲(chǔ)器210區(qū)寫(xiě)入S/370存儲(chǔ)器。
如果所請(qǐng)求的I/O功能不能被立即起動(dòng),該子程序ETIO將這個(gè)WQB在S/3701Q,S/3702Q或S/3703Q上排隊(duì)。當(dāng)前面的操作結(jié)束時(shí),ETIO中斷程序?qū)倪m當(dāng)?shù)腟/370Q中下一個(gè)WQB出隊(duì)。
如果req字段包括一個(gè)1,在該郵件塊條目到達(dá)存儲(chǔ)器162的S/370消息隊(duì)列區(qū)189中之前將不通知給PE86微碼(比如通過(guò)中斷通知)。
如果S/370消息隊(duì)列是滿的,則在參數(shù)塊ret字段中的錯(cuò)誤將對(duì)EXEC370標(biāo)明出了問(wèn)題。如果需要,EXEC370能提供后備隊(duì)列支援。
3.EXEC370、S/370微碼協(xié)議EXEC370和S/370微碼之間的通訊需要一個(gè)設(shè)備狀態(tài)表(DST),對(duì)于S/370存儲(chǔ)器162中的每個(gè)I/O設(shè)備有一個(gè)項(xiàng)目。EXEC370和S/370微碼經(jīng)過(guò)來(lái)回傳送的16字節(jié)消息(見(jiàn)圖41D的郵件區(qū)505)彼此進(jìn)行通訊。這里有一個(gè)隊(duì)列。以FIFO的順序保存信息,用于每一端的接收器。這里還有一個(gè)通知機(jī)構(gòu)(PU到BCU和BCU到PU線)。在郵件塊505中,16位S/370操作碼字段“OP”包括一個(gè)來(lái)自EXEC370或S/370微碼的請(qǐng)求或回答。該16位通道部件地址(CVA)是S/370I/O指令的操作地址。CAW是當(dāng)I/O指令發(fā)出時(shí)在S/370存儲(chǔ)器162中的16進(jìn)制單元48中的一個(gè)32位內(nèi)容。通過(guò)上述CAW對(duì)8字節(jié)的CCW尋址。當(dāng)EXEC370返回一個(gè)中斷指示時(shí),這個(gè)字段包含CSW。當(dāng)它引起I/O中斷時(shí),PE85將該CSW存儲(chǔ)在S/370十六進(jìn)制單元40中。該CUA字段將不改變。
當(dāng)遇到要由EXEC370部分地或完全地處理的S/370指令時(shí),通過(guò)S/370微碼將操作信息送給EXEC370。該操作信息包括上述的關(guān)于圖41D的郵件塊505的信息。
送給S/370微碼的EXEC370消息包括1.復(fù)位(RESET)消息(OP=1),請(qǐng)求S/370微碼處理S/370復(fù)位。
2.清除復(fù)位(CLEAR RESET)消息,(OP=2)請(qǐng)求S/370復(fù)位和清除存儲(chǔ)器。
3.停機(jī)(HALT)消息,請(qǐng)求S/370微碼停止取S/370指令并等待后面的指令。該停機(jī)信息包括OP字段=3。
4.步進(jìn)消息(OP=4),要求S/370微碼取出并執(zhí)行一個(gè)S/370指令,然后進(jìn)入停機(jī)方式。
5.運(yùn)行(RUN)消息(OP=5),要求S/370微碼進(jìn)入它的取出和執(zhí)行S/370指令的正常方式。
6.LPSW消息(OP=6)要求S/370微碼執(zhí)行S/370LPSW(裝入程序狀態(tài)字)指令,該指令采用該LPSW消息的地址字段中規(guī)定的地址。
7.SMSG消息(OP=7)表示一個(gè)或多個(gè)配置的S/370I/O設(shè)備的狀態(tài)改變。
8.IOINTR消息(OP=8)指示一個(gè)I/O操作的完成。如果該通道沒(méi)有被屏蔽掉,S/370微碼將發(fā)出一個(gè)I/O中斷。如果該通道被屏蔽,S/370微碼將CSW保存在設(shè)備狀態(tài)表中,并將該設(shè)備狀態(tài)置為01(存儲(chǔ)CSW)。IOINTR信息還包括CUA和NC(放在DSTCUA中)下一個(gè)字段。
從S/88到超高速緩存控制器153的兩個(gè)消息FETCH和STORE是邏輯功能而不是消息。對(duì)于CNT和ADDRESS字段允許其為偶數(shù)或奇數(shù)值是必要的。這些字段是BUF——2個(gè)字節(jié)存儲(chǔ)器210中緩存器地址CNT——2個(gè)字節(jié)字節(jié)計(jì)數(shù)ADDR——4個(gè)字節(jié) S/370存儲(chǔ)器地址W/Key
S/370微碼維護(hù)一個(gè)內(nèi)含有關(guān)每個(gè)可尋址的S/370設(shè)備狀態(tài)的信息。主要的信息是設(shè)備狀態(tài)——在一個(gè)TIO、SIO等之后,允許立即設(shè)置CR(S/370的狀態(tài)寄存器)。
設(shè)備下一個(gè)狀態(tài)——當(dāng)取得一個(gè)I/O中斷時(shí),使用該下一個(gè)狀態(tài)。
設(shè)備的通道狀態(tài)字(CSW)——用以標(biāo)志370I/O中斷。
DST(CUA)中的四種不同的設(shè)備狀態(tài)對(duì)于370設(shè)備是可行的00 設(shè)備就緒01 設(shè)備未就緒,存貯CSW10 設(shè)備忙11 設(shè)備不能操作一個(gè)S/370設(shè)備完成一個(gè)I/O操作時(shí),一個(gè)CSW由該通道發(fā)送給CPU。如果該通道被屏蔽,則CPU不接受這個(gè)CSW。
在本申請(qǐng)中,如果該通道被屏蔽,S/370微碼保留這個(gè)CSW并將DST(CUA)狀態(tài)置為01。下一個(gè)TIO或SIO將這個(gè)被保留的CSW得以存貯并將狀態(tài)碼01(CSW被存貯)放在CR內(nèi)。當(dāng)S/370微碼被初始化時(shí),假定所有的設(shè)備都不能操作。S/88將為每個(gè)被支持的設(shè)備發(fā)送一個(gè)“在線”(ONLINE)消息。該設(shè)備由它的控制單元地址(CUA)識(shí)別。
4.S/370微碼和EXE370之間的指令流在PE85執(zhí)行S/370程序指令串時(shí),它將不時(shí)地碰上一個(gè)I/O指令,在本申請(qǐng)中這將由S/88處理器62和有關(guān)硬件、固件以及軟件來(lái)執(zhí)行。圖44A~L(以及上面提到的圖43)示出了用以執(zhí)行這些S/370I/O指令的微碼程序流。BCU156(和適配器154)是主要的硬件耦合機(jī)構(gòu),用以促使S/88硬件執(zhí)行最后的S/370I/O指令。在BCU156內(nèi),DMAC209是主要的“交通警察”,用以直接指揮操作和數(shù)據(jù)流。DMAC209的通道0接收來(lái)自S/370的I/O命令,通道1管理來(lái)自S/370的數(shù)據(jù)流,通道2管理去S/370的數(shù)據(jù)流,通道3向S/370發(fā)送中斷(和其它)消息。BCU156中的本地存貯器210形成S/370和S/88之間的通信區(qū)。
本地總線223/247將S/88處理器62連接到DMAC209和本地存貯器210上,還經(jīng)過(guò)BCU156和適配器154中的加速硬件將DMAC209和存貯器210接到S/370上。
S/370I/O指令被分派到S/370微碼例行程序用以在S/370內(nèi)部進(jìn)行管理,而S/88應(yīng)用程序EXEC370(和其有關(guān)的S/88ETIO微碼一起)影響最后的I/O執(zhí)行。適配器154和BCU156在S/370和S/88代碼之間形成硬件連接。起動(dòng)I/O微碼例行程序有一個(gè)表DST,該表始終監(jiān)視每個(gè)設(shè)備的狀態(tài),例如它當(dāng)前是否可用。它已發(fā)出一個(gè)SIO了嗎。它忙嗎。它已收到一個(gè)中斷返回嗎。這種信息包含在狀態(tài)碼CC中。
這一節(jié)描述各種S/370I/O操作所用的指令流,在這一節(jié)中所使用的某些特定的過(guò)程和術(shù)語(yǔ)在這一節(jié)的末尾予以規(guī)定。這些操作如下所述1。清通道(圖44A)——這個(gè)指令通過(guò)在一被尋址的通道上向所有設(shè)備發(fā)一個(gè)系統(tǒng)復(fù)位信號(hào),以便在被尋址通道上執(zhí)行I/O系統(tǒng)復(fù)位。S/370微碼不知道哪些設(shè)備實(shí)際在該通道上,因此為該通道上的所有DST入口置CC=3。接著,EXEC370將發(fā)送SMSG,以重升定義該通道的配置。
被清通道由該指令地址的16~23位尋址。當(dāng)S/370微碼接收到從調(diào)度發(fā)來(lái)的控制時(shí),它開(kāi)始檢驗(yàn)通道地址。通道地址或是有效,或是無(wú)效。如果通道地址無(wú)效,則狀態(tài)寄存器CR置3,將S/370返到下一條順序指令。由S/370微碼支持的通道被看作是有效的通道地址。對(duì)于有效通道地址,S/370微碼向EXEC370發(fā)去一個(gè)清通道消息,然后它走過(guò)這條通道的所有設(shè)備狀態(tài)表(DST)入口。所有狀態(tài)碼字段被置3,這意味著不能使用。被找到的任何懸掛起來(lái)的中斷表(PIT)表項(xiàng)都被釋放到自由表中的空位上。S/370微碼然后將狀態(tài)寄存器置零,并進(jìn)到下一條順序指令。與此同時(shí),當(dāng)EXEC370接收這個(gè)清通道消息時(shí),它對(duì)該被尋址通道上的所有設(shè)備執(zhí)行I/O系統(tǒng)復(fù)位。然后它弄清哪個(gè)設(shè)備將是在線的并給S/370微碼發(fā)去一個(gè)狀態(tài)消息,以重新定義該通道的配置。當(dāng)S/370微碼接收這個(gè)狀態(tài)消息時(shí),它就把用于已尋址的每個(gè)設(shè)備的設(shè)備狀態(tài)表中的狀態(tài)碼修改為狀態(tài)消息中的樣子。
2。清I/O(圖44B)——這條指令可將PE85中處理的S/370指令的執(zhí)行懸掛起來(lái),直到用于被尋址的CUA的IMSG由EXEC370返回時(shí)為止。
當(dāng)S/370微碼接收到從調(diào)度來(lái)的控制時(shí),它從這條指令的高端地址得到控制單元地址CUA。它利用這個(gè)控制單元地址來(lái)尋找那個(gè)設(shè)備用的校正設(shè)備狀態(tài)表DST的入口。它檢驗(yàn)狀態(tài)碼CC值。這有三種選擇(1)CC等于0或3,(2)CC等于2或CC等于1和下一狀態(tài)NC等于2,(3)CC等于2或CC等于1。
對(duì)于第一種選擇,CC等于0或3,S/370微碼只將狀態(tài)寄存器置為CC值并進(jìn)入下一條順序指令。
如果CC等于1,在懸掛中斷表(PIT)內(nèi)有一個(gè)懸掛中斷,在這種情況下,S/370微碼進(jìn)到該懸掛中斷表入口并檢驗(yàn)NC值。
對(duì)于第二種情況,CC等于2或者是CC等于1以及NC等于2,S/370給EXEC370發(fā)送一個(gè)清I/O消息,它等待確認(rèn),并且清該設(shè)備有關(guān)的任何懸掛中的中斷項(xiàng)目。然后,它等待由EXEC370返回的中斷消息。在EXEC370接收該清I/O消息的同時(shí),它執(zhí)行其被尋址設(shè)備的選擇性復(fù)位,為該設(shè)備建立一個(gè)控制狀態(tài)字,將一個(gè)中斷消息返回到S/370微碼。當(dāng)S/370接收該中斷消息時(shí),它根據(jù)該消息產(chǎn)生一個(gè)PIT表項(xiàng)并填入NC和CSW。于是,該懸置項(xiàng)被連接到該DST表目上。
在這點(diǎn)上,我們來(lái)到第三種選擇,CC等于2或CC等于1。我們到達(dá)這點(diǎn)可通過(guò)兩條路徑中的一條。第一路徑是該設(shè)備忙或該設(shè)備已發(fā)出一個(gè)懸掛著的中斷,但它仍舊忙。這是用于正被發(fā)布選擇性復(fù)位的情況。笫二路徑是該設(shè)備有一懸掛著的中斷,但它不再忙。對(duì)于這兩條路徑,CC將等于2或1。這是笫三種選擇。S/370微碼上托這個(gè)中斷,將該CSW放入S/370存貯器,將狀態(tài)寄存器置1,并返回到下一條順序指令。
3.停設(shè)備(圖44C)——當(dāng)S/370微碼接收到來(lái)自調(diào)度的用于停設(shè)備指令的控制時(shí),它檢驗(yàn)被尋址設(shè)備狀態(tài)表表項(xiàng)的狀態(tài)碼。這有三種選擇狀態(tài)碼等于0或2,狀態(tài)碼等于1,狀態(tài)碼等于3。對(duì)于笫一種選擇,狀態(tài)碼等于0或2,S/370微碼向EXEC370發(fā)出一個(gè)停設(shè)備消息。然后它使S/370CSW中的16個(gè)狀態(tài)位變零,將狀態(tài)寄存器置1并返回到下一條順序指令。在EXEC370接收到這個(gè)停設(shè)備消息的同時(shí),它在被尋址設(shè)備上執(zhí)行適當(dāng)?shù)墓δ埽⒎祷匾粋€(gè)正常中斷消息。當(dāng)CC=1,S/370微碼上托這個(gè)來(lái)自PIT表的中斷,將CSW放入S/370存貯的適當(dāng)?shù)拇尜A單元,將狀態(tài)寄存器置1,并走到下一條順序指令。對(duì)于第三種選擇,CC等于3,S/370微碼只將狀態(tài)寄存器置3,并走到下一條順序指令。
4.停I/O(圖44C)——停I/O的功能與設(shè)備的功能說(shuō)明相同。
5.恢復(fù)I/O(圖44D)——在S/370系統(tǒng)中,恢復(fù)I/O指令(RIO)只檢驗(yàn)在接收到該指令之前該通路是否可供使用。就象其它I/O指令一樣,S/370微碼必須檢驗(yàn)用于特定的CUA的CC。對(duì)于這個(gè)指令,CAW不被引用,并且CCW不被取出。
當(dāng)S/370微碼接收到來(lái)自調(diào)度的用于恢復(fù)I/O指令的控制時(shí),它檢驗(yàn)用于被尋址設(shè)備狀態(tài)入口的狀態(tài)碼。這有兩種選擇CC等于0或1或2;CC等于3。對(duì)于CC等于0、1或2,S/370微碼向EXEC370發(fā)出一個(gè)恢復(fù)一個(gè)I/O消息,狀態(tài)碼置2,狀態(tài)寄存器置O,進(jìn)到笫一條順序指令。在EXEC370接收到這個(gè)恢復(fù)I/O消息的同時(shí),它查閱該控制。直到尋址和繼續(xù)先前被懸掛的I/O操作時(shí)為止。對(duì)于第二種選擇,CC等于3,S/370微碼只將狀態(tài)寄存器置3并進(jìn)到下一條順序指令。
6.起動(dòng)I/O(圖44)——當(dāng)S/370微碼接收到從調(diào)度來(lái)的、用于起動(dòng)I/O指令的控制時(shí),它使用該控制,直到找到該設(shè)備狀態(tài)表表目的地址時(shí)為止。然后,它檢驗(yàn)該狀態(tài)碼,這里有四種選擇CC等于0;CC等于1;CC等于2;CC等于3。對(duì)于CC等于0,表示該設(shè)備就緒,S/370微碼向EXEC370發(fā)出了一個(gè)起動(dòng)I/O消息,CC置2(意味著“忙”),將狀態(tài)寄存器置0(意味著“被接收”),返回到下一順序指令。在EXEC370接收到一個(gè)起動(dòng)I/O消息時(shí),它使用該控制,直到找到這個(gè)具體設(shè)備的地址并在那個(gè)設(shè)備上開(kāi)始正常I/O操作時(shí)為止。對(duì)于第二種選擇,CC第于1,S/370微碼上托該中斷,將CSW放入S/370存貯器,將CSW比特置“忙”位,將狀態(tài)寄存器置為1,返回到下一條順序指令。對(duì)于笫三種選擇,CC等于2,S/370微碼將CSW和S/370存貯器的存貯單元40X全都置0,接通CSW忙位,將狀態(tài)寄存器置成1,進(jìn)到下一條順序指令。對(duì)于第四種選擇,CC等于3,S/370微碼只將狀態(tài)寄存器置成3(意味著設(shè)備不能操作),進(jìn)到下一順序指令。
7.起動(dòng)I/O并迅速釋放(圖44F)——當(dāng)S/370微碼接收到來(lái)自調(diào)度的用于起動(dòng)I/O快速指令的控制時(shí),它檢驗(yàn)用于被尋址的DST的表目的狀態(tài)碼。這有兩種選擇CC等于0、1或2;CC等于3。對(duì)于第一種選擇,CC等于0、1或2,S/370微碼向EXEC370發(fā)出一個(gè)起動(dòng)I/O快速的消息,將CC置2,將狀態(tài)寄存器置0,進(jìn)到下一條順序指令。在EXEC370接收到一個(gè)起動(dòng)I/O快速的消息的同時(shí),如果它能夠做,則它起動(dòng)這個(gè)I/O操作;否則,當(dāng)它被S/370微碼接收時(shí),它返回一個(gè)帶有CSW的中斷消息,這個(gè)CSW包含一個(gè)延時(shí)的狀態(tài)碼,其起正常中斷的作用。對(duì)于第二種選擇,狀態(tài)碼等于3,S/370微碼只將狀態(tài)寄存器置3,進(jìn)到下一條順序指令。
8.測(cè)試I/O(圖44G)——當(dāng)S/370微碼從調(diào)度接收到用于測(cè)試I/O指令的控制時(shí),它檢驗(yàn)狀態(tài)碼。這里有三種選擇CC等于0或3;CC等于1;或CC等于2。對(duì)于CC等于0或3,該微碼將狀態(tài)寄存器置位等于CC值,進(jìn)到下一條順序指令。對(duì)于笫二種選擇,CC等于1,該微碼上托該中斷,并將CSW放入S/370存貯器,將狀態(tài)寄存器置1,意味著CSW被存貯,然后進(jìn)到下一條順序指令。對(duì)于笫三種選擇,CC等于2,該微碼將S/370存貯器內(nèi)的CSW區(qū)(40X)清零,將CSW忙位置1,將狀態(tài)寄存器置1,然后進(jìn)到下一條順序指令。
9.存貯通道ID(圖44H)——當(dāng)S/370微碼從調(diào)度接收到用于存貯通道ID指令的控制時(shí),它檢驗(yàn)該通道地址。這有兩種選擇通道地址有效和通道地址無(wú)效。對(duì)于被選擇通道的無(wú)效,該微碼將狀態(tài)寄存器置成3,然后進(jìn)到下一條順序指令。對(duì)于被選擇通道的有效,該微碼將S/370存貯器的存貯單元十六進(jìn)制A8置為十六進(jìn)制20000000。它將狀態(tài)寄存器置0,然后進(jìn)到下一條順序指令。
10.測(cè)試通道(圖44I)——當(dāng)S/370微碼從調(diào)度接收到用于測(cè)試通道指令的控制時(shí),它檢驗(yàn)該通道地址。注意對(duì)于這個(gè)流有兩種主要選擇和三種次要選擇。對(duì)于笫一種主要選擇,通道地址無(wú)效,該微碼將狀態(tài)寄存器置3,然后進(jìn)到下一條順序指令。對(duì)于笫二種選擇,通道地址有效,該微碼還檢驗(yàn)該通道的所有DST表目。如果該微碼發(fā)現(xiàn)了一個(gè)具有CC等于1(意味著該設(shè)備有一個(gè)懸掛中的中斷)的特定設(shè)備的DST表目,則第一種次要的選擇就要發(fā)生。對(duì)于這種情況,該微碼將狀態(tài)寄存器置成1,然后進(jìn)到下一條順序指令。當(dāng)該微碼到達(dá)用于這個(gè)通道的DST入口表的底部時(shí),它還沒(méi)找到CC等于1的入口,它就要檢驗(yàn)是否這里至少有一個(gè)CC等于2的入口。如果沒(méi)有,則這就是笫二種次要的選擇,對(duì)于這種情況,該微碼將狀態(tài)寄存器置成2,然后進(jìn)到下一順序指令。否則,發(fā)生第三種次要的選擇,該微碼將狀態(tài)寄存器置0,然后進(jìn)到下一條順序指令。
11.初級(jí)和二級(jí)中斷(圖44J、圖44K)——初級(jí)和二級(jí)中斷這些術(shù)語(yǔ)是S/370的術(shù)語(yǔ)。初級(jí)中斷在由一個(gè)I/O操作產(chǎn)生的CSW中至少含有“通道結(jié)束(CE)”狀態(tài)位的中斷。二級(jí)中斷或是一個(gè)第二中斷,含有用于I/O操作的“設(shè)備結(jié)束(DE)”,或是一個(gè)異步中斷,由設(shè)備請(qǐng)求服務(wù)來(lái)起動(dòng)。
在敘述上,初級(jí)中斷和次級(jí)中斷沒(méi)有差別,因此,現(xiàn)在只描述初級(jí)中斷。在I/O被屏蔽中斷與I/O被允許中斷(圖44J和圖44K)之間的差別是I/O是否被屏蔽。也就是說(shuō),S/370處理器將接收來(lái)自該通道的中斷,還是不接收這個(gè)中斷。如果一個(gè)中斷不被S/370處理器所接收,則該通道堆積這個(gè)中斷。該中斷被稱為懸掛中斷,直到S/370處理器允許它時(shí)為止。當(dāng)一個(gè)中斷狀態(tài)發(fā)生而EXEC370仿真一個(gè)特定設(shè)備操作時(shí),EXEC370建立一個(gè)CSW并將其存在一個(gè)消息里,然后將該消息發(fā)送到S/370微碼。當(dāng)該微碼接收該中斷消息時(shí),它檢驗(yàn)S/370屏蔽以弄清I/O是被屏蔽還是被允許。如果這個(gè)I/O被屏蔽(圖44J),則它堆積該中斷。堆積中斷過(guò)程將在下文描述。如果S/370微碼檢驗(yàn)該屏蔽,并且I/O被允許(圖44K),則用于中斷設(shè)備的DST表目?jī)?nèi)的狀態(tài)碼字段被置位等于該中斷消息中的下一個(gè)狀態(tài)(NC),來(lái)自該消息的CSW被放入S/370存貯器,并且該微碼使一個(gè)I/O中斷被執(zhí)行。
12.S/370I/O屏蔽事件(圖44L)——如果在EXEC370給S/370微碼發(fā)出一個(gè)中斷消息時(shí)I/O被屏蔽,該中斷被堆入懸掛中斷表(PIT)表目中。在某一時(shí)間的順序點(diǎn)上,某種S/370事件將會(huì)發(fā)生,這導(dǎo)致允許I/O中斷。這可能是由于裝入PSW指令、置位系統(tǒng)屏蔽指令、或者是能使I/O指令執(zhí)行的任何中斷引起的。在任何點(diǎn)上,當(dāng)PSW系統(tǒng)屏蔽變化以允許先前被屏蔽I/O時(shí),S/370微碼必須檢驗(yàn)這些通道用的正在懸掛的任何中斷。如果一個(gè)也找不到,則該微碼就進(jìn)到下一條順序指令。如果找到一個(gè),則該微碼上托該中斷離開(kāi)該表,將該CSW放入S/370存貯器,并執(zhí)行一個(gè)I/O中斷。
下面描述上文引用的這些過(guò)程1。被堆積的中斷——“被堆積的中斷”一詞是結(jié)合“在S/370I/O被屏蔽時(shí)S/370微碼接收的中斷消息”而使用的。中斷被堆積在被稱為“懸掛中斷表”(也叫PIT)內(nèi)的設(shè)備狀態(tài)區(qū)內(nèi)。PIT表項(xiàng)以先進(jìn)先出的次序鏈接到DST表項(xiàng),該入口代表產(chǎn)生該中斷的S/370設(shè)備。堆積一個(gè)中斷涉及從該自由表中得到一個(gè)PIT表項(xiàng),將它鏈接到該DST入口的PIT表的末端,將該CSW放入該P(yáng)IT入口的狀態(tài)字段內(nèi),將NC值放入該P(yáng)IT項(xiàng)的NC字段內(nèi),并將該DST的CCW字段置1。將CC置1表明這里有該設(shè)備用的一個(gè)正在懸掛的中斷。
2.上托中斷——上托一個(gè)中斷涉及不改變?cè)贒ST/PIT表的頂部上的PIT表項(xiàng),將DST狀態(tài)碼置為在PIT表項(xiàng)的NC字段中找到的值,保留含在S/370CSW中的PIT項(xiàng)的狀態(tài)字段,并將PIT項(xiàng)返回到該自由表中。
3。向EXEC370發(fā)送消息——43以舉例方式作為本描述的參考。在選擇CC等于0的那個(gè)點(diǎn)上,S/370微碼已決定它需要向EXEC370發(fā)送一個(gè)消息。該消息作為一個(gè)具體例子是一個(gè)起動(dòng)I/O消息。對(duì)于S/370微碼發(fā)出的這一消息或任何其它類型的消息,過(guò)程都是相同的。S/370微碼將郵箱入口的數(shù)據(jù)字段填入具有該消息內(nèi)容的存貯器162內(nèi),然后它發(fā)布一個(gè)PU/BCU請(qǐng)求,該請(qǐng)求由BCU邏輯253接收。然后S/370微碼等待一個(gè)確認(rèn)返回。與此同時(shí),當(dāng)BCU邏輯接收到一個(gè)PU/BCU指示時(shí),BCU邏輯開(kāi)始一個(gè)存貯器存取和一個(gè)DMA操作,以將該郵箱的這個(gè)數(shù)據(jù)傳輸?shù)紹CU存貯器210。當(dāng)DMA完成時(shí),它將一個(gè)確認(rèn)信號(hào)返回給S/370微碼,然后該微碼進(jìn)到下一條順序程序指令。同時(shí),DMAC邏輯中斷該系統(tǒng)88。這個(gè)軟件例行程序接收控制,檢驗(yàn)該操作的有效性,隨后向EXEC370發(fā)出一個(gè)通知,然后,EXEC370使來(lái)自工作隊(duì)列的這個(gè)消息離隊(duì)。
4.向S/370微碼發(fā)消息——EXEC370向S/370微碼發(fā)出的消息有幾種不同的類型。S/370I/O屏蔽事件(圖44L)是這種中斷消息的一個(gè)例子。EXEC370調(diào)用與BCU邏輯接口的ET10微碼。ETIO起動(dòng)DMA操作,該操作將消息從BCU存貯器210傳輸?shù)絊/370存貯器。當(dāng)該DMA完成時(shí),將BCU/PU消息發(fā)送到S/370微碼,并將一個(gè)中斷發(fā)送到系統(tǒng)88,這使該ETIO接口例行程序向EXEC370發(fā)送一個(gè)通知。
總線控制單元(BCU)156的操作1.引言對(duì)上文描述的某些系統(tǒng)部件及其功能將進(jìn)行簡(jiǎn)單總結(jié)。BCU執(zhí)行S/370芯片組150和I/O子系統(tǒng)之間I/O接口功能。I/O子系統(tǒng)包括S/88PE62及其相關(guān)系統(tǒng)和模塊10的I/O部件。S/370芯片組150和I/O子系統(tǒng)通過(guò)總線適配器154進(jìn)行通信。在S/88主存貯器16內(nèi)的S/370存貯區(qū)162,這里有時(shí)稱之為基本存貯器組件(BSM)162。這里有兩組適配器總線接口線249、250(通道0)和251、252(通道1)與BCU156和總線適配器154耦合。
BCU156包括64KB本地存貯器210、直接存貯器存取控制器(DMAC)209、32位的本地地址總線247、32位本地?cái)?shù)據(jù)總線223、以及接口邏輯205。
如上文詳細(xì)描述的,DMAC209包括四個(gè)數(shù)據(jù)傳輸通道通道0——郵箱命令從PE85傳輸?shù)紹CU156。從S/370存貯器區(qū)162來(lái)的消息被讀到本地存貯器210。
通道1——S/370PE85寫(xiě)數(shù)據(jù)。數(shù)據(jù)從S/370存貯器區(qū)162讀出,傳輸?shù)奖镜卮尜A器210。
通道2——S/370PE85讀數(shù)據(jù)。數(shù)據(jù)從本地存貯器21傳輸?shù)酱尜A區(qū)162。
通道3——從BCU156到S/370的高優(yōu)先級(jí)消息傳輸。消息從局存210傳送到S/370的存貯區(qū)162。
DMAC209在總線適配器154和本地存貯器210之間傳送雙字(32位),在I/O數(shù)據(jù)傳送結(jié)束時(shí),它還中斷I/O子系統(tǒng)(S/88PE62)。本地存貯器210包括I/O和消息數(shù)據(jù)緩沖器WQB和由DMAC209為自動(dòng)郵箱加載的鏈表數(shù)據(jù)。
BCU邏輯205包括本地總線仲裁單元216,其中S/88PE62和DMAC209爭(zhēng)奪訪問(wèn)本地總線,亦即數(shù)據(jù)總線223和地址總線247。每當(dāng)下列地址(圖41C)由地址譯碼和仲裁單元216檢測(cè)出時(shí),PE62“總線請(qǐng)求”線190是活動(dòng)的任何本地存貯器地址;任何受BCU控制的命令(其中包括被編程的BCU復(fù)位、BSM寫(xiě)選擇、BSM讀選擇、以及讀BSM狀態(tài));本地總線中斷確認(rèn)周期;以及任何受DMAC控制的讀或?qū)懠拇嫫髅睢?br>
當(dāng)DMAC總線請(qǐng)求線269希望得到對(duì)本地總線223、247的控制權(quán)來(lái)實(shí)現(xiàn)DMAC時(shí)序(讀或?qū)懕镜卮尜A器210)或鏈表裝入時(shí)序(從本地存貯器讀出)時(shí),它是活動(dòng)的。當(dāng)本地總線的控制由邏輯216給予DMAC209時(shí),總線允許線268被引發(fā),如果控制權(quán)給與3PE62,則線191被引發(fā)。
BCU邏輯205控制在總線適配器154和I/O子系統(tǒng)之間的DMAC209傳輸定時(shí),并將高達(dá)4KBI/O傳輸轉(zhuǎn)換或?yàn)樵谕ǖ?和通道1上用于總線適配器154的64字節(jié)塊的傳輸。
BCU邏輯205檢測(cè)任何塊傳輸用的64字節(jié)邊界交叉。如果這種情況發(fā)生,則將該塊被分成兩個(gè)單獨(dú)的傳輸。BCU156將為第一傳輸計(jì)算高達(dá)64字節(jié)邊界的字?jǐn)?shù)。這將與起始地址一起提供給總線適配器154。其余字與一個(gè)新地址一起通過(guò)一個(gè)順序命令(BSM讀/BSM寫(xiě))提供給總線適配器154。BCU邏輯205還提供一個(gè)I/O數(shù)據(jù)傳輸(在64字節(jié)邊界上)的預(yù)訂功能,作為一個(gè)高優(yōu)先權(quán)消息,或者,讀郵箱請(qǐng)求發(fā)生。一個(gè)高優(yōu)先權(quán)消息請(qǐng)求和一個(gè)郵箱請(qǐng)求可以同時(shí)在BCU156內(nèi)得到管理。“總線讀”和“總線寫(xiě)”操作可以同時(shí)在BCU156內(nèi)得到管理。
BCU156執(zhí)行以下四種I/O操作郵箱讀操作由S/370I/O“指令微碼”通過(guò)“PU/BCU請(qǐng)求”線256a被起動(dòng)。郵箱188位于S/370BSM162內(nèi)。它用來(lái)存貯由I/O子系統(tǒng)(起動(dòng)I/O等)執(zhí)行的I/O命令。它可以包含I/O子系統(tǒng)從PE85接收的狀態(tài)或其它信息。當(dāng)“PU/BCU選擇線210”在適配器總線通道0上被起動(dòng)時(shí),“郵箱選取(MaiLbox Select Up)”命令由BCU156起動(dòng)。如果該“PU/BCU請(qǐng)求”由S/370PE85起動(dòng)時(shí),S/370I/O寫(xiě)操作(適配器總線通道O)將在64字節(jié)邊界上提前占用。
S/370I/O讀和寫(xiě)操作在S/370存貯器和適配器總線通道0和1上的I/O設(shè)備之間提供數(shù)據(jù)傳輸(最大為4KB塊)。所有的數(shù)據(jù)傳輸由I/O子系統(tǒng)(S/85PE62)通過(guò)“BSM選擇”適配器總線命令來(lái)起動(dòng)。
高優(yōu)先權(quán)消息傳輸中斷、狀態(tài)、差錯(cuò)、等、從I/O子系統(tǒng)傳到S/370的高優(yōu)先權(quán)性質(zhì)的消息。所有傳輸都由BCU156通過(guò)“Q SELECT UP”命令起動(dòng)。如果一個(gè)高優(yōu)先權(quán)消息請(qǐng)求發(fā)生,則S/370I/O讀操作(適配器總線通道1)將在64字節(jié)邊界上提前被占用。
2.S/370起動(dòng)I/O時(shí)序流概述和詳述“起動(dòng)I/O指令”SIO、“通道地址字”CAW和第一“通道控制字”CCW都存貯在S/370存貯器162的預(yù)定的“郵箱”存貯單元中。這個(gè)信息經(jīng)過(guò)BCU接口邏輯205和總線適配器154傳送到本地存貯器210。
DMAC通道0寄存器示于圖18中,被用于郵箱讀操作。它們將由S/88PE62編程,以“鏈鏈接的數(shù)組鏈方式”操作。PE62通過(guò)在本地存貯器210(圖41H)中建立一系列“鏈表”,以使這種方式初始化。然后,它將笫一“頂部鏈表地址”置入DMAC通道0基地地址寄存器(32位)BAR內(nèi)。這個(gè)地址指向該鏈表數(shù)據(jù)存貯器210內(nèi)的笫一存貯單元。
DMAC“PCL”(外部控制線)257a由PE62編程,每當(dāng)PCL線257a被起動(dòng)時(shí),使DMAC209起用其IRQ中斷輸出線258。在完成郵箱數(shù)據(jù)從主存貯器162經(jīng)過(guò)適配器緩沖器259傳送到本地存貯器210之后“PCL”線257a被起用。中斷將通知S/88處理器PE62“郵箱加載剛完成”。
鏈表數(shù)據(jù)(圖41H)包括數(shù)據(jù)塊的起始存貯地址、存貯器傳輸計(jì)數(shù)、以及到下一個(gè)表入口的鏈地址。該表中的最后的鏈地址為零。
S/88處理器162給DMAC通道0基地址寄存器內(nèi)的頂部鏈表地址置位。
S/88處理器PE62通過(guò)把“1”寫(xiě)入其通道0”的通道控制寄存器CCR的笫7位(“起動(dòng)”位)來(lái)起動(dòng)DMAC209。DMAC209然后將笫一鏈表按如下方式讀入其通道0寄存器中將存貯器210的數(shù)據(jù)塊WQB的起始地址讀入存貯器地址寄存器MAR(32位);將傳送計(jì)數(shù)(郵箱數(shù)據(jù)的字節(jié))讀入存貯器傳送計(jì)數(shù)寄存器MTC;和將鏈地址讀入下一個(gè)數(shù)據(jù)塊地址寄存器BAR。
尤其是,在指令執(zhí)行期間,S/370PE85對(duì)“起動(dòng)I/O”指令譯碼,它把“起動(dòng)I/O”命令通道地址字、以及第一通道控制字放入后讀的“郵箱”的存貯單元中,這些存貯單元包含在S/370存貯器162中。郵箱的起始地址(基地址加隊(duì)列長(zhǎng)度)在初始化時(shí)刻被存貯在總線適配器154的基地寄存器中。
S/370PE85通過(guò)具有第11位為1的處理器總線發(fā)出“LDOSCW”控制操作(OP)。這將總線適配器154的控制字中的“PU對(duì)BCU請(qǐng)求”位置1。OSCW位u在適配器總線(通道0)引發(fā)、PU對(duì)BCU的請(qǐng)求。如果“PU/BCU請(qǐng)求”在I/O數(shù)據(jù)傳輸期間發(fā)生,則BCU156提前占用64字節(jié)邊界上的I/O傳輸,以允許取入郵箱。
然后,BCU156在總線290上產(chǎn)生一個(gè)“ReadMailboxSelectUP(有選擇地讀郵箱)”命令,其格式如圖45A所示,其中,0、1位是命令位,2-7位是字節(jié)計(jì)數(shù),并將它存貯在“通道0”命令寄存器214中。郵箱地址位通過(guò)總線290以圖45B所示格式存貯在寄存器219內(nèi),這里位7表明存貯器162中的IOA區(qū),24-26位表明BCU通道號(hào),位27-31表明郵箱位移。
在BCU156通過(guò)填入寄存器214和219激勵(lì)起“命令/狀態(tài)”總線249和“地址/數(shù)據(jù)”總線250以后,它在線262a上引發(fā)一個(gè)“抬高標(biāo)志”命令,并等待來(lái)自總線適配器的數(shù)據(jù)。它通過(guò)對(duì)“標(biāo)志下降”線262b取樣來(lái)做此事,只要數(shù)據(jù)沒(méi)準(zhǔn)備好,“標(biāo)志低”就是活動(dòng)的。一旦“標(biāo)志低”被總線適配器154(數(shù)據(jù)準(zhǔn)備好)抹除,郵箱數(shù)據(jù)的前四個(gè)字節(jié)就經(jīng)過(guò)兩個(gè)通道0的子周期被鎖存在“通道0”讀寄存器226中。
然后,BCU邏輯253在DMAC209的通道0上引發(fā)“請(qǐng)求”線263a。接著,DMAC209線269上產(chǎn)生“總線請(qǐng)求”(BR),這個(gè)請(qǐng)求被送往本地總線仲裁電路216。如果本地總線未被S/88處理器62使用,則允許總線訪問(wèn)信號(hào)通過(guò)總線允許(BG)線268到送到DMAC209。隨后,DMAC209將WQB本地郵箱的起始地址(在存貯器210內(nèi))從MAR傳輸?shù)降刂房偩€247,并抬高“ACKO”(DMAC“通道0”確認(rèn))線264a?!癆CKO”信號(hào)起動(dòng)數(shù)據(jù)傳輸從緩沖器226經(jīng)過(guò)數(shù)據(jù)總線223到存貯器210內(nèi)WQB的本地郵箱部分?!癉TACK”線265被起用來(lái)通知DMAC209該操作結(jié)束。
BCU時(shí)鐘信號(hào)(圖25)繼續(xù)把郵箱數(shù)據(jù)從緩沖器259傳輸?shù)郊拇嫫?26。BCU156對(duì)每個(gè)本地存貯器210/DMAC209時(shí)序(32位)執(zhí)行兩個(gè)適配器總線(“TAGUP”/“TAG DOWN”)時(shí)序(每個(gè)16位)。
當(dāng)DMAC周期結(jié)束(DTACK活動(dòng))時(shí),DMAC209相對(duì)于BCU邏輯253抬高“數(shù)據(jù)傳送結(jié)束”(DTC)線267,然后,BCU邏輯253在線263a上向DMAC209發(fā)出另一個(gè)“請(qǐng)求”,以將來(lái)自寄存器226的第二個(gè)四字節(jié)讀到WQB郵箱。DMAC周期反復(fù)進(jìn)行,直到整個(gè)郵箱數(shù)據(jù)(16字節(jié))都已被傳輸時(shí)為止(4個(gè)本地總線周期)。通向DMAC209的“PCL”線257a再由BCU253起用,這使從DMAC209通向S/88處理器優(yōu)先權(quán)譯碼器/中斷邏輯212的“IRQ”線258被激活。然后,PE62管理該郵箱請(qǐng)求。
當(dāng)DMAC209完成從鏈表取入其“通道0”寄存器時(shí),它等待在“通道0”“請(qǐng)求”線263a上來(lái)自BCU邏輯253的一個(gè)信號(hào),以開(kāi)始取下一個(gè)郵箱。一旦開(kāi)始,隨著S/88處理器62控制該環(huán)形鏈表并保持“請(qǐng)求”線263a不活動(dòng)以使BCU156懸掛數(shù)據(jù)傳輸,DCMA“通道0”處于無(wú)限期地活動(dòng)狀態(tài)。如果“通道0”由于“表結(jié)束”狀態(tài)而停止,則S/88接收一個(gè)終端中斷,并在適當(dāng)?shù)臅r(shí)候重新起動(dòng)“通道0”。
3.S/370I/O數(shù)據(jù)傳輸順序流的概述所有的I/O讀和寫(xiě)傳輸經(jīng)過(guò)符合適配器總線結(jié)構(gòu)的“BSMREAD SELECT UP”和“BSM WRITESELECT UP”命令來(lái)源于S/88處理器62。S/370CCW命令和起始地址(S/370存貯器162)是從“起動(dòng)I/O”用的CCW得到的。S/88處理器62使數(shù)據(jù)在每個(gè)I/O設(shè)備和本地存貯器210中的本地緩沖器之間流動(dòng)。
本地存貯器210包括用于I/O寫(xiě)操作的一隊(duì)存貯器塊,該操作由S/88處理器62管理。當(dāng)該隊(duì)包括至少一個(gè)表項(xiàng)時(shí),分離I/O寫(xiě)操作準(zhǔn)備好。在起動(dòng)寫(xiě)操作之前,這些塊中的被選的一塊所用的起始地址由S/88處理器62存貯在DMAC209內(nèi)的DMA“通道1”寄存器中。DMA“通道1”寄存器通過(guò)本地存貯器210專供寫(xiě)操作使用(S/370存貯器162到I/O)。適配器總線緩沖器259(64字節(jié))專供郵箱讀和S/370I/O寫(xiě)操作(數(shù)據(jù)從S/370存貯器162傳輸?shù)奖镜卮尜A器210)用。這個(gè)緩沖器與“通道0”適配器總線249、250相聯(lián)。緩沖器260(64字節(jié))專供消息寫(xiě)(到S/370)和S/370I/O讀操作(數(shù)據(jù)從本地存貯器210傳輸?shù)絊/370存貯器162)使用。這個(gè)緩沖器與“通道1”適配器總線251、252相聯(lián)。S/88處理器62使DMAC“通道1”和“通道2”存貯器地址寄存器的高階字初始化到0。在操作時(shí)序期間當(dāng)這些寄存器被裝入時(shí),由于本地存貯器210不需要大于16位的地址,因此這節(jié)省了一個(gè)額外的總線周期。
(a)I/O寫(xiě)操作(S/370存貯器162到本地存貯器210)通過(guò)把信息放在DMAC地址和數(shù)據(jù)總線248上(經(jīng)過(guò)總線161a、驅(qū)動(dòng)器217、總線247和鎖存器233),在DMAC“通道1”存貯器地址寄存器MAR內(nèi)設(shè)置本地緩沖器起始地址,如圖45C所示,其中,31-08位=007EOO=“DMAC寄存器選擇”命令,07-00位=DMAC“通道1”存貯器地址寄存器(低)選擇。注意,S/88在總線上標(biāo)識(shí)出的最高和最低有效位分別為“31”和“0”,這與S/370協(xié)議相反。
如圖45D所示的內(nèi)容(供MAR使用)放在數(shù)據(jù)總線223上,其中,31-16位=在存貯器210內(nèi),用作I/O寫(xiě)數(shù)據(jù)的本地緩沖器起始地址。高階數(shù)據(jù)總線位(31-16)將被裝入“通道1”存貯器地址寄存器的低階(15-00)部分。MAR的高階位(31-16)在初始化期間被置0。DMAC209用線266a、b上的16位的端口“DSACK”信號(hào),通過(guò)BCU邏輯253 ,響應(yīng)S/88處理器CPU。S/88處理器62將BCU數(shù)據(jù)(字節(jié)計(jì)數(shù)、存貯鍵、適配器總線優(yōu)先權(quán)和用戶/IOA空間數(shù)據(jù))和DMAC“通道1”存貯器傳輸計(jì)數(shù)數(shù)據(jù)放在本地地址總線247上。圖45E示出地址總線上的命令,其中,各位的含義如下31-08=007EOO=“DMAC寄存器選擇”命令;07-00=BCU選擇和DMAC“通道1”MTC選擇。
字節(jié)計(jì)數(shù)、存貯鏈(從CCW中得出)、適配器總線優(yōu)先權(quán)、以及用戶/IOA空間位由S/88處理器62按圖45F所示的格式放在數(shù)據(jù)總線223上,其中,各位含義如下所示31-27=留用26= 高階字節(jié)計(jì)數(shù)位。只有在最大字節(jié)計(jì)數(shù)(4K字節(jié))正在被傳送時(shí)該位=1。
26-16=被裝入DMAC“通道1”MTC寄存器的字節(jié)計(jì)數(shù)。
26-14=被裝入BCU寄存器220的字節(jié)計(jì)數(shù)(最大4096),該計(jì)數(shù)至少一部分被裝入寄存器221(這將在下文的字節(jié)計(jì)數(shù)操作中描述)。為了傳送4096個(gè)字節(jié)總線適配器154需要計(jì)數(shù)111111111111(字節(jié)計(jì)數(shù)-1)。為了傳送4096個(gè)字節(jié)。因此,BCU
156使雙字邊界位26-16減1,然后將它與字節(jié)位移位15-14(在64字節(jié)塊內(nèi))一起送到總線適配器154。
15-14=低階字節(jié)計(jì)數(shù)位BCU156。
這些位代表來(lái)自雙字邊界的字節(jié)位移減1(為了總線適配器的要求)。這些位不被DMAC209或BCU156使用,因?yàn)樗鼈冎粋魉碗p字。它們被送到總線適配器,以傳給S/370BSM162。
13-12=適配器總線通道優(yōu)先權(quán)。
11-08=存貯鍵。
07= 用戶/IOA空間位。
06= S/88處理器將起動(dòng)這個(gè)位(1)以指明需要一個(gè)附加的本地存貯器訪問(wèn)。這發(fā)生在起動(dòng)S/370存貯器地址不在雙字(32位)邊界上。
由于所有BCU訪問(wèn)必須在雙字邊界處開(kāi)始,因此笫一個(gè)訪問(wèn)將含有在指定的起動(dòng)地址的字節(jié)和包含在那個(gè)雙字地址內(nèi)的前面的字節(jié)。再往前的字節(jié)被拋棄。
05-00=留用。
DMAC209將把數(shù)據(jù)總線的高階字(亦即字節(jié)計(jì)數(shù))裝入通道1MTC寄存器。BCU156將收集數(shù)據(jù)總線內(nèi)容如下位26-14-對(duì)于BSM讀選擇字節(jié)計(jì)數(shù)器220;和位13-06-對(duì)于適配器總線通道0的A/D寄存器219,但重新被安排。
對(duì)于發(fā)生在一個(gè)S/88處理器機(jī)器周期內(nèi)的雙字傳輸,地址必須在雙字邊界上。由于DMAC“通道1”MTC的地址不在雙字邊界上(位07-00=01001010),以下動(dòng)作將會(huì)發(fā)生,以使BCU156和具有一個(gè)S/88處理器命令的DMAC209加載。BCU156將地址位1翻轉(zhuǎn),將它和其它寄存器選擇位一起送到DMAC209。這將允許“通道1”的MTC寄存器被適當(dāng)?shù)剡x擇(地址位07-00=01001010)。這種選擇也施加到用于“通道2”I/O讀操作的MTC寄存器。DMAC209用線265上的“DTACK”信號(hào)響應(yīng)BCU邏輯253。BCU邏輯253將“DTACK”信號(hào)轉(zhuǎn)換為32位的端口“DSACK”在線266a、b上對(duì)S/88處理器62的響應(yīng)。傳輸字節(jié)計(jì)數(shù)和其余數(shù)據(jù)總線的數(shù)據(jù)一起在子時(shí)序“BSM讀選擇”命令期間被送到總線適配器154。BSM讀邊界計(jì)數(shù)器221或BSM讀選擇字節(jié)計(jì)數(shù)器220將被裝入通道0讀命令寄存器214。
S/88處理器62然后在總線247上產(chǎn)生一個(gè)“BSM讀選擇”命令,其格式和圖45G所示,其中,31-00位=007E0108=“BSM讀選擇”命令。
S/88處理器62還將BSM起始地址放在數(shù)據(jù)總線223上,其格式如圖45H所示,其中,23-0位=存貯器162中的起始地址。
總線223上的BSM起始地址被存貯在A/D寄存器219和“BSM讀地址”寄存器231內(nèi)。然后它被發(fā)送到總線適配器154,以提供給S/370存貯器162。接著,BCU156起用通向S/88處理器62的“DSACK”線266a、b。在這點(diǎn)上,S/88處理器被釋放,并且再也不涉及這個(gè)操作。
BCU156將“BSM SELECT UP”(讀)命令經(jīng)過(guò)總線290放到寄存器214內(nèi)和命令/狀態(tài)總體249上,其格式如圖45I所示,其中,各位含義如下0-1=11,“BSM選擇”命令(讀);和2-7=字段長(zhǎng)度減1(最大64字節(jié))。
該字段長(zhǎng)度提前從寄存器220或221傳輸?shù)郊拇嫫?14。寄存器219把地址信息放在總線250上,其格式如圖45J所示,其中,各位含義如下0-3=存貯鍵;4 =1;5-6=優(yōu)先權(quán)(總線適配器154到處理器總線170);7 =1=用戶區(qū)訪問(wèn);0=微碼區(qū)訪問(wèn);8-31= 存貯器162中的數(shù)據(jù)字段的第一字節(jié)。
然后BCU邏輯253抬高相對(duì)于總線適配器154的上升標(biāo)志線262a以將命令、字段長(zhǎng)度數(shù)據(jù)鎖存在適配器命令寄存器124(圖13)內(nèi),將鍵地址數(shù)據(jù)鎖存在寄存器122內(nèi)。如果數(shù)據(jù)無(wú)效,則總線適配器154相對(duì)于BCU邏輯253抬高標(biāo)志下降線的電平。總線適配器154將適配器總線“BSM選擇”命令轉(zhuǎn)換為“處理器總線I/O存貯”命令,如圖45K和45L所示,其中,處理器地址/數(shù)據(jù)總線170上的各位表示0-0=I/O存貯命令;1-1=取操作;
2-7= 字段長(zhǎng)度;8-31=讀字節(jié)地址;其中,處理器鍵/狀態(tài)總線比特表示0-3=存貯鍵;4-0=無(wú)動(dòng)態(tài)轉(zhuǎn)換。
當(dāng)被尋址的數(shù)據(jù)從S/370存貯器162返回時(shí),它被鎖存在總線適配器數(shù)據(jù)緩沖器259(通道0)內(nèi)。然后總線適配器154除掉適配器總線“通道0”上的標(biāo)志下降線262b。這個(gè)狀態(tài)警告總線156將兩個(gè)字節(jié)(16位)數(shù)據(jù)通過(guò)時(shí)鐘左和時(shí)鐘右信號(hào)跟其后的另兩個(gè)字節(jié)鎖存在通道0讀緩沖器226(4字節(jié))內(nèi)。然后,BCU156起用其通向DMAC209的“REQ1”線263b(DMAC“通道1”請(qǐng)求)。DMAC209在線269上向BCU本地總線仲裁邏輯216發(fā)出一個(gè)“總線請(qǐng)求”,以執(zhí)行一個(gè)本地總線周期。
當(dāng)線268上的總線允許信號(hào)從BCU仲裁邏輯216返回時(shí),DMAC209起動(dòng)“通道0”讀緩沖器259進(jìn)入本地存貯器210操作。它作這個(gè)是通過(guò)線264b把ACK1(DMA通道1確認(rèn))信號(hào)回送到BCU邏輯253,並通過(guò)將DMAC“通道1”寄存器MAR內(nèi)的本地存貯器地址經(jīng)過(guò)總線248、鎖存器233、地址總線247和復(fù)用器232選通到存貯器210尋址電路(圖中未畫(huà)出)。BCU邏輯253使用線264b上的ACK1信號(hào)和線210a上的RAM選擇信號(hào),使笫一數(shù)據(jù)(4字節(jié))從緩沖器226選通到數(shù)據(jù)總線223,以便在MAR寄存器特定的地址上存入存貯器210。當(dāng)DTACK由BCU邏輯253返回到線265上時(shí),DMAC209在線267上產(chǎn)生DTC(數(shù)據(jù)傳送結(jié)束)。
BCU156將使現(xiàn)已保存在寄存器220里的字節(jié)計(jì)數(shù)減1,使通道1MAR加1,使接收來(lái)自總線適配器154高達(dá)64字節(jié)的數(shù)據(jù)中的每個(gè)雙字(4字節(jié))用的地址寄存器231減1。以上描述的順序?qū)τ贐CU命令的每四個(gè)字節(jié)(高達(dá)64)反復(fù)進(jìn)行。如果傳送字節(jié)計(jì)數(shù)大于64,則BCU156將把一個(gè)新的起動(dòng)地址通過(guò)寄存器231、219送到總線適配器154,以取下64字節(jié)。如上所述,對(duì)于每四個(gè)字節(jié)傳送,寄存器231已減1,因此有適當(dāng)?shù)南乱粋€(gè)起動(dòng)地址。總線適配器154為每個(gè)起動(dòng)地址緩沖64字節(jié),直到該命令請(qǐng)求的整個(gè)數(shù)據(jù)傳輸(高達(dá)4KB)結(jié)束時(shí)為止。
如果總線適配器緩沖器259是空的,則BCU156將使DMAC209空閑(通過(guò)不保請(qǐng)求),直到下一有效數(shù)據(jù)字被接收到時(shí)為止;標(biāo)志下降狀態(tài)反映緩沖器259中有效數(shù)據(jù)的有效性。請(qǐng)求/確認(rèn)周期持續(xù)下去,直到字節(jié)計(jì)數(shù)器為0,此時(shí)DMAC209在線258上相對(duì)于S/88處理器62抬高IRQ。這將提醒S/88處理器62讀本地存貯器緩沖器,其中含有為適當(dāng)處理從S/370存貯器讀出的數(shù)據(jù)。
(b)I/O讀操作(本地存貯器210到S/370存貯器162)在至少一個(gè)入口在存貯器210的I/O讀排隊(duì)中存在時(shí),I/O讀操作(在EXEC370的控制下)被斷開(kāi)。如果S/88處理器62未被DMAC209使用,則S/88處理器62得到本地總線的控制。S/88處理器62對(duì)DMAC通道2存貯器地址寄存器(MAR)中的本地緩沖器I/O讀起始地址置位是通過(guò)將圖45M所示的信息放在247總線上,上述總線中的各位表示31-08=007EOO=“DMAC寄存器選擇”命令;07-00=DMAC“通道2”存貯器地址標(biāo)記(低)選擇;還通過(guò)將起始地址(存貯器210內(nèi)緩沖器的)放在總線223上,如圖45N所示,其中,各位表示31-16=本地緩沖器I/O讀數(shù)據(jù)的起始地址;15-00=被留用。
高階數(shù)據(jù)總線位31-16將裝入通道2存貯器地址寄存器的低階位(15-00)。MAR的高階位(31-16)在初始化期間被置0。DMAC209用線265上的DTACK信號(hào)(它被轉(zhuǎn)換為線266a、b上的DSACK信號(hào))來(lái)響應(yīng)S/88處理器62。然后,S/88處理器62利用被選擇的本地存貯器I/O讀緩沖器使數(shù)據(jù)(高達(dá)4KB)從I/O控制器如20或24經(jīng)過(guò)S/88程序控制傳送到本地存貯器210。
當(dāng)數(shù)據(jù)傳輸結(jié)束時(shí),S/88處理器62把DMAC“通道2”存貯器傳輸計(jì)數(shù)選擇放到地址總線247上,其格式如圖45O所示,其中,各位表示31-08=007EOO=DMAC寄存器選擇命令;07-00=BCU和DMAC“通道2”MTC選擇。
將字節(jié)計(jì)數(shù)、存貯鍵(從CCW得出)、適配器總線優(yōu)先權(quán)和用戶/IOA空間位由S/88處理器62以圖45P所示的格式放到數(shù)據(jù)總線223上,其中,各位表示31-21=被留用;26= 高階字節(jié)計(jì)數(shù)。只在最大字節(jié)計(jì)數(shù)正被傳送時(shí),
該位=1;26-16=DMAC通道2MTC寄存器的字節(jié)計(jì)數(shù);26-14=裝入BCU156(最大4096)的字節(jié)計(jì)數(shù)。
為了傳送4096個(gè)字節(jié)(字節(jié)計(jì)數(shù)-1),總線適配器154需要1111 11111111計(jì)數(shù)。因此,BCU將使雙字邊界位26-16減1,然后將它與字節(jié)位移位15-14(在64字節(jié)塊內(nèi))一起送到總線適配器154。
15-14=低階字節(jié)計(jì)數(shù)位。這些位代表來(lái)自雙字(32比特)邊界的字節(jié)位移減1(為滿足總線適配器的需要)。因?yàn)檫@些位只傳送雙字,因此未被DMAC209或BCU156使用。這些位被傳到總線適配器54,以便傳送給S/370BSM162;13-12=適配器總線通道優(yōu)先權(quán);11-08=存貯鍵;07= 用戶/IOA空間位;06-00=被留用。
DMAC209把數(shù)據(jù)總線223的字節(jié)計(jì)數(shù)裝入“通道2”MTC寄存器。當(dāng)上述命令在地址總線247上出現(xiàn)時(shí),BCU156將捕捉數(shù)據(jù)總線內(nèi)容。26-16位被存貯在BSM寫(xiě)選擇字節(jié)計(jì)數(shù)器222中。13-07位被存貯在高階字節(jié)適配器總線通道1A/D寄存器227中。DMAC同線265上的DTACK信號(hào)響應(yīng)BCU邏輯253。邏輯253將DTACK信號(hào)轉(zhuǎn)變?yōu)榫€266a、b上的應(yīng)答S/88處理器62的32位端口的DSACK。在連續(xù)BSM寫(xiě)選擇命令期間,該傳送字節(jié)計(jì)數(shù)與其余的數(shù)據(jù)總線數(shù)據(jù)一起被送到總線適配器154。BSM寫(xiě)邊界計(jì)數(shù)器224(除了最后傳輸以外所有的)或BSM寫(xiě)字節(jié)計(jì)數(shù)器222(最后傳輸中的計(jì)數(shù)被裝入適配器通道1寫(xiě)命令寄存器225中。
然后,S/88處理器62在本地地址總線247上產(chǎn)生如圖45Q所示格式的BSM寫(xiě)選擇命令,其中,各位表示31-00=007E0104=BSM寫(xiě)選擇命令。
S/88處理器還將BSM起始地址以圖45R所示格式放在數(shù)據(jù)總線223上,其中,各位表示31-24=被留用;23-00=BSM起始地址。
數(shù)據(jù)總線223上的BSM起始地址由低階字節(jié)的“通道1”A/D寄存器227和BSM寫(xiě)地址寄存器228捕捉。接著它將被發(fā)送給總線適配器154,以便送到S/370存貯器162。然后BCU156起用通向S/88處理器62的DSACK線266a、b(32比特端口)。在這點(diǎn)上,S/88處理器62被釋放,再不涉及這個(gè)操作。
BCU邏輯253發(fā)出BSM Select Up命令,經(jīng)過(guò)總線290使兩位“01”進(jìn)入高階位命令寄存器225并將寄存器225的該命令和字段長(zhǎng)度以圖45S的格式放在總線252上,其中,各位表示0-1=BSM選擇命令(寫(xiě));
2-7=字段長(zhǎng)度減1(最大64字節(jié))。
寄存器227的內(nèi)容以圖45T的格式放在地址/數(shù)據(jù)總線251(兩個(gè)子周期)上,其中,各位表示0-3= 存貯鍵;4=1;5-6= 優(yōu)先權(quán)(總線適配器到處理處總線);7=1=用戶區(qū)訪問(wèn);0=微碼區(qū)訪問(wèn);8-31= 在數(shù)據(jù)字段中第一字節(jié)的S/370地址。
該命令、字段長(zhǎng)度被存貯在適配器154的寄存器125中。鍵/地址經(jīng)過(guò)SYNC寄存器113存貯在適配器154的寄存器123中。BCU邏輯253起用通向DMAC“通道2”的線263C上的REQ2信號(hào)。DMAC209把來(lái)自MAR的I/O緩沖器起始地址經(jīng)過(guò)總線248、鎖存器233、總線248和復(fù)用器232傳輸?shù)酱尜A器210,以將來(lái)自存貯器210的數(shù)據(jù)中的雙字傳輸?shù)郊拇嫫?27。在線264c上升高ACK2信號(hào)(DMA通道2確認(rèn))。這就在通往適配器154的線262a上產(chǎn)生一個(gè)“標(biāo)志上升”。
適配器154把來(lái)自寄存器227的數(shù)據(jù)中的雙字在兩個(gè)子周期內(nèi)經(jīng)過(guò)寄存器113傳輸?shù)娇偩€適配器緩沖器260。在“標(biāo)志升高”命令后面的“請(qǐng)求/確認(rèn)”信號(hào)(REQ/ACK)中的寫(xiě)時(shí)序反復(fù)進(jìn)行,以傳輸數(shù)據(jù)中的每個(gè)雙字。BCU156使寄存器222、224中的字節(jié)計(jì)數(shù)減1,使寄存器228中的地址減1,使傳送給總線適配器154的最多為64字節(jié)的每個(gè)雙字(32字節(jié))所用的DMAC通道2的MTC減1。
如果傳輸字節(jié)計(jì)數(shù)大于64,如前面關(guān)于寫(xiě)操作所描述的,BCU156產(chǎn)生下個(gè)64字節(jié)要用的所起始地址??偩€適配器緩沖用于每個(gè)起始地址的64字節(jié)數(shù)據(jù)。這個(gè)時(shí)序?qū)⒎磸?fù)進(jìn)行,直到寄存器222(最大4KB)的字節(jié)計(jì)數(shù)變成0時(shí)為止。
當(dāng)總線適配器緩沖器260裝滿時(shí),BCU156將懸掛寫(xiě)時(shí)序,直到總線適配器經(jīng)過(guò)“標(biāo)志下降”線262C給出一個(gè)緩沖器可用的指示時(shí)為止。
總線適配器154將適配器總線“BSM選擇”命令以圖45U和45V所示的格式、在處理器總線170和“鍵/狀態(tài)”總線上轉(zhuǎn)變?yōu)椤癝/370處理器總線I/O存貯”命令,其中處理器總線位含義如下0= 0=I/O存貯命令1= 0=存貯器操作2-7= 字段長(zhǎng)度8-31= 真字節(jié)地址;“鍵/狀態(tài)”總線位0-3= 存貯鍵4= 0=無(wú)動(dòng)態(tài)轉(zhuǎn)換當(dāng)所有數(shù)據(jù)已被傳輸完畢時(shí)(字節(jié)計(jì)數(shù)=0),DMAC209將起用通向S/88處理器優(yōu)先權(quán)編碼器212的中斷線258a。
(c)S/370高優(yōu)先權(quán)消息傳輸時(shí)序流所有高優(yōu)先權(quán)消息傳輸都起源于I/O子系統(tǒng)(S/88處理器62)。DMAC“通道3”要由S/88處理器62來(lái)建立,以進(jìn)行該數(shù)據(jù)傳輸(16字節(jié))。BCU156把適配器總線“通道1”用于數(shù)據(jù)通信(“Q Select Up”命令)。
在S/88處理器PE62執(zhí)行把DMAC存貯器傳輸計(jì)數(shù)裝入“通道3”中的寄存器MTC操作時(shí),BCU156檢測(cè)高優(yōu)先權(quán)消息請(qǐng)求。其結(jié)果是,BCU156在“通道1”的適配器總線252上給S/370PE85產(chǎn)生一個(gè)“Q選擇”命令。如果在該請(qǐng)求被檢測(cè)出時(shí)S/370I/O讀傳輸在進(jìn)行中,則BCU156等待,直到當(dāng)前的64字節(jié)塊傳輸完畢才接受該請(qǐng)求。
如果在適配器總線“通道1”上沒(méi)有I/O活動(dòng),則該請(qǐng)求將被立即處理。
現(xiàn)在詳細(xì)描述這種高優(yōu)先權(quán)消息傳輸。如果PE62未被DMAC209使用,則它得到本地總線223、247的控制。然后,PE62通過(guò)程序控制將該消息數(shù)據(jù)存入本地存貯器210內(nèi)。PE62通過(guò)把信息以圖45W所示的格式放在本地地址總線247上對(duì)DMAC“通道3”存貯器地址寄存器MAR中的本地緩沖器消息起始地址置位,其中,各位表示31-16=存貯器210中的本地緩沖器消息數(shù)據(jù)的起始地址,15-00=保留的。
高階數(shù)據(jù)總線(31-16位)要裝入DMAC“通道3”存貯器地址寄存器MAR的低階(位15-0)部分。MAR的高階位(31-16)在初始化期間被置0。DMAC209用線265上的DTACK信號(hào)(該信號(hào)通過(guò)BCU邏輯253在線266a、b上轉(zhuǎn)變?yōu)?6位端口的DSACK信號(hào))來(lái)響應(yīng)S/88處理器62。
然后,S/88處理器62把一個(gè)命令以圖45Y所示的格式放在本地地址總線247上,其中,各位表示31-08=007E00=“DMAC寄存器選擇”命令;07-00=BCU和DMAC“通道3”選擇。
字節(jié)計(jì)數(shù)、存貯鍵和用戶/IOA空間位由S/88處理器62以圖45Z所示格式放在數(shù)據(jù)總線上,其中,各位表示31-20=保留的;19-16=傳輸字節(jié)計(jì)數(shù)位。這些位被裝入DMAC209和BCU156。它們把雙字計(jì)數(shù)送給DMAC209和BCU156(最大64字節(jié));15-12=0;11-08=存貯鍵;07= 用戶/IOA空間位;06-00=保留的。
DMAC209要把數(shù)據(jù)總線223的高階字(字節(jié)計(jì)數(shù))裝入通道3存貯器傳輸計(jì)數(shù)寄存器MTC中。通過(guò)把19-16位存入QSelect Up計(jì)數(shù)器254和把11-07位存入通道1A/D寄存器227而使這一特定的命令呈現(xiàn)在地址總線247上時(shí),BCU156將捕獲該數(shù)據(jù)總線的內(nèi)容。
DMAC209用DTACK信號(hào)響應(yīng)邏輯253,該信號(hào)由邏輯253轉(zhuǎn)變?yōu)樵诰€266a、b上的32位端口的DSACK信號(hào)以響應(yīng)PE62。這個(gè)行動(dòng)提醒BCU156起動(dòng)從本地存貯器210到S/370BSM162的高優(yōu)先權(quán)消息傳輸。在BCU產(chǎn)生“Q選擇”命令期間這個(gè)傳輸字節(jié)位與圖45Z所示的附加數(shù)據(jù)一起被送到總線適配器154。Q選擇計(jì)數(shù)器254被裝入到通道1寫(xiě)命令寄存器225的4-7位。BCU156以圖45AA所示格式把Q選擇命令通過(guò)總線290放入寄存器225中;把寄存器225內(nèi)的數(shù)據(jù)放在適配器總線252上,其中,各位表示0-1=“Q選擇”命令(寫(xiě))2-7=字段長(zhǎng)度減1(16字節(jié))。
經(jīng)過(guò)寄存器227被放在地址/數(shù)據(jù)總線257上的信息示于圖45AB,其中,各位表示0-3= 存貯鍵;4-6= 07= 1=用戶區(qū)訪問(wèn)0=微碼區(qū)訪問(wèn)8-31=忽略不管。
總線252和251上的數(shù)據(jù)分別被傳送到適配器寄存器125和123。然后,BCU邏輯起用請(qǐng)求(REQ)線263d(DMA“通道3”請(qǐng)求)。DMAC209把I/O緩沖器起始地址(來(lái)自MAR)放在本地總線247上,并提高ACK(DMAC通道3確認(rèn))線264d。然后,BCU把來(lái)自本地存貯器210內(nèi)被尋址的I/O緩沖器的前四個(gè)字節(jié)經(jīng)過(guò)SYNC寄存器113在兩個(gè)子周期內(nèi)傳輸?shù)竭m配器緩沖器260。其后的四個(gè)字節(jié)塊按照“標(biāo)志升高”命令所規(guī)定的順序被傳輸?shù)娇偩€適配器154,并通過(guò)“請(qǐng)求/確認(rèn)”線263d、264d傳輸?shù)紻MAC。BCU156使送到總線適配器154的每個(gè)雙字(32位)的字節(jié)計(jì)數(shù)減1。
總線適配器154把Q選擇命令轉(zhuǎn)變?yōu)镾/370I/O存貯命令,以把該消息發(fā)送到存貯器162的區(qū)189。該命令的格式示于圖45AC,其中,處理器(PROC)總線各位表示0= 0=I/O存貯命令1= 0=存貯操作2-7= 字段長(zhǎng)度(最大64字節(jié))8-31=實(shí)字節(jié)地址(來(lái)自適配器寄存器110、112)處理器85“鍵/狀態(tài)”總線具有如圖45AD所示格式的數(shù)據(jù),其中,各位表示0-3=存貯鍵4= 無(wú)動(dòng)態(tài)轉(zhuǎn)換當(dāng)所有的消息數(shù)據(jù)都已被傳輸?shù)娇偩€適配器154(字節(jié)計(jì)數(shù)=0)時(shí),DMAC209起用通向S/88處理器優(yōu)先權(quán)編碼器212的中斷線258a。DMAC209把來(lái)自其數(shù)據(jù)總線248的最低有效字節(jié)的中斷向量通過(guò)驅(qū)動(dòng)器接收機(jī)234送到S/88處理器數(shù)據(jù)總線161D的23-16位,和本地?cái)?shù)據(jù)總線223的23-16位。DMAC把16位的DSACK返回到PE62。
(d)BCU狀態(tài)命令讀BCU狀態(tài)命令由S/88處理器62發(fā)布;以讀BCU156的當(dāng)前狀態(tài)。S/88處理器按圖45AE所示的格式把該命令放在地址總線247上,其中,各位表示31-29=適配器總線“通道0”狀態(tài)——鍵檢驗(yàn),地址檢驗(yàn)28= 1=最后字節(jié)周期0=所有其它數(shù)據(jù)周期
27-26=適配器總線“通道1”狀態(tài)——鍵檢驗(yàn)、地址檢驗(yàn)25= 緩沖器不能用(“Q選擇”命令)24= 1=最后數(shù)據(jù)周期0=所有其它數(shù)據(jù)周期23= 適配器總線“通道0”“標(biāo)志降低”22= 適配器總線“通道1”“標(biāo)志降低”21= BSM讀同步檢驗(yàn)20= “BSM讀選擇”請(qǐng)求/懸掛鎖存19= “BSM寫(xiě)選擇”請(qǐng)求/懸掛鎖存18= “Q選擇”請(qǐng)求/懸掛鎖存17= 讀郵箱在進(jìn)行中16= BSM讀在進(jìn)行中15= BSM寫(xiě)在進(jìn)行中14= “Q選擇”在進(jìn)行中BCU狀態(tài)位21(BSM讀同步檢驗(yàn))在它由S/88處理器62讀出以后被復(fù)位。這個(gè)位指明在BSM讀操作結(jié)束時(shí),總線適配器154和BCU156字節(jié)計(jì)數(shù)不一致;由此一個(gè)錯(cuò)誤要求重新同步被檢測(cè)出來(lái)。
對(duì)于BSM寫(xiě)操作,總線適配器154起動(dòng)標(biāo)志下降信號(hào)262b,以指明所有數(shù)據(jù)現(xiàn)已都被接收到。在狀態(tài)指示器被給出并由BCU捕捉到時(shí),“標(biāo)志下降信號(hào)”262b由總線適配器154予以解除。如果“標(biāo)志下降信號(hào)”在100ms以內(nèi)未被解除,則BCU156將起用通向總線適配器154的一條停止線(圖中未畫(huà)出)。這將使總線適配器本身從BCU156斷開(kāi)。標(biāo)志下降信號(hào)262b還被總線適配器154用來(lái)指明不可能經(jīng)過(guò)命令/狀態(tài)總線向BCU156報(bào)告的任一錯(cuò)誤。
(e)被編程的BCU復(fù)位命令由PE62發(fā)布的一個(gè)被編程BCU復(fù)位命令執(zhí)行與BCU156“接通電源復(fù)位”(Power on Reset)一樣的功能。它可在任何時(shí)間被發(fā)布,用以清任何不正常狀態(tài)的BCU。然而,本地總線周期(007EXXXX)必須由這個(gè)命令執(zhí)行的硬件所辨認(rèn)。
這個(gè)命令由S/88處理器以圖45AG所示格式放在本地地址總線247上,其中,各位表示31-00=007E0000——復(fù)位BCU命令。
BCU156不過(guò)問(wèn)數(shù)據(jù)總線的內(nèi)容。BCU156把線266a,b上的DSACK(32位端口)返回到S/88處理器62。
計(jì)數(shù)、鍵和數(shù)據(jù)磁道格式仿真(圖46A-K)S/88上的S/370DASD的仿真用一個(gè)例子加以描述,以說(shuō)明S/370I/O程序可由S/88處理器和I/O設(shè)備執(zhí)行的最佳方式。S/370被稱為“客體(object)系統(tǒng)”而S/88被稱為“目標(biāo)(target)系統(tǒng)”。用于客體系統(tǒng)的DACD(直接存取存貯器)數(shù)據(jù)由目標(biāo)系統(tǒng)以仿真的格式予以維護(hù)。在S/370處理器中運(yùn)行的S/370代碼被稱為“客體系統(tǒng)軟件”。這部分的論述分為以下四部分1)客體系統(tǒng)——對(duì)于由現(xiàn)有的S/370直接存取存貯器產(chǎn)品所使用的計(jì)數(shù)、鍵和數(shù)據(jù)記錄格式的簡(jiǎn)述。
2)目標(biāo)系統(tǒng)——描述DASD程序接口模型。
3)仿真格式——描述在所用的仿真格式中客體系統(tǒng)字段的映象。
4)仿真功能——描述在仿真功能中客體系統(tǒng)功能的映象。
1.客體系統(tǒng)DASD物體媒體被分割為很多柱面,柱面又劃分為磁道,這些柱面和磁道數(shù)以及它們的容量對(duì)于不同的DASD類型和模型是不同的。每個(gè)柱面可被程序用兩個(gè)字節(jié)的柱面號(hào)(CC)來(lái)尋址,在一個(gè)柱面內(nèi)的各個(gè)磁道可由單獨(dú)的讀、寫(xiě)磁頭來(lái)存取,每個(gè)磁頭都可兩字節(jié)磁頭號(hào)(HH)尋址。一個(gè)磁道的物理位置由它的柱面號(hào)和磁頭號(hào)給定,因此,可以規(guī)定為四字節(jié)磁道地址(CCHH)。每個(gè)磁道含有一個(gè)內(nèi)部地址、一個(gè)磁道描述符(記錄O)和一個(gè)或多個(gè)數(shù)據(jù)記錄。每個(gè)記錄的大小是可編程的;并且在內(nèi)部地址和記錄大小被寫(xiě)在一個(gè)磁道上時(shí),該磁道被叫做“被格式化”。所有磁道可從它們的磁道起始標(biāo)志到下一個(gè)磁道標(biāo)志被格式化。圖46A示出了這樣一種磁道。
被記錄在該物理媒體上的信息的基本單元是由8比特組成的一個(gè)數(shù)據(jù)字節(jié)。一組數(shù)據(jù)字節(jié)構(gòu)成一個(gè)區(qū),該設(shè)備用其之間的寫(xiě)空隙分割這些區(qū)。每個(gè)記錄包括兩個(gè)(計(jì)數(shù)、數(shù)據(jù))或三個(gè)(計(jì)數(shù)、鍵、數(shù)據(jù))區(qū),而內(nèi)部地址只占一個(gè)區(qū)。構(gòu)成一個(gè)客體系統(tǒng)記錄的三個(gè)區(qū)是計(jì)數(shù)、鍵(可選)、和數(shù)據(jù)。
計(jì)數(shù)區(qū)包括以下字段F標(biāo)記1個(gè)字節(jié)表示磁道狀態(tài)、邏輯記錄磁道溢出CCFF 磁道地址 2個(gè)字節(jié)表示柱面和磁頭號(hào),這里磁道被物理定位R 記錄號(hào)1個(gè)字節(jié)表示在磁道上記錄的順序號(hào)KL鍵長(zhǎng)度1個(gè)字節(jié)表示在鍵區(qū)內(nèi)的字節(jié)數(shù)DL數(shù)據(jù)長(zhǎng)度 2個(gè)字節(jié)表示在數(shù)據(jù)區(qū)內(nèi)的字節(jié)數(shù)ECC 差錯(cuò)碼2個(gè)字節(jié)用于差錯(cuò)檢測(cè)/校正碼鍵區(qū)包括以下字段KEY鍵 KL字節(jié) 用戶數(shù)據(jù)ECC 差錯(cuò)碼2個(gè)字節(jié)用于差錯(cuò)檢測(cè)/校正碼數(shù)據(jù)區(qū)包括以下字段DATA 數(shù)據(jù) DL字節(jié) 用戶數(shù)據(jù)ECC 差錯(cuò)碼2個(gè)字節(jié)用于差錯(cuò)檢測(cè)/校正碼每個(gè)磁道的第一區(qū)是內(nèi)部地址。它包括以下字段F 標(biāo)記 1個(gè)字節(jié)表示磁道狀態(tài)CCHH 磁道地址 2個(gè)字節(jié)表示柱面和磁頭號(hào),這里磁道被物理定位ECC 差錯(cuò)碼2個(gè)字節(jié)用于差錯(cuò)檢測(cè)/校正碼記錄0(磁道描述符)總是跟在內(nèi)部地址區(qū)后面的笫一個(gè)記錄。在優(yōu)選的編程系統(tǒng)中,如果該磁道已標(biāo)為次品,則記錄0的CCHH字段規(guī)定為替換磁道。用于記錄0的鍵長(zhǎng)度通常是0。記錄0后面跟隨一個(gè)或多個(gè)數(shù)據(jù)記錄。鍵區(qū)是任選的,現(xiàn)在可以容納1到255個(gè)字節(jié)。當(dāng)一個(gè)“格式寫(xiě)CCW”命令寫(xiě)計(jì)數(shù)區(qū)、鍵區(qū)和數(shù)據(jù)區(qū)時(shí),記錄號(hào)就確定了。在記錄已被格式化之后,用戶區(qū)可以(用其它CCW命令)被讀和/或?qū)?,而不破壞該磁道的相鄰記錄。如果一個(gè)記錄重新格式化,在同一磁道上跟在它后面的這些記錄都被破壞。
2.目標(biāo)系統(tǒng)DASD(圖46B)以文件的形式提供給S/88微碼,該文件包含4096個(gè)字節(jié)大小的若干塊數(shù)據(jù),塊號(hào)從1按順序編號(hào)。該仿真機(jī)構(gòu)將客體系統(tǒng)的格式和功能的組合。
3.仿真格式在客體系統(tǒng)中,不同的DASD類型和模型的物理參數(shù)是不同的。DASD類型和模型號(hào)和各種參數(shù)都被保存在目標(biāo)系統(tǒng)文件(圖46C)的笫一個(gè)數(shù)據(jù)塊INFO內(nèi)。該文件的對(duì)照關(guān)系包含被仿真的客體磁道的數(shù)據(jù)(圖46C)。每個(gè)磁道的數(shù)據(jù)被維護(hù)在整數(shù)個(gè)數(shù)的多個(gè)數(shù)據(jù)塊中。每個(gè)磁道所需的目標(biāo)系統(tǒng)數(shù)據(jù)塊的號(hào)數(shù)是一個(gè)參數(shù),被保存在第一個(gè)數(shù)據(jù)塊內(nèi)。以CCHH=0000起始的、目標(biāo)系統(tǒng)的每個(gè)磁道順序地被保存在目標(biāo)系統(tǒng)文件中。如果給定保存在該INFO塊中的CCHH和客體盤(pán)的大小,其起始?jí)K號(hào)可以被計(jì)算出。
每個(gè)被仿真的磁道(圖46D)包含在該磁道上當(dāng)前存在的這些記錄的一個(gè)目錄、一個(gè)目錄頭標(biāo)、以及每個(gè)記錄用的用戶數(shù)據(jù)(鍵、數(shù)據(jù))。這個(gè)目錄用來(lái)使一個(gè)特定的記錄所用的數(shù)據(jù)定位,執(zhí)行有關(guān)記錄或鍵操作的檢索、訪問(wèn)在該磁道上的最后記錄、以及處理磁道溢出。
在該仿真環(huán)境里,客體系統(tǒng)數(shù)據(jù)按以下三種方式之一來(lái)對(duì)待被保存、隱含地被保留、或者不被保留。
所有的空隙都是不需要的并且不被保留。ECC數(shù)據(jù)既不產(chǎn)生也不被保存,因?yàn)閿?shù)據(jù)的完整性目標(biāo)系統(tǒng)不與保證。由于目標(biāo)系統(tǒng)所提供的程序模型消除了所有不合格的物理磁表面區(qū),因此在客體系統(tǒng)中的替換磁道是以無(wú)缺陷的方式制成的。這意味著表示磁道狀態(tài)的標(biāo)志字節(jié)(下)這部分不被保存並被廢棄,而客體系統(tǒng)軟件所寫(xiě)的標(biāo)志字節(jié)被用于正確性。
由客體系統(tǒng)軟件傳遞的CCHH(磁道地址)被用來(lái)計(jì)算在目標(biāo)系統(tǒng)DASD文件中的被仿真磁道的位置。它被保存在磁道頭標(biāo)中(下文將描述),但它不被擴(kuò)散到該仿真磁道的計(jì)數(shù)區(qū)和簇地址區(qū)。簇地址不作為顯式區(qū)域保存。由客體系統(tǒng)軟件還傳遞記錄號(hào)(R),該記錄號(hào)也被隱式地保存并且不以顯式數(shù)據(jù)出現(xiàn)。
對(duì)于每個(gè)記錄,用戶數(shù)據(jù)、任選鍵和數(shù)據(jù)字段在被仿真的磁道里緊跟在該磁道目錄后按順序被保存(圖46D)。
客體系統(tǒng)數(shù)據(jù)〔F(邏輯記錄磁道溢出)KL和DL〕的對(duì)照表被保持在磁道目錄中(圖46E)。目錄項(xiàng)目含有F、KL、DL、以及一個(gè)指針P,該指針指向每個(gè)記錄的用戶數(shù)據(jù)(鍵和數(shù)據(jù))。R被隱式地保存,作為目錄項(xiàng)目號(hào)。圖46E示出頭標(biāo)、目錄、用戶數(shù)據(jù)配置(makeup)以及在目標(biāo)系統(tǒng)4KB塊中被仿真磁道的映象。指針P0-P2指向用戶數(shù)據(jù)記錄0-2的起始地址(在4KB塊內(nèi))。
4.仿真功能這節(jié)用某些客體系統(tǒng)的DASD CCW命令來(lái)說(shuō)明上述仿真格式的應(yīng)用。圖46F-K包含了讀和寫(xiě)操作期間由客體系統(tǒng)軟件傳輸?shù)拇頂?shù)據(jù)。
涉及簇地址、F和CCHH值的CCW操作(圖46F)被計(jì)算和/或被檢驗(yàn),但什么也沒(méi)被寫(xiě)入被仿真的磁道。
對(duì)于涉及記錄0的CCW操作(圖46G),CCHH和R字節(jié)被檢驗(yàn),但什么也沒(méi)寫(xiě)。KL和DL字段被傳輸,來(lái)自或去往適當(dāng)?shù)哪夸涰?xiàng)。記錄0位于用戶數(shù)據(jù)區(qū)中位移為0的地方。讀/寫(xiě)記錄0總是把磁頭定位在該磁道的第一記錄上。
涉及計(jì)數(shù)的CCW操作總是把磁頭定位在磁道下一個(gè)記錄上(圖46H)。對(duì)于涉及鍵和數(shù)據(jù)的CCW操作,用戶數(shù)據(jù)的位置和大小可在目錄中找到(圖46I)。涉及計(jì)數(shù)、鍵以及數(shù)據(jù)的CCW操作把讀/寫(xiě)磁頭定位在磁道的下個(gè)記錄上(圖46J)。對(duì)于涉及多個(gè)的計(jì)數(shù)、鍵以及數(shù)據(jù)的CCW操作,處理是以下一個(gè)目錄項(xiàng)開(kāi)始,并且持續(xù)到最后的有效目錄項(xiàng)(圖46K)。
S/88和S/370共享的實(shí)存貯器1.引言現(xiàn)在參考下列圖例來(lái)詳細(xì)描述對(duì)于一個(gè)或多個(gè)S/370處理器如何從實(shí)(物理的)存貯器16中“偷”一個(gè)或多個(gè)區(qū)並對(duì)它實(shí)施管理和映象圖10概念性地示出S/88虛存貯器106和實(shí)存貯器16以及S/370實(shí)存貯器162-164對(duì)于S/370處理器21、23和25、27以及29、31的分配;圖47圖解地示出從S/88實(shí)存貯器16捕捉一個(gè)S/370存貯區(qū)的方法;和圖48A-K示出已知的例如用于S/88存貯器管理的虛/實(shí)軟件映象,這種映象被控制以允許捕捉S/370存貯器。
存貯器16被劃分為多個(gè)4KB大小的頁(yè)面和多個(gè)存貯器映象表目(mme),一個(gè)4KB頁(yè)被容納在mme陣列內(nèi)(圖48A),該陣列映象出整個(gè)存貯器16。對(duì)應(yīng)于與未被分配使用的頁(yè)面的各個(gè)項(xiàng)歸結(jié)在一個(gè)“自由表”內(nèi)(亦即存貯器分配隊(duì)列),其中每一項(xiàng)包括(圖48B)、包含其在表中的上一項(xiàng)和下一項(xiàng)的實(shí)頁(yè)號(hào)(指針)。在S/88操作系統(tǒng)中的軟件指針總是指向該自由表的開(kāi)關(guān)。實(shí)存貯器頁(yè)從這個(gè)自由表的頭上被分配給各個(gè)進(jìn)程,返回到該自由表的頁(yè)面最好被放在該自由表的開(kāi)頭。上一個(gè)和下一個(gè)頁(yè)號(hào)和指向該自由表開(kāi)頭的指針適當(dāng)?shù)乇桓隆?br>
當(dāng)系統(tǒng)/88被引導(dǎo)時(shí),這些入口按順序地址的次序被放入該自由表中,這時(shí)只有幾頁(yè)指定使用。因此,存貯器16有大量的鄰接區(qū)可由該自由表指定使用。這樣,在引導(dǎo)時(shí),S/370處理器用的存貯區(qū)(即162、163、164)必須被“偷”。隨后,根據(jù)需要,某些頁(yè)面從該自由表取出分配,某些頁(yè)面又返回到該自由表,這樣在該表中的大量鄰接塊變成碎片并且再也不能使用。假如試圖建立一個(gè)鄰接的S/370區(qū),則需要停所有過(guò)程和執(zhí)行復(fù)雜的例行程序,以重新分配那些已分配給各種過(guò)程的存貯塊,直到足夠的鄰接存貯器變成可以使用時(shí)為止。
下文描述的在應(yīng)用程序EXEC370中的服務(wù)例行程序?yàn)閺腟/88操作系統(tǒng)中偷S/370存貯區(qū)提供功能。
2。S/88存貯器16映象首先參閱圖48A-K描述一種優(yōu)選形式的管理/映象S/88主存貯器16。圖48A簡(jiǎn)潔示出由S/88操作系統(tǒng)建立的軟件結(jié)構(gòu),以維護(hù)一個(gè)進(jìn)程的虛地址空間。該軟件結(jié)構(gòu)包括以下單元Pte——進(jìn)程表表目(代表一個(gè)進(jìn)程)。
Pmb——進(jìn)程映象塊。鏈接在一起,它們包含指向該進(jìn)程虛地址空間的apte。
pmbp——在pte中指向該鏈中笫一個(gè)pmb的指針。
pmt ——過(guò)程映象入口(指向apte的指針)包含在pmb中。
mme ——實(shí)存貯器映象入口。包含在mme陣內(nèi)。有一個(gè)mme用于該系統(tǒng)的實(shí)存貯器亦即存貯器16的每個(gè)4KB頁(yè)。
apte——活動(dòng)的頁(yè)表入口,包含在apt塊內(nèi),有一個(gè)apte用于該系統(tǒng)內(nèi)每個(gè)獨(dú)特的虛頁(yè)。
vpm ——在進(jìn)程的虛地址空間內(nèi)的虛頁(yè)號(hào)。
pmt ——進(jìn)程管理表。在該pmt中有一個(gè)指向該系統(tǒng)各進(jìn)程(pte)的指針。
ptep——指向一個(gè)進(jìn)程的進(jìn)程表入口指針。
圖48A的存貯器映象結(jié)構(gòu)由存貯器管理單元105使用(圖10和47)。它包括一個(gè)或多個(gè)mme陣列(圖48C),在本實(shí)施例中,每個(gè)都含有512個(gè)順序的mme。每個(gè)mme代表實(shí)存貯器16的一個(gè)4KB頁(yè),因此,一個(gè)mme陣列代表512×4KB=2MB鄰接的存貯器。
被標(biāo)有存貯器映象陣列的方框(圖47)概念性地示出按順序地址次序排列的所有mme陣列。
mme通常扔到以下三個(gè)表的一個(gè)表內(nèi)1)被用表,mme被分配給一個(gè)過(guò)程。
2)回收表,mme被返回到自由表。
3)自由表,mme可分配給一個(gè)進(jìn)程,當(dāng)mme從一個(gè)表到另一個(gè)表移動(dòng)時(shí),它們的指針適當(dāng)?shù)乇桓隆?br>
如果它們不在一張表上,則它們表示固定連線的頁(yè)或正處于過(guò)渡狀態(tài)中。存儲(chǔ)器管理單元105所使用的mme數(shù)據(jù)結(jié)構(gòu)包括圖48B所示的三個(gè)表指針,其中標(biāo)志 連線 頁(yè)是連線的I/O正在進(jìn)行 磁盤(pán)I/O現(xiàn)在正進(jìn)行寫(xiě) 表示對(duì)這頁(yè)面的上一次(或當(dāng)前)I/O是對(duì)磁盤(pán)的一次寫(xiě)入連接的 頁(yè)在硬件寄存器中有一個(gè)PTW(物理表示)修改 最后一次察看的修改位未用(2)逐出清除 通知崗哨將其清除未用(1)逐出釋放 通知崗哨將此頁(yè)消除並釋放頁(yè)面錯(cuò)誤 某些Pf在這一頁(yè)上等待下一mme 指向下一mme的ppn(物理頁(yè)號(hào))前一mme 指向前一mme的ppn地址 磁盤(pán)地址,但在內(nèi)存中aptep指向這一頁(yè)的apte的指針“下一”與“前一”mme字段用于建立鏈表(已用,回收,自由表)。
指向下一mme與前一mme的物理頁(yè)號(hào),當(dāng)S/88的物理存儲(chǔ)器被奪取用作S/370存儲(chǔ)器區(qū)域時(shí),可以如下文所述進(jìn)行改變。在本較佳實(shí)施例中,每一個(gè)mmep數(shù)組(圖48c)是一張128個(gè)指針的表,每一個(gè)指針是一個(gè)mme數(shù)組的一個(gè)虛擬地址。前n個(gè)指針是所有的mme數(shù)組的一張有序的表。剩下的128-n個(gè)指針為NULL(空)。這提供了記錄128×2MB=256MB實(shí)存儲(chǔ)器的能力。每一個(gè)這種指針包括一個(gè)物理地址的16個(gè)高位,稱作一個(gè)物理頁(yè)號(hào)(ppn),並用作指向一個(gè)指定的mme的一個(gè)指針。ppn的七個(gè)高位選擇mme數(shù)組,而ppn的九個(gè)低位則選擇數(shù)組中的mme。物理地址的12個(gè)低位是存儲(chǔ)器16中的實(shí)(物理)頁(yè)面中的一個(gè)位移量。
一個(gè)存儲(chǔ)器映象信息(mem map info)結(jié)物(圖48D)用于記錄作映象用的存儲(chǔ)器,其中mem map infop-1指向第一個(gè)存儲(chǔ)器映象信息結(jié)構(gòu)的指針下一個(gè)mem map infop指向下一個(gè)存儲(chǔ)器映象信息結(jié)構(gòu)的指針n頁(yè)這一映象所用的實(shí)存儲(chǔ)器的4k大小頁(yè)面的數(shù)目(最多16)每頁(yè)(16) 本結(jié)構(gòu)的對(duì)照表是每頁(yè)信息一個(gè)數(shù)組ppn這一頁(yè)的mme的物理頁(yè)號(hào)活動(dòng)頁(yè)表項(xiàng)(apte)是用于登記虛擬存儲(chǔ)器的。系統(tǒng)中的所有虛擬存儲(chǔ)器空間中各4KB頁(yè)虛擬存儲(chǔ)器各有一個(gè)apte。apte結(jié)構(gòu)(圖48E)指明該虛擬空間的所有者,該頁(yè)的虛擬地址,以及如果頁(yè)被調(diào)出,磁盤(pán)地址所在的實(shí)存儲(chǔ)器地址。
如果多于一個(gè)進(jìn)程正在共享同一虛擬地址空間,則通過(guò)一個(gè)apte尾來(lái)標(biāo)識(shí)所有的進(jìn)程(圖48G),而各虛擬頁(yè)的apte指向該尾。
apte結(jié)構(gòu)包括地址 實(shí)4K頁(yè)面的地址 (標(biāo)志mem賦值=1)如果這一apte (標(biāo)志mem賦值=0)下一自由apte的磁盤(pán)地址的地址標(biāo)志 每一進(jìn)程虛擬頁(yè)不與其他進(jìn)程共享派生的頁(yè)每進(jìn)程頁(yè)是派生的mem被賦值等待 頁(yè)有存儲(chǔ)器被指定等待這一頁(yè)I/O錯(cuò)誤 在頁(yè)上出現(xiàn)I/O錯(cuò)誤釋放apte在I/O完成時(shí)釋放這一APTECPU型修補(bǔ) 在引導(dǎo)時(shí)被修補(bǔ)壞地址,重新分配錯(cuò)誤強(qiáng)制的新地址計(jì)數(shù)共享這一頁(yè)的進(jìn)程數(shù)Vpage虛擬頁(yè)號(hào),Vpn包括一個(gè)27位虛擬地址的16個(gè)高位。
進(jìn)程指針 每進(jìn)程的pte(如果不是共享虛擬存儲(chǔ)器)(process 地址或者apt(如果是共享的虛擬存儲(chǔ)器)ptr) 尾的地址每一個(gè)apte是12字節(jié)長(zhǎng),每一活動(dòng)頁(yè)面表(apf)塊中包含256個(gè)表項(xiàng)(圖48F)。apte在一個(gè)塊中的相對(duì)位置沒(méi)有意義。所有未使用的apte串鏈在一張自由aptep表上。當(dāng)需要增加apte而表已空,則在連線的堆中分配一個(gè)新的apt塊;並將全體256個(gè)apte串鏈在自由表上。
apt尾(圖48G)是用于共享程序區(qū)域的,它是被分配在連線的系統(tǒng)堆中的,並被一個(gè)EITE(可執(zhí)行映象表表項(xiàng))或一個(gè)apte所指向。每個(gè)程序有4個(gè)尾(每一區(qū)域一個(gè)尾)。系統(tǒng)在清除一個(gè)頁(yè)面時(shí)通過(guò)尾可以找到所有指向該頁(yè)面的PTW。
apt尾結(jié)構(gòu)包括N進(jìn)程數(shù) 使用這一尾的進(jìn)程數(shù)V基 (區(qū)域基Vpn)這一區(qū)域的笫一虛擬頁(yè)n頁(yè)數(shù)區(qū)域中的頁(yè)數(shù)users尾用戶的位映象pp信息(O:nnp)這一結(jié)構(gòu)的對(duì)照表是每一進(jìn)程信息的一個(gè)數(shù)組npp 數(shù)組的大小nptws這一時(shí)刻所連接的PTW數(shù)apfep這一頁(yè)的指向APTE的指針進(jìn)程表的表項(xiàng)(pte)(圖48H)包含管理一個(gè)進(jìn)程所必需的信息;包括有關(guān)該進(jìn)程的虛擬地址空間的信息。每一進(jìn)程表表項(xiàng)包括笫一pmbptr指向這一進(jìn)程pmb表中的笫一個(gè)pmb的指針map root tbl phys 物理映象的物理地址
addrmap root ptr phys 物理映象的虛擬地址map root ptr virt 虛擬映象的象Pdr ptr 每進(jìn)程地址區(qū)域的地址進(jìn)程映象塊結(jié)構(gòu)(圖48I)是用于將一個(gè)進(jìn)程的虛擬空間映射到實(shí)存儲(chǔ)器空間,並包括nexfp 指向這一進(jìn)程的下一pmb的指針base vpn基虛擬頁(yè)號(hào),這一pmb的笫一虛擬頁(yè)號(hào)(六個(gè)最低位為0。)map addr映象的物理地址pme 進(jìn)程映象表項(xiàng)0-63,這一結(jié)構(gòu)的對(duì)照表是一個(gè)每頁(yè)信息的數(shù)組。這一數(shù)組的下標(biāo)是Vpn的六個(gè)最低位。
標(biāo)志已使用已使用位的付在內(nèi)存頁(yè)在內(nèi)存儲(chǔ)器中未使用(1)籬笆 這一頁(yè)是一個(gè)籬笆頁(yè)連線 當(dāng)這一頁(yè)進(jìn)入時(shí)將其連線寫(xiě)時(shí)復(fù)制 寫(xiě)入時(shí)復(fù)制該頁(yè)修補(bǔ)的 頁(yè)為被修補(bǔ)的碼頁(yè)Ufence 用戶籬笆頁(yè)aptep 指向這一頁(yè)的APTE的指針進(jìn)程管理表(圖48J)中包含調(diào)度程序所用的信息,包括指向系統(tǒng)中所有進(jìn)程的指針ptep的一張表,系統(tǒng)中可利用的頁(yè)的數(shù)目,以及被提交的頁(yè)的數(shù)目。
圖48K的物理表字(ptw)包括ac1ptw訪問(wèn)代碼ppn所要求的頁(yè)的物理頁(yè)號(hào)ac2ptw訪問(wèn)代碼u 這一ptw已在使用3.啟動(dòng)過(guò)程系統(tǒng)S/88包括一個(gè)啟動(dòng)過(guò)程,它為系統(tǒng)接通電源並將在一個(gè)啟動(dòng)文件上的程序與數(shù)據(jù)模塊引導(dǎo)進(jìn)來(lái)。
在自動(dòng)啟動(dòng)時(shí),可編程只讀存儲(chǔ)器(prom)181(圖12)在系統(tǒng)/88與系統(tǒng)/370部件上運(yùn)行診斷與自檢程序。完成這些任務(wù)時(shí),PROM181讀入一個(gè)實(shí)用程序該程序從一個(gè)主磁盤(pán)(未示出)上裝入S/88操作系統(tǒng)。
模塊啟動(dòng)碼初始化所有配置的設(shè)備與磁盤(pán)並從系統(tǒng)日歷時(shí)鐘設(shè)定內(nèi)部時(shí)鐘。這一文件包含有操作系統(tǒng)所執(zhí)行的命令,這些命令是啟動(dòng)一個(gè)模塊用的命令過(guò)程的一部分。這一過(guò)程包括下述功能讀入表文件,該文件指定了與該模塊相連接的插件板,磁盤(pán)和設(shè)備的配置;在系統(tǒng)內(nèi)部標(biāo)識(shí)該模塊;以及啟動(dòng)各種系統(tǒng)服務(wù)進(jìn)程。
這一模塊文件提供給足以把一個(gè)新系統(tǒng)引進(jìn)來(lái)的數(shù)據(jù)並可由用戶修改以適應(yīng)他的要求。為了從S/88主存儲(chǔ)器16奪取一個(gè)S/370區(qū)域162-164,在模塊啟動(dòng)碼命令文件中插入了某些語(yǔ)句。例如,如果我們?cè)趫D10的配置中設(shè)有三臺(tái)S/370處理器21,23與25,27與29,31及為所述處理器設(shè)定了三個(gè)S/370存儲(chǔ)器區(qū)域162,163與154則在模塊啟動(dòng)碼命令文件中插入下述語(yǔ)句Start S/370 processor#1VM8megabytesStart S/370 processor#2AIZ4megabytesStart S/370 processor#3VSE16megabytes4.S/370服務(wù)例程每一條Start S/370命令導(dǎo)致執(zhí)行一個(gè)軟件例程,為各S/370處理器#1,#2或#3從存儲(chǔ)器16“偷用”一塊實(shí)存儲(chǔ)器空間。然后適當(dāng)?shù)腟/370操作系統(tǒng)將被IPL(初始程序裝入)到“偷用”的實(shí)存儲(chǔ)器空間中。這一軟件例程的功能為從S/88存儲(chǔ)器奪取存儲(chǔ)器區(qū)域並在適當(dāng)時(shí)候“替換”這些存儲(chǔ)區(qū)域。五個(gè)子例程用于執(zhí)行這些功能;a)子例程S/370替換存儲(chǔ)器從S/88操作系統(tǒng)表中抽取一塊物理存儲(chǔ)器,該塊的基地址將在一個(gè)兆字節(jié)的界上,而其大小則將是兆字節(jié)的整數(shù)倍。用法declare S/37O displace_stor entry(binary(15),binary(15),binary(15);call S/37O displace stor(n blks,ppn,error code);參數(shù)——nblkn(塊數(shù))(輸入),所要求的連續(xù)的兆字節(jié)數(shù)。
ppn(輸出)塊中笫一個(gè)最低或最高的4K頁(yè)實(shí)存儲(chǔ)器的物理頁(yè)號(hào)。ppn的八個(gè)最低位為零,而該塊的基實(shí)地址將為4096*ppn。
error-code自由塊不夠——沒(méi)有足夠的連續(xù)的自由塊可利用來(lái)替換至少一兆字節(jié)。
提供不足——所替換的兆字節(jié)數(shù)少于所請(qǐng)求的。
b)子例程S/370退換存儲(chǔ)器將一塊物理存儲(chǔ)器歸還給S/88操作系統(tǒng)表。用法declare S/370 replace_stor entry(binary(15),binary(15),binary(15);call S/370 replace_stor(n_blks,ppn,參數(shù) error_code);n_blks(塊數(shù))(輸入)歸還的連續(xù)的兆字節(jié)數(shù)ppn(輸入)塊的基的物理頁(yè)號(hào)。ppn的八個(gè)最低位必須為零。
error-code(輸出)(不能自由連接)——在試圖將存儲(chǔ)器歸還VOS之前必須也用S/370Close Storage)(關(guān)閉存儲(chǔ)器)。
c)子例程S/370 Open Storage(打開(kāi)存儲(chǔ)器)將一部分或全部以前被替換的存儲(chǔ)器連接到調(diào)用者的虛擬地址空間並返回虛擬頁(yè)號(hào)。建立每一個(gè)適當(dāng)?shù)腶pte和pme,以及建立虛到實(shí)的映射。訪問(wèn)碼為“讀/寫(xiě)”,且該存儲(chǔ)器被連線。用法 declare S/370 open_stor entry(binary(15),binary(15),binary(15),binary(15);call S/370 open_stor(n_blks,ppn,vpn,參數(shù) error_code);n_blks(塊數(shù))(輸入)所請(qǐng)求的連接的兆字節(jié)數(shù)。
ppn(輸出)該區(qū)域中笫一個(gè)4K頁(yè)的物理頁(yè)號(hào)。
ppn的八個(gè)最低位將為零。Vpn(輸出)該區(qū)域中笫一個(gè)4K頁(yè)的虛擬頁(yè)號(hào)。
Vpn的八個(gè)最低位將為零,其虛擬地址為4096*Vpnerro-code(輸出)返回的錯(cuò)誤碼。d)S/370關(guān)閉存儲(chǔ)器(關(guān)閉存儲(chǔ)器)子例程S/370關(guān)閉存儲(chǔ)器將以前打開(kāi)的物理存儲(chǔ)器從調(diào)用者的虛擬地址空間中斷開(kāi)。對(duì)應(yīng)的APTE與PME歸還給S/88操作系統(tǒng),並且使虛到實(shí)的映射無(wú)效。物理存儲(chǔ)器歸還給S/370替換存儲(chǔ)器例程。用法declareS/370 close_stor entry(binary(15)(binary(15)(binary(15)call S/370 close_stor (n_blocksvpn,error_code);參數(shù)n_blks(塊數(shù))(輸入)歸還的連續(xù)兆字節(jié)數(shù)。Vpn(輸入)所歸還的區(qū)域中的笫一個(gè)4K頁(yè)的虛擬頁(yè)號(hào)error-code(輸出)返回的錯(cuò)誤碼e)Gain Freedom(獲得自由)是一個(gè)被START370(啟動(dòng)370)程序所調(diào)用的子例程。它將START_370程序置于S/88的管理態(tài)中使上述四個(gè)子例程得以執(zhí)行。一旦START_370處于管理態(tài)中,便可以修改向量指針將存儲(chǔ)器塊從S/88操作系統(tǒng)移走並將其重新分配給各S/370處理器。這一子例程用于變更存儲(chǔ)器分配並將S/88處理器中斷級(jí)6的手冊(cè)上說(shuō)明的向量進(jìn)行改變。為了系統(tǒng)安全的原因因,不給用戶有關(guān)調(diào)用這一例程的知識(shí)也不允許用戶訪問(wèn)它。用法declare S/370 gain_freedom entry(binary(15),binary(15);call S/370 gain freedom(give_take,error_code);參數(shù)giye-take(輸入)取值為0時(shí)將調(diào)用者返回到應(yīng)用用戶態(tài),而任何其它值將調(diào)用者設(shè)置為管理態(tài)。
error-code(輸出)返回的錯(cuò)誤碼。上述子例程的操作步驟如下S/370替換存儲(chǔ)器1)獲得自由,並封鎖mme數(shù)組的自由表2)在自由表中尋找最長(zhǎng)的鄰接自由mme的串3)將兩頭都?xì)w整到兆字節(jié)邊界上並計(jì)算nblks,在串中的4KB塊的數(shù)目4)如果nblks>n_blks,將nblks設(shè)置為n_blks(所請(qǐng)求的4KB數(shù))並修改基ppn界限5)從自由表上松脫一個(gè)選定的mme串6)從系統(tǒng)可資利用計(jì)數(shù)中減去n頁(yè)7)解封mme_array(mme數(shù)組)自由表,放棄自由8)設(shè)置ppn=基ppnrc=error如果nblks<n_blks
rc=error如果nbls<=0rc=0如果無(wú)錯(cuò)誤S/370退換存儲(chǔ)器(歸還存儲(chǔ)器)1)檢驗(yàn)是否所有表項(xiàng)都不連線,若是則設(shè)置標(biāo)志為0,並將mme適當(dāng)?shù)劓溄釉谝黄稹H绻嬖趩?wèn)題則返回錯(cuò)誤碼。2)gain-freedom(調(diào)用獲得自由例程),封鎖mmearrays(mme數(shù)組)自由表3)從自由表中尋找鏈接mme的好位置a.笫一候選位置是鄰接于基ppn的位置b.笫二候選位置是在表尾的位置4)將整個(gè)塊鏈接到自由表上5)在系統(tǒng)可資利用計(jì)數(shù)上增加n頁(yè)6)解封mme_arrays(mme數(shù)組)自由表,並放棄自由S/370打開(kāi)存儲(chǔ)器1)找到這一進(jìn)程的表項(xiàng)並在其虛擬存儲(chǔ)器的一個(gè)pmb界上尋找一個(gè)足夠容納n_blks(調(diào)用時(shí)指定的參數(shù))兆字節(jié)的空槽。確準(zhǔn)是否有足夠供替換的mme來(lái)服務(wù)這一請(qǐng)求。如果存在問(wèn)題則返回錯(cuò)誤碼。2)在必要時(shí),分配連線空間給pmb與apte3)建立整個(gè)結(jié)構(gòu)mme被連線與連接mme,aptep→apte
pme,aptep→apte適當(dāng)?shù)卦O(shè)置所有的標(biāo)志apte,ptep→pte4)將新構(gòu)成的pmb鏈接到任務(wù)的pmb鏈上關(guān)閉存儲(chǔ)器1)找到這一進(jìn)程的表項(xiàng)並找到S$open·· storage所構(gòu)成的pmb。如果找不到則返回。
2)將這些pmb從進(jìn)程的pmb鏈上解脫。
3)對(duì)于每一個(gè)apte,調(diào)用setup-ptw(子例程名)使實(shí)映射故障4)將pmb與apte的連線空間歸還給OS(操作系統(tǒng))5)將mme歸還給替換存儲(chǔ)器例程獲得自由1)得到giVe-take參數(shù)的地址2)如果是放棄自由則跳轉(zhuǎn)到7)下述步驟獲得自由3)執(zhí)行一個(gè)陷井13使OS返回到在管理態(tài)中的調(diào)用進(jìn)程4)取得用戶棧指針并與系統(tǒng)棧指針交換。
5)在用戶棧指針中保存系統(tǒng)棧地址6)在用戶棧上返回管理態(tài)中的調(diào)用進(jìn)程下述步驟放棄自由7)將保存的系統(tǒng)棧地址取回並交換給系統(tǒng)棧指針8)替換用戶棧指針中的用戶棧地址9)修改棧使陷井處理程序?qū)⒎祷氐?1
10)返回到陷井處理程序11)陷井處理程序返回到用戶12)在用戶棧上返回用戶態(tài)的調(diào)用進(jìn)程5.從自由表中脫開(kāi)選定的mme串FIRSTMME對(duì)應(yīng)于要脫開(kāi)的串中第一個(gè)mme,並且其ppn中包含它的ppn(物理頁(yè)號(hào))LASTMME對(duì)應(yīng)于串的最后mme,如果FIRSTMME在自由表的頭上(FIRSTMME的前一個(gè)mme字段等于0)則將自由表指針設(shè)置為等于LAST MME的下一個(gè)mme字段;從而LAST MME后面的mme現(xiàn)在處于自由表的頭上。否則將FIRST MME前面那個(gè)mme的下一個(gè)mme字段設(shè)置成等于LAST MME的下一個(gè)mme字段。如果在LASTMME后面有mme(LASTMME的mme的前一個(gè)mme字段設(shè)置為等于FIRST MME的前一個(gè)mme字段。6.在STCI中寫(xiě)入存儲(chǔ)器基(地址)及大小從S/88OS“偷用”存儲(chǔ)器以后,根據(jù)配置文件中所說(shuō)明的需要量將它劃分給所有的S/370處理器,在S/88的核心存儲(chǔ)器中建立一個(gè)配置數(shù)組其中包括各S/370處理器的基ppn及nblks名詞nblks指連接的兆字節(jié)存儲(chǔ)器數(shù)。它等于偷用(脫開(kāi)的)的mme被256除所得的數(shù)。當(dāng)各S/370處理器的EXEC370任務(wù)在其各自的S/88處理器中啟動(dòng)時(shí),它使用對(duì)應(yīng)的基ppn與nblks值組成一個(gè)STCI字。然后將這一字寫(xiě)入虛擬地址007E01FC(在本地存儲(chǔ)器210地址空間中)使得STCI寄存器404與405(圖32B)的初始化對(duì)S/88操作系統(tǒng)透明。
上面根據(jù)圖19A,20中所描述的解耦機(jī)構(gòu)216與BCU接口邏輯253被用于初始化寄存器404,405。
然而,在本較佳實(shí)施例中,如圖32B所示,寄存器404,405是直接與S/88處理器數(shù)據(jù)總線161D相耦合的(而不是耦合到BCU本地?cái)?shù)據(jù)總線223上的)。邏輯216的譯碼邏輯280將上述虛擬地址譯碼到來(lái)自S/88硬件的塊AS並將DSACK歸還給處理器62。寄存器404,405是通過(guò)來(lái)自邏輯253的STCI選擇線起動(dòng)的。STCI字的27-24位構(gòu)成該STCI的“基”地址而23-20構(gòu)成S/370存儲(chǔ)器“大小”值。位19-0為0。
S/370啟動(dòng)的S/88中斷的初始化功能有各種不同的方案可用于將S1370的中斷引導(dǎo)到常駐在S188中的S1370中斷處理程序微碼而不使S188操作系統(tǒng)知道。下面將封論其中的三種方案。
笫一種方法包括對(duì)S/88操作系統(tǒng)核心進(jìn)行修改,將S/370中斷處理程序代碼插入S/88操作系統(tǒng)笫一級(jí)中斷處理程序使其作為目標(biāo)模塊的組成部分進(jìn)行匯編。中斷向量表包括在中斷處理程序的匯編源程序中,並且S/370所用的向量在源程序中被修改成指向S370中斷處理程序代碼。
這一方法與下述S/88體系結(jié)構(gòu)的方法大相經(jīng)庭1)每一個(gè)中斷設(shè)備都必須登錄到一個(gè)文件中,此文件將此設(shè)備、該設(shè)備的路徑名、以及插件地址等標(biāo)識(shí)給S/88操作系統(tǒng)。
2)當(dāng)笫一級(jí)中斷處理程序接收到該中斷時(shí),它建立適當(dāng)格式的棧,保存所有的機(jī)器狀態(tài)與寄存器,檢驗(yàn)該中斷的合法性,並且將該中斷傳遞給一個(gè)“笫二級(jí)”中斷處理程序,該笫二級(jí)中斷處理程序調(diào)用研制人員專門(mén)編寫(xiě)的設(shè)備中斷代碼。
3)當(dāng)中斷代碼結(jié)束時(shí),它將控制返回到操作系統(tǒng)中斷處理程序,后者負(fù)責(zé)恢復(fù)環(huán)境。
上述笫一種方法繞過(guò)了所有這一切,把S/370中斷向量匯編成指向S/370中斷例程,利用這種方法我們避免了S/88操作系統(tǒng)所執(zhí)行的全部正常中斷處理,而沒(méi)有必要通過(guò)設(shè)備文件標(biāo)識(shí)S/370。這實(shí)際上是一種軟件解耦,因?yàn)楦淖兊氖谴a而不是硬件。這笫一種方法是最快最省錢(qián)的方法去達(dá)到所想要的中斷功能。然而,這一方法在S/88操作系統(tǒng)的以后每一次發(fā)布時(shí)都需要額外的維護(hù)。它至少需要一次與核心的結(jié)合;以及,如果中斷處理程序已經(jīng)改變,則必須將S/370中斷代碼重新插入,而中斷處理程序則必須重新匯編。
笫二種方法包括在引導(dǎo)系統(tǒng)以后修改操作系統(tǒng)的中斷向量;而在描述圖20的硬件中斷機(jī)構(gòu)時(shí)新蘊(yùn)含的方法便是這一方法。
這笫二種方法要求將S/370中斷代碼放置在S/88操作系統(tǒng)虛擬地址空間中(在本較佳實(shí)施例中,在007E0000的正下方)以及對(duì)操作系統(tǒng)核心中斷處理程序中的適當(dāng)中斷向量進(jìn)行修改。這一工作是在操作系統(tǒng)初始化以后由S/370初始化例程進(jìn)行的(與S/370初始化例程“偷用”存儲(chǔ)器同時(shí))。由于初始化例程是在修改S/88操作系統(tǒng)核心存儲(chǔ)器區(qū)域,它必須以上文所描述的用于“偷用”存儲(chǔ)器的方式“獲得自由”。這笫二方法不需要對(duì)每一個(gè)新發(fā)布的S/88操作系統(tǒng)核心進(jìn)行維護(hù)修改。然而,S/370中斷在S/88操作系統(tǒng)啟動(dòng)和運(yùn)行以前是不能工作的。
笫三種方法包括中斷向量?jī)?nèi)容的硬件表示;而這是一種較佳的選擇,因?yàn)椴恍枰赟/88操作系統(tǒng)核心中進(jìn)行修改,即,不改變向量表。
這第三種方法要求將S/370中斷例程放置在S/88操作系統(tǒng)虛擬地址空間與/或BCU本地存儲(chǔ)器中作為一個(gè)已知的只讀存儲(chǔ)器(ROS)地址。中斷例程地址必須對(duì)S/370硬件是可利用的,最好在ROS中。下述方案用于展現(xiàn)這一方法1)S/370(例如BCU156中的DMAC209)發(fā)動(dòng)中斷請(qǐng)求。
2)S/88處理單元62激活中斷確認(rèn),數(shù)據(jù)選通與地址選通。
3)BCU將一個(gè)中斷向量號(hào)(為了容易辨認(rèn)可以是全0或者進(jìn)入ROS向量空間中的位移量)放置在數(shù)據(jù)總線223並激活數(shù)據(jù)選通確認(rèn)。這一向量號(hào)除了正確奇偶校驗(yàn)以外對(duì)處理器62沒(méi)有任何影響。
4)最終,處理器62將執(zhí)行一個(gè)存儲(chǔ)器讀周期以獲得該4字節(jié)中斷向量,5)BCU識(shí)別這一特定的存儲(chǔ)器訪問(wèn)(用該虛擬地址),將處理器62從訪問(wèn)存儲(chǔ)器中解耦並將其本身的4字節(jié)中斷向量提出(從S/370ROS選通)。S/370ROS包含著所需要的所有向量,幾個(gè)用于DMAC,一個(gè)用于ROS插件同步等等。
這笫三方法為了同步S/370硬件等目的允許在插件同步中解耦。然而,這一方法需要較多的硬件。
不修改S/88操作系統(tǒng)而獲得自由在上文的“啟動(dòng)S/370服務(wù)例程”中給出的一種方法描述了應(yīng)用程序如何能獲得自由,即,獲得管理態(tài)。它包括編寫(xiě)一個(gè)專用的OS服務(wù)調(diào)用“陷井13指令”例程,並將其加入進(jìn)S/88OS(操作系統(tǒng))核心中。
這一陷井13中斷例程除了在緊隨陷井指令之后的位置上調(diào)用發(fā)布該陷井的程序以外不進(jìn)行任何其它操作。由于該陷井中斷例程是在管理態(tài)中,從屬的程序?qū)⒆兂晒芾響B(tài)。為了重獲應(yīng)用程序態(tài),應(yīng)用程序修改中斷棧返回地址,並從陷井13的“調(diào)用”返回到陷井13中斷代碼,該代碼使用修改后的中斷棧地址退出中斷。這一方法包含在S/88OS(操作系統(tǒng))中增加一個(gè)中斷例程。
笫二種方法消除了對(duì)從屬于OS的修改。在BCU控制存儲(chǔ)器地址空間中定義了一個(gè)專用寄存器(未示出),當(dāng)應(yīng)用程序?qū)λM(jìn)行寫(xiě)入時(shí),它使用上面給出的實(shí)現(xiàn)中斷的笫三種方法產(chǎn)生一個(gè)新的BCU中斷。應(yīng)用中斷例程是常駐在BCU只讀存儲(chǔ)器(未示出)中的並同陷井13代碼同樣地工作。上文所述的獲得自由例程除了它不是發(fā)布一條陷井13指令而是寫(xiě)入BCU專用寄存器以外,它與陷井13完全相同地工作。
不修改S/88OS(操作系統(tǒng))而偷用存儲(chǔ)器利用這笫二種獲得自由的實(shí)現(xiàn),“偷用存儲(chǔ)器”不要求對(duì)任何S/88源碼進(jìn)行重新匯編或者連接S/88OS的核心。自由表頭的地址對(duì)于應(yīng)用程序是可以利用的。
接通電源以及單機(jī)和伙伴單元21,23(圖49,50)的同步(S/88處理單元作為S/370處理單元的一種服務(wù)處理器)1.前言本節(jié)中將參照?qǐng)D49與50簡(jiǎn)要說(shuō)明用于諸如圖7中的21,23的伙伴單元的同步的確定環(huán)境的狀態(tài),以及控制和設(shè)置環(huán)境的某些硬件寄存器,鎖存器及邏輯電路。
此外還將說(shuō)明用于完成單機(jī)與伙伴單元的初始化,同步,與再同步的某些微碼功能。首先把注意力放在系統(tǒng)/88上(本較佳實(shí)施例),它在單機(jī)與結(jié)成伙伴單元的環(huán)境中的S/88處理單元的初始化與同步基本上並不改變的情況下進(jìn)行工作。這種操作方法將只作簡(jiǎn)要的說(shuō)明。此外里徳(Reid)專利中的某些有關(guān)描述將在此復(fù)述。
錯(cuò)誤檢驗(yàn)工作與單元21的各個(gè)S/88處理單元60,62(圖8)驅(qū)動(dòng)A總線42與B總線44的工作同時(shí)進(jìn)行。這一並發(fā)操作不同于處理器模塊9中的I/O單元,后者在驅(qū)動(dòng)總線結(jié)構(gòu)之前實(shí)現(xiàn)一個(gè)錯(cuò)誤檢驗(yàn)。處理單元21以這種方式操作是因?yàn)槎〞r(shí)在這里是十分重要的,任何操作上的延遲對(duì)于系統(tǒng)吞吐量來(lái)說(shuō)都是不能容忍的。檢驗(yàn)邏輯單元正在驅(qū)動(dòng)總線結(jié)構(gòu)時(shí)注意到一個(gè)錯(cuò)誤使該單元在系統(tǒng)時(shí)鐘的下一個(gè)相位向X總線46中發(fā)出一個(gè)A總線錯(cuò)誤信號(hào)與一個(gè)B總線錯(cuò)誤信號(hào)。
在同一個(gè)時(shí)間相位中,出故障的中央處理單元(例如21)向X總線46發(fā)出一個(gè)1級(jí)維護(hù)中斷,該中斷被伙伴中央處理單元(例如23)所接收。在這一時(shí)間相位的結(jié)尾,出故障的單元脫機(jī),變?yōu)槌嘶卮饋?lái)自伙伴中央處理單元的詢問(wèn)以外不能再向總線結(jié)構(gòu)30發(fā)出信號(hào)。這一自動(dòng)脫機(jī)操作保證了任何讀或?qū)懼芷诙急豢s短了,無(wú)論是對(duì)存儲(chǔ)器單元16,18或者是通過(guò)一個(gè)控制單元對(duì)一個(gè)外部設(shè)備的讀/寫(xiě),只要在該周期中在A總線或B總線上的地址或數(shù)據(jù)中檢測(cè)到一個(gè)錯(cuò)誤,自動(dòng)脫機(jī)操作都能縮其周期。此外,在該同一操作周期中的任何數(shù)據(jù)傳輸都只使用伙伴中央處理單元進(jìn)行重復(fù)。
具體地說(shuō),比較器12f對(duì)處理部分12a從A總線42所接收的輸入數(shù)據(jù)與處理部分12b從B總線44上接收的輸入數(shù)據(jù)進(jìn)行比較。它也對(duì)處理部分12a施加在收發(fā)器上的功能、地址與數(shù)據(jù)信號(hào)(包括奇偶校驗(yàn))與處理部分12b所生成的對(duì)應(yīng)信號(hào)進(jìn)行比較。部分12a的定時(shí)與控制信號(hào)與來(lái)自部分12b的對(duì)應(yīng)信號(hào)進(jìn)行比較。這一對(duì)內(nèi)部控制信號(hào)的比較操作檢驗(yàn)處理單元60,62的內(nèi)部操作並加速了故障檢測(cè),並且在處理器單元的診斷與維護(hù)中有用處。
任何時(shí)候只要輸入比較器12f的一個(gè)或多個(gè)輸入信號(hào)不一致,該比較器便生成一個(gè)施加到控制部件86上的Compare Error(比較錯(cuò)誤)信號(hào)。這一錯(cuò)誤可能是一個(gè)輸入數(shù)據(jù)錯(cuò)誤,一個(gè)輸出數(shù)據(jù)錯(cuò)誤,一個(gè)功能錯(cuò)誤或者一個(gè)地址錯(cuò)誤所造成的后果。它也可能是由于不同的定時(shí)或控制信號(hào)導(dǎo)致的一個(gè)周期錯(cuò)誤或者一個(gè)控制錯(cuò)誤。奇偶校驗(yàn)電路檢測(cè)到的一個(gè)錯(cuò)誤生成一個(gè)作用在控制部件86上的Parity Error(奇偶校驗(yàn)錯(cuò)誤)信號(hào)控制部件86響應(yīng)該Compare Iuvalid(比較元效)信號(hào)與ParityInvalid((奇偶校驗(yàn)無(wú)效)信號(hào),在下一個(gè)時(shí)鐘相位(N+1),生成一個(gè)Processor Error(處理器錯(cuò)誤)信號(hào)。這一操作的一個(gè)例外出現(xiàn)在當(dāng)在讀操作中由于對(duì)輸入數(shù)據(jù)信號(hào)的無(wú)效比較而造成CompareInvalid(比較無(wú)效)信號(hào)時(shí),在這一情況下,只有當(dāng)沒(méi)有BusError(總線錯(cuò)誤)信號(hào)在下一定時(shí)相位生成時(shí),控制部件86才生成Processor Error(處理器錯(cuò)誤)信號(hào)。一個(gè)Bus Error(總線錯(cuò)誤)信號(hào)表明總線結(jié)構(gòu)30中的一個(gè)故障狀態(tài)從而說(shuō)明輸入數(shù)據(jù)的無(wú)效比較是總線結(jié)構(gòu)30的A總線部分或B總線部分的一個(gè)故障的后果而不是兩個(gè)處理部分12b中之一的故障。Processor Error(處理器錯(cuò)誤)信號(hào)的一個(gè)功能是阻塞邏輯電路,從而基本上停止單元21的處理部分12中的所有操作。此外,A Bus Error(A總線錯(cuò)誤)信號(hào)及B Bus Error(B總線錯(cuò)誤)信號(hào)是作用在X總線46上向模塊9中的所有單元發(fā)信號(hào),通知它們忽略緊接著前一個(gè)相位放置在該總線上的信息,例如忽視CPU總線傳輸。施加到X總線46一個(gè)1級(jí)中斷信號(hào)通知伙伴處理單元23在該模塊中的某單元上檢測(cè)到一個(gè)故障生成的錯(cuò)誤。
在該相位(N+2)開(kāi)始時(shí),部件86,仍然在響應(yīng)該故障信號(hào)中,它中止確認(rèn)了的總線主控狀態(tài)。這一行動(dòng)是伴隨著總線錯(cuò)誤信號(hào)的中止而發(fā)生的。當(dāng)處理部分12關(guān)掉主控狀態(tài)時(shí),它阻塞了收發(fā)器12e中的所有總線驅(qū)動(dòng)器。每當(dāng)收發(fā)器12e的總線驅(qū)動(dòng)器被阻塞時(shí)S/370收發(fā)器13驅(qū)動(dòng)器也通過(guò)公共控制75被阻塞。同樣,在單元21的控制部分75生成一個(gè)處理器錯(cuò)誤信號(hào)的情況下,收發(fā)器12e(通過(guò)控制部件86)以及收發(fā)器13也被阻塞。
從而,只有在主控狀態(tài)中處理單元21,23才能驅(qū)動(dòng)總線結(jié)構(gòu),這是因?yàn)橹骺貭顟B(tài)是生成作用在驅(qū)動(dòng)器上的總線啟動(dòng)(BusEnable)信號(hào)時(shí)的必要狀態(tài),處理器錯(cuò)誤信號(hào)迅速地,即在笫二個(gè)定時(shí)相位的結(jié)尾,關(guān)掉主控狀態(tài)。在單元21的處理部分12生成一個(gè)處理器錯(cuò)誤信號(hào)的情況下,伙伴單元23的S/88處理部分基本上不中斷地繼續(xù)操作。當(dāng)在一個(gè)寫(xiě)操作中出現(xiàn)處理器錯(cuò)誤信號(hào)時(shí),伙伴處理單元23重復(fù)這一數(shù)據(jù)傳輸。當(dāng)在一個(gè)讀操作中出現(xiàn)處理錯(cuò)誤時(shí)時(shí),伙伴單元讀入重復(fù)數(shù)據(jù)。該數(shù)據(jù)是存儲(chǔ)器在接下來(lái)的定時(shí)相位上施加在總線結(jié)構(gòu)上的。
此外,伙伴處理單元23響應(yīng)1級(jí)中斷(這是一個(gè)低優(yōu)先級(jí)中斷)啟動(dòng)一個(gè)診斷例程。在處理器錯(cuò)誤的原因表現(xiàn)為一種暫時(shí)現(xiàn)象的情況下,即,診斷例程并不標(biāo)識(shí)或定位任何故障或錯(cuò)誤狀態(tài)的情況下,處理單元21可以不經(jīng)維護(hù)便恢復(fù)操作。在一個(gè)較佳實(shí)施例中,記錄瞬時(shí)故障的發(fā)生,如果這一故障重復(fù)出現(xiàn)了一個(gè)任意的予定次數(shù)以后,便將處理器從服務(wù)或操作中電氣地拆除而不再對(duì)它進(jìn)行診斷。
單元21,23的各個(gè)處理部分12通常在處理器狀態(tài)與控制部件86中包括有邏輯電路,這些邏輯電路用于使兩個(gè)伙伴單元進(jìn)入步調(diào)一致的同步中。部分12與轉(zhuǎn)移到主控狀態(tài)同時(shí)獲得步調(diào)一致的同步,各部分12必須在主控狀態(tài)中才能將信號(hào)發(fā)送到總線結(jié)構(gòu)上,存儲(chǔ)在各PROM181中的初始化序列典型地包括用于使結(jié)成伙伴的部分進(jìn)入同步以及保證初始時(shí)(即剛接通電源時(shí))沒(méi)有一個(gè)處理部分是在主控狀態(tài)中的指令。
開(kāi)始時(shí),在初始化序列中單元21,23的處理部分16並不同步,而是一個(gè)單元先于另一單元在一個(gè)多相周期中達(dá)到主控狀態(tài)。得到主控狀態(tài)的一個(gè)單元控制另一個(gè)單元的進(jìn)一步初始化操作,以在一個(gè)選定的時(shí)間將其帶進(jìn)主控狀態(tài)中。
當(dāng)單元21的處理部分12被初始化時(shí),它將一個(gè)內(nèi)部ErrorCheck(錯(cuò)誤檢驗(yàn))信號(hào)求反,從而防止一個(gè)奇偶校驗(yàn)無(wú)效信號(hào)或一個(gè)比較無(wú)效信號(hào)生成一個(gè)處理器停頓(Procssor Hold)信號(hào)。反之,部分12執(zhí)行一般存儲(chǔ)在PROM181中的一個(gè)測(cè)試?yán)?,該例程測(cè)試所有能生成處理器錯(cuò)誤信號(hào)的條件。由于各種潛在的故障條件都被建立了,處理部分借此來(lái)測(cè)試是否對(duì)應(yīng)的故障報(bào)告信號(hào)是真的生成的。因此錯(cuò)誤檢驗(yàn)信號(hào)的不存在禁止了處理單元得到主控狀態(tài),其結(jié)果是在這一邏輯測(cè)試?yán)讨兴傻墓收蟻K不停止該處理單元也不報(bào)告給總線結(jié)構(gòu)30。在PROM181中的測(cè)試?yán)陶J(rèn)定該錯(cuò)誤檢驗(yàn)信號(hào)並且只有在這一測(cè)試?yán)坛晒ν瓿蓵r(shí)才使處理器承擔(dān)主控狀態(tài)。
S/370處理單元有(就本較佳實(shí)施例而言)在一般情況下通過(guò)一個(gè)“后門(mén)”存取來(lái)做初始化與服務(wù)性處理器功能的硬件,“后門(mén)”存取是指存取各種部件與各個(gè)片子上的邏輯電路。由于這些都是眾所周知的,將只對(duì)它們作簡(jiǎn)要說(shuō)明。
同樣,用于自檢與初始化的程序例程也是眾所周知的而不需要詳細(xì)說(shuō)明。本節(jié)所要強(qiáng)調(diào)的是這樣一種機(jī)構(gòu),借此,典型的S/370自檢與初始化是通過(guò)S/88完成的而S/370或S/88操作系統(tǒng)都不知這種變化。在本較佳實(shí)施例中,S/370的自檢與初始化例程(STIR)是與對(duì)S/370中結(jié)成伙伴的單元中的處理單元實(shí)施同步的例程一起放置在PROM181中的(圖19C)。所以S/88作為S/370的服務(wù)處理器工作。在PROM181中的S/88代碼的存儲(chǔ)器映射的I/O分配是提供來(lái)在執(zhí)行S/370代碼時(shí)需要某些S/88狀態(tài)或其它寄存器內(nèi)容時(shí)使用的。
使這一代碼進(jìn)入同步的方式是指將笫一個(gè)(主)伙伴處理單元(例如21,在正常操作著的一個(gè))中的寄存器組的存儲(chǔ)器映射付本傳送給笫二(輔)處理單元(例加23,還沒(méi)有正常操作的一個(gè))中的寄存器組。
在詳細(xì)說(shuō)明用于同步機(jī)構(gòu)的S/88至S/370耦合路徑以前,先給出圖7中模塊9的結(jié)構(gòu)與環(huán)境的一個(gè)簡(jiǎn)要回顧。S188操作系統(tǒng)的特色例如容錯(cuò)與單一系統(tǒng)映象在S/88與S/370結(jié)構(gòu)中都得到了保留。模塊9由一個(gè)或多個(gè)單機(jī)S/370處理單元(例如21)或伙伴S/370處理單元對(duì)(例如21,23)組成。S/88單機(jī)或伙伴單元例如12或14可以包括在模塊中只用于執(zhí)行S/88程序。
各S/370處理單元包含一對(duì)S/370處理器單元例如85,87及一對(duì)S/88處理器單元例如62,64,如圖7所示;並且這些處理器對(duì)步調(diào)一致地操作,如同一個(gè)單一的邏輯處理單元一般。伙伴單元構(gòu)成一個(gè)互相步調(diào)一致地操作冗余以提供完全容錯(cuò),自檢的邏輯處理單元設(shè)計(jì)。
一對(duì)中的每一S/370處理器單元85,87有一部分是用一個(gè)S/370芯片組例如150構(gòu)成的(圖11)。S/370芯片組與它們的相關(guān)硬件被安裝在一個(gè)S/88型的插件板上,例如101(圖9A),用于與S/88總線結(jié)構(gòu)30耦合;並且它們通過(guò)接口邏輯電路89與91(圖8)與各自的S/88處理單元耦合。在本節(jié)中,一個(gè)處理單元(例如21)中的S/370芯片組對(duì)與它們相關(guān)的硬件而言將稱作為一個(gè)S/370實(shí)體;而它們對(duì)應(yīng)的S/88處理單元(例如60,62)與相關(guān)的硬件將被稱為一個(gè)S/88實(shí)體。S/370實(shí)體執(zhí)行S/370應(yīng)用程序並在必要時(shí)調(diào)用S/88實(shí)體去完成S/370I/O操作,這些I/O操作是使用S/88I/O設(shè)備與程序來(lái)執(zhí)行的,而S/88與S/370操作系統(tǒng)互不知道對(duì)方的存在。
2.容錯(cuò)硬件同步S/88-S/370處理單元的較獨(dú)特與突出的特性之一便是任何處理單元(例如21),根據(jù)其當(dāng)前正在工作的伙伴23來(lái)確定自身的同步。各單元的S/88實(shí)體具有能力並負(fù)責(zé)對(duì)一個(gè)新的或產(chǎn)生了錯(cuò)誤的伙伴進(jìn)行同步。當(dāng)一個(gè)單元的一個(gè)S/88實(shí)體承擔(dān)這一貴任時(shí),它被稱作“主實(shí)體”。它的被同步的伙伴則稱作“從屬實(shí)體”。
S/88硬件/固件結(jié)構(gòu)確定什么時(shí)候需要同步和由誰(shuí)對(duì)準(zhǔn)進(jìn)行同步?;ミB的S/88-S/370硬件/固件使用這一相同智能在同步確定中服從S/88的領(lǐng)導(dǎo)。即,每當(dāng)S/88確定一個(gè)S/88(從屬)實(shí)體需要與其伙伴(主實(shí)體)同步時(shí),這一同步被允許進(jìn)行到S/88從屬實(shí)體被“分離”后的一個(gè)適當(dāng)?shù)狞c(diǎn)上;然后執(zhí)行被轉(zhuǎn)移到對(duì)應(yīng)的S/370實(shí)體上。S1370實(shí)體被來(lái)自PROM181的S/88PE執(zhí)行代碼所同步以獲得S/370主控狀態(tài)並在兩個(gè)S/370伙伴上恢復(fù)這一狀態(tài)。
在處理單元的同步中伙伴對(duì)中任何一個(gè)都可能擔(dān)當(dāng)主實(shí)體或從屬實(shí)體的角色,不論這一要求是由一個(gè)初始電源接通,一個(gè)新伙伴的出現(xiàn),或者從導(dǎo)致兩個(gè)存在的伙伴失去同步的一個(gè)錯(cuò)誤狀態(tài)中恢復(fù)時(shí)所提出的(在每一情況中迫使一個(gè)維護(hù)中斷)。在每一情況中,S/88從屬實(shí)體知道自己的地位,並在同步中依賴S/88主實(shí)體。
S/88主實(shí)體與從屬實(shí)體根據(jù)維護(hù)中斷發(fā)出時(shí)它們各自的狀態(tài)扮演它們各自的角色。所有處理單元的S/88實(shí)體各自認(rèn)為自己是一個(gè)從屬實(shí)體來(lái)檢測(cè)和處理這一中斷直到建立起一個(gè)補(bǔ)缺的主實(shí)體。這一主實(shí)體然后將任何掌握的從實(shí)體放進(jìn)一致的步調(diào)中,各實(shí)體重新取得主實(shí)體的優(yōu)先占用環(huán)境(從中斷返回時(shí))類似地,S/88實(shí)體將處理器從其它邏輯中解耦,使用這些處理器仿真S/370SP功能借此在S/370伙伴對(duì)中建立一個(gè)完全一樣的優(yōu)先占用狀態(tài),然后重新建立正常執(zhí)行環(huán)境並允許S/370伙伴對(duì)開(kāi)始以一致的步調(diào)執(zhí)行。
不需要同步的一種情況一個(gè)單機(jī)處理單元被接通電源,即單個(gè)的單元例如21;需要同步的情況是雙聯(lián)的處理單元(例如,21,23)被接通電源;在其伙伴23正常處理中插入一個(gè)單元21;以及一個(gè)處理單元例如21在其伙伴23中檢測(cè)到一個(gè)比較故障並企圖進(jìn)行恢復(fù)。
S/88實(shí)體具有適當(dāng)?shù)挠布O(shè)施用于建立同步。S/370處理部分具有足夠的硬件和軟件協(xié)助使一個(gè)從實(shí)體能被初始化為與主實(shí)體完全相同的狀態(tài)。這包括這樣一些特性如讀/寫(xiě)狀態(tài)寄存器,可讀形式寄存器,可清高速緩沖存儲(chǔ)器,可停時(shí)鐘以及環(huán)形計(jì)數(shù)器等。
當(dāng)單元21中正常操作中的一個(gè)S/370實(shí)體被要求與其伙伴單元23中的對(duì)應(yīng)S/370實(shí)體同步時(shí),必須使伙伴S/370實(shí)體進(jìn)入與正常操作中的實(shí)體相同的狀態(tài)。在本較佳實(shí)施例中這一進(jìn)程被簡(jiǎn)化為從S/88處理器60,62(在PROM181中的S/370初始化與同步微碼的控制下)向S/370處理器85,87送一個(gè)Queue Select Up(隊(duì)列選取)消息。這一消息停止用戶應(yīng)用程序在同步時(shí)間內(nèi)通過(guò)操作系統(tǒng)向BCU(例如156)提出更多的服務(wù)請(qǐng)求。它同時(shí)允許執(zhí)行完成所有未完成的I/O操作。
這將正常操作中的S1370實(shí)體帶入一種狀態(tài),這種狀態(tài)被復(fù)制到存儲(chǔ)器162中供兩個(gè)S1370實(shí)體在“離開(kāi)”時(shí)使用。這時(shí),在S1370處理器,S1370高速緩沖存儲(chǔ)器,DLAT,及S1370總線適配器中的所有寄存器,計(jì)數(shù)器,指針及緩沖區(qū)(上下文)被復(fù)制到存儲(chǔ)器162中的一個(gè)有序棧中。當(dāng)同步進(jìn)程被啟動(dòng)時(shí),所有4臺(tái)物理處理器都從這一公共棧中將這些上下文裝入所有4臺(tái)處理器中而恢復(fù)該S1370上下文。兩臺(tái)處理器將在它們的寄存器,計(jì)數(shù)器與緩沖區(qū)中裝入相同的數(shù)據(jù),然后開(kāi)始步調(diào)一致地或者完全同步執(zhí)行程序。
S/370處理實(shí)體提供兩種方法來(lái)同步地訪問(wèn)各個(gè)寄存器和高速緩沖存儲(chǔ)器。一種是正常的用戶編程讀/寫(xiě)方法,它利用了把BCU本地?cái)?shù)據(jù)總線223耦合到適配器154的通道0,1上的寄存器560和561(圖4)。另一種是一個(gè)串行“后門(mén)”集成支持設(shè)施(ISF)/通用支持接口(USI)(540,541)方式。通過(guò)模仿S/370芯片組服務(wù)處理器的串行接口/協(xié)議(ISF/USI),S/88實(shí)體的同步機(jī)構(gòu)可訪問(wèn)任何和所有與S/370連結(jié)的裝置。當(dāng)需要一個(gè)或多個(gè)S/370實(shí)體同步時(shí),可采用兩種方法。正常通路存在時(shí)就采用正常通路,否則就采用USI通路。
值得注意的是,此部分的同步和初始化(對(duì)于S/370實(shí)體而言)相對(duì)于S/88操作系統(tǒng)必須是透明的,該操作系統(tǒng)不知道S/370實(shí)體的存在或?qū)ζ涞穆?lián)接。實(shí)成這種透明方式大致類似于上述的S/370I/O操作中的情況。就是說(shuō),圖20中的地址譯碼邏輯280在每次要進(jìn)行S/88處理器62與圖49的邏輯之間的傳輸時(shí)檢測(cè)一個(gè)地址007EXXXX。當(dāng)邏輯280對(duì)該地址譯碼時(shí),如前面講過(guò)的一樣,它將S/88處理器總線161A,161D通過(guò)電路217,218耦合到本地BCU地址和數(shù)據(jù)總線247,223。寄存器地址譯碼邏輯562對(duì)總線247上的地址的低位譯碼,來(lái)選擇邏輯電路549,550或寄存器560,561中的一個(gè),以便對(duì)處理器62進(jìn)行數(shù)據(jù)傳送。
另外,線562,563上的中斷信號(hào)通過(guò)或電路292a送到圖20中的S/88中斷邏輯212。當(dāng)邏輯549已經(jīng)接到S/370芯發(fā)出的要傳往處理器62的數(shù)據(jù)時(shí),在線562上開(kāi)啟中斷請(qǐng)求信號(hào)。線563上的一個(gè)中斷請(qǐng)求信號(hào)通知處理器62從邏輯550至S/370芯片的數(shù)據(jù)傳送已經(jīng)完成。線562上的一個(gè)中斷請(qǐng)求信號(hào)通知處理器62邏輯549已經(jīng)從S/370芯片接收到要向處理器62傳送的數(shù)據(jù)。這些中斷請(qǐng)求在線258d和258c上分別出現(xiàn)一個(gè)IACK信號(hào)之前一直保持在線562和563上。當(dāng)圖20中的IACK信號(hào)258d和258e分別觸發(fā)邏輯564和565時(shí),則從中得到這些中斷的向量數(shù)。處理元件62利用該向量數(shù)分別訪問(wèn)中斷處理子程序。
圖49的S/370集成支持設(shè)施(ISF)540給芯片組150的邏輯提供一個(gè)“后門(mén)”項(xiàng)目。ISF包括一個(gè)與線支持總線541,它與芯片85和151-154上集成的單元支持接口(USIS)相連。圖49表示了芯片85上的USI542的一部分。
支持總線541代表了一個(gè)有下面與線的串行接口
BIT OUT(到芯片組的數(shù)據(jù))線543BIT IN(來(lái)自芯片組的數(shù)據(jù))線544ADDRESSMODE(控制)線545SHIFT GATE(控制)線546SET·PULSE(控制)線547ADDR-MODE線545在BIT OUT/BITIN線543,544上發(fā)出串行傳輸位(高位)或數(shù)據(jù)位(低位)的信號(hào)。線543,544是移位寄存器(例如邏輯549,550中的芯片內(nèi)的548和外部移位寄存器)之間的聯(lián)結(jié)。施加到移位選通線546上的脈沖數(shù)決定了內(nèi)部寄存器548和外部寄存器549,550之一間的移位數(shù)。
SET PULSE用來(lái)按照剛移入芯片的地址和數(shù)據(jù)模式來(lái)同步芯片內(nèi)的操作。在移位結(jié)束之后啟動(dòng)SET PULSE,以通知在芯片這一邊(如寄存器548中)可以得到信息。這意味著此刻可以按該信息開(kāi)始動(dòng)作。
下列說(shuō)明了該操作。對(duì)一特定地址模式指定一個(gè)開(kāi)始功能。該地址被移入寄存器(如每個(gè)芯片中的548)。當(dāng)所有地址位已經(jīng)傳送之后,芯片之一中的地址譯碼551檢測(cè)其地址。SET PULSE跟隨該地址傳送之后出現(xiàn)。地址譯碼和SET PULSE在門(mén)55552的輸出輸形成一芯片內(nèi)部啟動(dòng)脈沖。
USI的芯片具體部分包括從具體芯片設(shè)計(jì)中獲得的控制和數(shù)據(jù)鏈。為了保持存儲(chǔ)元件當(dāng)前狀態(tài)不被移位操作影響,在開(kāi)始任何USI活動(dòng)之前必須停止功能時(shí)鐘。需要有時(shí)鐘停頓條件的USI訪問(wèn)被定義為“靜態(tài)”。芯片處于操作時(shí)所能執(zhí)行的操作是動(dòng)態(tài)訪問(wèn)或功能。
SET PULSE用來(lái)同步芯片內(nèi)部時(shí)序的功能。根據(jù)SERDES寄存器中的地址模式和數(shù)據(jù)模式對(duì)功能進(jìn)行譯碼,另外由ADDR MODE線(地址或數(shù)據(jù)方式)選通將芯片狀態(tài)置成SERDES將模式寄存器置成SERDES從SERDES裝入模式寄存器置支持傳送請(qǐng)求鎖存器(SPR)處理器控制的請(qǐng)求鎖存器(PCR)清零支持單個(gè)芯片所需的附加動(dòng)態(tài)功能。
ISF的五線串行總線541(它提供對(duì)S/370芯片組150內(nèi)的各種可編程實(shí)體的“后門(mén)”訪問(wèn))耦合到每個(gè)芯片的USI,例如芯片85的USI542。USI542提供一個(gè)8位地址寄存器566和一個(gè)8位并串轉(zhuǎn)換器/串并轉(zhuǎn)換器(SERDES)548。當(dāng)SERDES548是實(shí)際接/收機(jī)構(gòu)時(shí),USI地址寄存器566接收芯片的地址和芯片中目標(biāo)實(shí)體的地址。USI為移入/移出機(jī)構(gòu)提供同步邏輯。
S/370芯片組150內(nèi)的每個(gè)芯片都被指定了一個(gè)4位(高位)ISF/USI地址,例如對(duì)于PE85,高速緩沖存儲(chǔ)器控制器153,時(shí)鐘152,適配器154,浮點(diǎn)協(xié)同處理器151和STCI155各組被指定了十六進(jìn)制值2,4,6,8和A及B。ISF/USI地址的低4位定義了低4位編址的內(nèi)部芯片實(shí)體(例如寄存器,功能和鏈)。
通訊模式包括移位鏈(也稱功能鏈),移位鏈又包括識(shí)別芯片內(nèi)的命令,源芯片,目的芯片,數(shù)據(jù)和目標(biāo)實(shí)體的字段。移位鏈如下位0-7功能/命令8-11 源(控制)單元12-15 目標(biāo)(受檢/受控)單元16-23 信息/數(shù)據(jù)24-27 受控(被寫(xiě)入)寄存器28-31 受檢(讀)寄存器這些功能鏈稱為移位鏈?zhǔn)且驗(yàn)镮SF/USI的串行持性和鏈必須從邏輯549,550和SERDES寄存器(例如548)移入移出。
功能鏈的命令字段可包括寫(xiě)/控制命令(E61)或讀/檢測(cè)命令(F61)。一個(gè)功能鏈的例子如下E602XX10=寫(xiě)入處理器85的模式寄存器。
其中E6=命令=寫(xiě)入0=源地址-PE62,用于檢測(cè)2=目標(biāo)-PE85XX=信息(數(shù)據(jù))1=受控寄存器(模式寄存器)0=檢測(cè)寄存器(由于命令是“寫(xiě)”,所以沒(méi)有)建立此處所述的同步的方法利用了存于PROM181中的S/88程序碼。該碼聯(lián)系每個(gè)上述四種條件作出決定并相應(yīng)地置標(biāo)志位。同步子程序使用這些標(biāo)志控制編碼通路,以便執(zhí)行適當(dāng)同步和/或初始化操作。幾個(gè)例子如下確定一個(gè)特定S/88板上的存儲(chǔ)器是否已被一個(gè)電源故障所危害并需要其伙伴重新初始化。
確定一個(gè)特定S/88板是否應(yīng)當(dāng)承擔(dān)缺席的處理單元(DMPU)的任務(wù)。
下面3-6部分說(shuō)明兩個(gè)不同的同步機(jī)構(gòu)的執(zhí)行原理。一個(gè)是硬件協(xié)助的,并允許快速的“時(shí)間-準(zhǔn)備好”(time-to-ready)過(guò)程。該方式當(dāng)然需要至少在S/370實(shí)體中的附加控制電路,通過(guò)把一些S/88控制電路物理地暴露給S/370“接口”還可以擴(kuò)展其已定義過(guò)的能力。這個(gè)接口實(shí)際上是S/370電路對(duì)S/88電路的附加部件。
所定義的另一執(zhí)行方式只是微碼,允許S/88處理器單元模仿一個(gè)S/370服務(wù)處理器,進(jìn)行S/370同步處理。當(dāng)性能和“時(shí)間-準(zhǔn)備好”并不十分重要時(shí)可采用此技術(shù)。
3.一個(gè)單工處理單元被接至電源(硬件執(zhí)行)。
下面兩種條件皆可引起此情況1.開(kāi)機(jī)/引導(dǎo)的結(jié)果使此單元聯(lián)機(jī)。
2.電源故障恢復(fù)引至該單元聯(lián)機(jī)。
對(duì)每種條件,編碼通路都一樣單元21的S/88實(shí)體執(zhí)行其自檢和初始化子程序(STIR)的一部分、然后試圖確定是否其相關(guān)存儲(chǔ)器16的內(nèi)容已經(jīng)被危害(電源故障)。如果如此,它便回到開(kāi)機(jī)STIR通路。如果不是,它試圖確定是否有一個(gè)伙伴或協(xié)作駐留處理單元(它可以是DMPU)。如果發(fā)現(xiàn)了一個(gè),它將承擔(dān)DMPU的責(zé)任并試圖同步其他任何處理單元。
單元21的S/370實(shí)體僅僅跟隨S/88實(shí)體。這是由S/88處理器62所保障的,它執(zhí)行S/88PROM181中的碼,完成正常自檢,確定這是一個(gè)初始開(kāi)機(jī)或是一個(gè)電源故障恢復(fù)。如果是一個(gè)開(kāi)機(jī),它繼續(xù)正常初始化,然后承擔(dān)DMPU,試圖發(fā)出一個(gè)SYNC信號(hào)。該信號(hào)由S/370邏輯俘獲,它強(qiáng)制S/88處理器進(jìn)行第6級(jí)中斷。該中斷6將指向S/88PROM181(圖19A)中的S/370同步微碼(它被映射在S/88的地址空間)。
同時(shí),從開(kāi)機(jī)/引導(dǎo)開(kāi)始,S/370PE已經(jīng)執(zhí)行其自己的STIR,然后在其同步點(diǎn)暫停其執(zhí)行。在此時(shí),S/370時(shí)鐘152也已經(jīng)對(duì)自己初始化。S/88笫6級(jí)中斷服務(wù)子程序(ISS)(即S/370同步微碼)利用圖44的ISF/USI接口模仿S/370服務(wù)處理器。該SP仿真器將發(fā)出功能串,請(qǐng)求S/370控制存儲(chǔ)器171的IML功能,盡管沒(méi)有實(shí)際碼傳送發(fā)生(微碼是在S/88PROM181中)。IML仿真的下一步是把SYNC送到S/370實(shí)體(處理器85和87),使處理單元開(kāi)始執(zhí)行。ISS的最后一步是中斷返回,處理單元以開(kāi)始執(zhí)行IPL狀態(tài)。
作為S/88處理單元“模塊開(kāi)始命令”執(zhí)行的一部分,一個(gè)仿真服務(wù)處理器的“IPL按鈕按下”功能串將被送到S/370處理單元以執(zhí)行IPL功能,從盤(pán)中裝入S/370主存儲(chǔ)器。然后IPL的最后步驟是把控制交給由位置0定義的地址。
B.只用微碼的實(shí)施單元21的S/88實(shí)體執(zhí)行其自檢,初始化子程序(STIR)然后確定這是初始開(kāi)機(jī)(IPO還是電源故障恢復(fù)(PFR),如果是IPO,該碼確定單元21是單工實(shí)體,并開(kāi)始裝入操作系統(tǒng),執(zhí)行其“開(kāi)始”子程序。
如果是PFR,該碼確定是否其相關(guān)存儲(chǔ)器的完整性已受到危害,如果是這樣,則把它假定為IPO的情況。如果發(fā)現(xiàn)存儲(chǔ)器內(nèi)容完整無(wú)損,PFR進(jìn)行正常重起動(dòng)任務(wù)。
無(wú)論上述哪種情況,同步功能開(kāi)始一種“虛”操作,正像沒(méi)有相關(guān)伙伴要同步一樣。
4.雙工處理單元21,23開(kāi)機(jī)(硬件實(shí)施)下面任一種條件都可引起該情況1.開(kāi)機(jī)/引導(dǎo)使這些單元聯(lián)機(jī)。
2.電源故障恢復(fù)導(dǎo)致這些單元聯(lián)機(jī)。
每個(gè)處理單元21,23的S/88實(shí)體執(zhí)行其自檢的和初始化子程序(STIR)的一部分,然后試圖確定是否其相關(guān)存儲(chǔ)器16的內(nèi)容受到危害(電源故障狀態(tài))。如果是,它將回到正常開(kāi)機(jī)STIR通路。如果不是,它將試圖確定它有無(wú)一個(gè)伙伴或協(xié)作留駐的處理單元(可以是DMPU)或確定它是不是DMPU。如果是,它將承擔(dān)DMPU的責(zé)任,試圖同步任何其它處理單元。如果不是DMPU,它將進(jìn)行到同步點(diǎn)并等待SYNC。
每個(gè)S/370實(shí)體僅僅跟隨S/88實(shí)體的引導(dǎo)。S/88實(shí)體執(zhí)行PROM181中的碼,完成正常自檢,然后確定這是一個(gè)開(kāi)機(jī)還是一個(gè)電源故障恢復(fù)。如果是開(kāi)機(jī),它繼續(xù)正常初始化,然后進(jìn)入同步點(diǎn)。如果是電源故障恢復(fù),檢查高速緩沖存儲(chǔ)器,確定它是否有效。如果是,則在其伙伴的高速緩沖存儲(chǔ)器無(wú)效時(shí),可能要更新其伙伴的存儲(chǔ)器。如果其自身的高速緩沖存儲(chǔ)器無(wú)效,則要依賴伙伴,用有效高速緩存儲(chǔ)器內(nèi)更新。如果伙伴也不保證有效存儲(chǔ)器,作為一對(duì),它們必須繼續(xù)正常開(kāi)機(jī)和初始化。當(dāng)處理單元對(duì)的S/88實(shí)體接近同步時(shí),每個(gè)S/88實(shí)體確定它是否必須承擔(dān)DMPU的責(zé)任。如果發(fā)現(xiàn)它是DMPU,則試圖發(fā)出SYNC。
S/370邏輯俘獲該同步信號(hào)并強(qiáng)制給S/88實(shí)體一個(gè)六級(jí)中斷。該中斷將指向PROM181的S/370同步微碼(它映射進(jìn)S/88地址空間)。同時(shí),根據(jù)開(kāi)機(jī)/引導(dǎo),S/370實(shí)體(如處理元件85,87)已經(jīng)執(zhí)行它自己的STIR,然后在其同步暫停。如果是一個(gè)電源故障恢復(fù),S/370實(shí)體通過(guò)一個(gè)與S/88實(shí)體過(guò)程類似的過(guò)程,判斷它回到初始化子程序必須走多遠(yuǎn),以便保證存儲(chǔ)器完整性和同步。在此期間,S/370時(shí)鐘153已對(duì)自身初始化。
參照?qǐng)D20,49,50,下面將簡(jiǎn)單說(shuō)明S/370處理器俘獲S/88SYNC脈沖的最佳機(jī)構(gòu)。
圖50中,單元23的處理器S/88對(duì)之一發(fā)出SYNCOUT信號(hào),使S/88處理器完成同步。如果伙伴已經(jīng)被初始化和自檢,并被確定沒(méi)有BROKEN,它則有一個(gè)BROKEN線571上的信號(hào)電平,電路572對(duì)它反相,通過(guò)“與非”門(mén)573對(duì)SYNC OUT信號(hào)選通。
在原系統(tǒng)88(例如模塊10)中,通過(guò)線577和反相器574,SYNC信號(hào)被送到單元14的驅(qū)動(dòng)S/88處理器的SYNC IN線580,通過(guò)C總線和反相器576它還被送給單元12的檢查S/88處理器的SYNC IN線575,以使鎖定步驟中單元12,14的所有四個(gè)S/88處理器“啟動(dòng)”。
在改善的S/370-S/88單元(如21,23)中,電路573的輸出577與SYNCIN線580及575斷開(kāi)以防止S/88處理器的“啟動(dòng)”,但是它通過(guò)線581與圖49中伙伴單元21的BCU156中的觸發(fā)器582相連,對(duì)其進(jìn)行置位,它還對(duì)單元21中的成對(duì)BCU(未畫(huà)出)中一個(gè)相應(yīng)觸發(fā)器置位。下面將僅說(shuō)明單元21中的一個(gè)S/370和相關(guān)硬件,但兩個(gè)S/370實(shí)體是以類似方式操作的。
觸發(fā)器582通過(guò)線583、“或”電路292a和292(圖20),中斷邏輯293和線IPO-2送給S/88處理器62一個(gè)六級(jí)中斷信號(hào)。該行為稱作S/370“俘獲”S/88SYNC信號(hào)。
現(xiàn)假定單元21S/370實(shí)體已經(jīng)成功地執(zhí)行了自檢和初始化子程序(STIR),并準(zhǔn)備對(duì)了“啟動(dòng)”。
正如在圖20中對(duì)其它DMAC和BCU六級(jí)中斷所述的一樣,S/88處理器62產(chǎn)生一個(gè)中斷確認(rèn)周期,以響應(yīng)線583上的SYNC信號(hào)。邏輯281對(duì)處理器62來(lái)的功能碼和優(yōu)先級(jí)信號(hào)碼,通過(guò)譯碼邏輯281的輸出283和門(mén)291,線287和“或”電路284在線190上產(chǎn)生一個(gè)本地BCU總線請(qǐng)求。
當(dāng)把一個(gè)總線周期授予線191上的處理器62時(shí),它與SYNC線583、AS線270和譯碼線283上的信號(hào)一起啟動(dòng)“與”門(mén)294-4,以把一個(gè)信號(hào)送給IACK線258f。該信號(hào)送給圖49的向量位邏輯584,通過(guò)BCU本地總線223,驅(qū)動(dòng)器接收218和處理器總線161D把適當(dāng)向量號(hào)送給S/88處理器62。線258f上的信號(hào)還對(duì)觸發(fā)器582復(fù)位。
如果像假設(shè)的那樣S/370STIR功能已經(jīng)完成,S/88處理器執(zhí)行一個(gè)讀周期去獲得向量號(hào),然后利用它訪問(wèn)S/370同步中斷例行程序的笫一條指令。
同步例行程序的最后一條指令產(chǎn)生把SYNC信號(hào)送到線586(圖50)的SYNC命令。
該信號(hào)送到SYNC線580和575,在鎖定步驟中,“啟動(dòng)”伙伴單元21,23的S/88(以及S/370)處理器。
作為執(zhí)行S/88“模塊起動(dòng)命令”的一部分,一個(gè)仿真SP“IML按鈕按下”功能串將被送給單元21,23中的S/370實(shí)體。與執(zhí)行DASD訪問(wèn)等等的全部IML功能不同,這個(gè)IML將旁路I/O過(guò)程并從S/88主存中裝入。E×EC370碼將已經(jīng)從DASD取出IPL碼,并存于S/88主存之中,等待IPL。IPL的最后步驟是對(duì)存儲(chǔ)單元“O”指定的地址進(jìn)行控制。
B.僅用微碼的實(shí)施作為初始開(kāi)機(jī)(IPO)的結(jié)果或是電源故障恢復(fù)(PFR)的結(jié)果,PU板被加電。
首先說(shuō)明IPO的情況當(dāng)IPO確定了S/88電源良好的信號(hào)之后,一個(gè)維持中斷就請(qǐng)求S/88PROM181碼。此碼對(duì)單元21的S/88實(shí)體進(jìn)行同步,然后調(diào)也存于PROM181中的S/370STIR。S/370STIR確定出這是一個(gè)IPO還沒(méi)有裝入足夠的設(shè)施使它能作初始化和同步,這是因?yàn)镾/370STIR需要S/88的設(shè)施和其操作系統(tǒng)來(lái)作初始化和同步。結(jié)果,S/370STIR不做任何事便回到S/88PROM181碼,該碼開(kāi)始對(duì)O/S進(jìn)行裝入。作為O/S初始化的一部分,調(diào)用一個(gè)“起動(dòng)”模塊,該模塊也調(diào)用存于PROM181中的S/370STIR。此時(shí),STIR確定需要的設(shè)施已可以使用了,并使用它住對(duì)初始微碼裝入本身進(jìn)行同步。
其次,對(duì)于PFR的情況作以下說(shuō)明IPO確定了S/88電源良好的信號(hào)之后,一個(gè)維持中斷請(qǐng)求S/88PROM181碼。此碼對(duì)單元21的S/88實(shí)體進(jìn)行同步,然后調(diào)用也存于PROM181中的S/370STIR。S/370STIR確定這是一個(gè)PFR,需要的設(shè)施已經(jīng)可用,并開(kāi)始對(duì)S/370或單元21進(jìn)行同步和初始化。
5.當(dāng)其它單元21正常處理時(shí)插入一個(gè)伙伴23。
A.硬作實(shí)施插入新板時(shí),一個(gè)六級(jí)中斷將送至當(dāng)前單元21的S/88實(shí)體。當(dāng)新處理單元運(yùn)行其STIR時(shí),當(dāng)前處理單元將識(shí)別該六級(jí)中斷。該六級(jí)中斷將著手對(duì)予占(Pre-empted)任務(wù)的環(huán)境存檔,確定新處理單元是否聯(lián)機(jī)。如果是,則從中斷返回。作為中斷返回功能,這兩個(gè)單元將進(jìn)行鎖步式的同步,恢復(fù)予占任務(wù)。
B.僅僅微碼實(shí)施作為新板插入的結(jié)果,一個(gè)維持中斷去請(qǐng)求S/88PROM181碼。該碼對(duì)單元21的S/88實(shí)體進(jìn)行再同步,然后調(diào)用亦存于PROM181中的S/370STIR。S/370STIR確定這與一個(gè)PFR類似,而且需要的設(shè)施可以使用,于是就開(kāi)始對(duì)單元21的S/370的初始化和同步操作。
6.伙伴發(fā)現(xiàn)了比較故障故障的處理單元將強(qiáng)迫進(jìn)入其STIR,而正常的處理單元將被強(qiáng)制六級(jí)中斷所中斷。該六級(jí)中斷服務(wù)子程序?qū)⒅职延枵既蝿?wù)環(huán)境存檔,確定新處理單元是否聯(lián)機(jī),如果是,則回到中斷。作為返回中斷功能,兩個(gè)單元將進(jìn)入鎖步式的同步,恢復(fù)予占任務(wù)。如果故障處理單元沒(méi)有正確退出其STIR(例如一次或幾次嘗試),正常工作的處理單元在一個(gè)適當(dāng)時(shí)間之后對(duì)故障處理單元的S/88部分和其各個(gè)狀態(tài)報(bào)告設(shè)施置BROKEN。
B.僅僅微碼實(shí)施由于發(fā)現(xiàn)了比較故障和板子松脫,一個(gè)維持中斷便請(qǐng)求S/88PROM181碼。該碼對(duì)單元21的S/88進(jìn)行再同步,然后調(diào)用亦存于PROM181中的S/370STIR。S/370STIR確定這類似于一個(gè)PFR,而且需要的設(shè)施可以使用,于是對(duì)單元21的S/370實(shí)體同步和初始化。另外的比較故障將使同樣的動(dòng)作重復(fù)。預(yù)定次數(shù)的重復(fù)之后,該板將永久脫機(jī),并報(bào)告故障。
替換方案1.在其它(非S/88)容錯(cuò)系統(tǒng)中的應(yīng)用在最佳實(shí)施例中,硬件容錯(cuò)至少有三個(gè)特征。故障字段可替代單元有瞬時(shí)電絕緣,使數(shù)據(jù)錯(cuò)誤不至于送到系統(tǒng)的其它部分。當(dāng)有必要時(shí)或元件故障時(shí)提供動(dòng)態(tài)再組合碼,以便去掉或加上一些元件。還提供了給子系統(tǒng)或字段可替代單元去掉電源和加上電源的能力而不失掉系統(tǒng),亦稱熱插入能力。用戶感覺(jué)不到丟失功能或性能。
該改進(jìn)可用于各種容錯(cuò)環(huán)境,例如用于缺乏一些上述嚴(yán)格要求的軟件容錯(cuò)系統(tǒng)之中。
一個(gè)例子是美國(guó)專利4356550“微處理機(jī)系統(tǒng)”(1982年授予James A.Kafman等)中所述的系統(tǒng)。在該專利的圖1中,三個(gè)處理子系統(tǒng)互相異步運(yùn)行,并與重復(fù)的總線耦合。如果一個(gè)子系統(tǒng)故障,其余的可繼續(xù)執(zhí)行程序。所有錯(cuò)誤都在檢驗(yàn)點(diǎn)確定,而不是像本申請(qǐng)最佳實(shí)例中瞬時(shí)判定。
處理器(如S/370處理器)不同于該專利的子系統(tǒng),它可以以類似于本申請(qǐng)與S/88有關(guān)的方式附加在所述子系統(tǒng)上。通過(guò)類似于本申請(qǐng)中對(duì)地址送通線(AS)所述的方式來(lái)使用和控制該發(fā)明中子系統(tǒng)的選擇線,可以斷開(kāi)子系統(tǒng)的處理器,允許它們作為寄生的附加的外部處理器的I/O控制器使用。
2.S/88I/O控制器和S/370主存之間的直接數(shù)據(jù)傳送在最佳實(shí)例中,可以假定高速緩存器340是用于存一些有效I/O數(shù)據(jù)的排它存儲(chǔ)器,而不是存所有有效I/O數(shù)據(jù)的存儲(chǔ)器,這與當(dāng)今典型S/370高速緩存器系統(tǒng)中情況一樣。在圖51中的實(shí)例中,存儲(chǔ)器162要存儲(chǔ)全部有效的I/O數(shù)據(jù),I/O數(shù)據(jù)傳送可以直接發(fā)生在一個(gè)S/88I/O裝置(例如盤(pán)控制器20)和S/370存儲(chǔ)器162之間,以便進(jìn)行更高效的操作。
但是在這個(gè)替代方案中,BCU15 6必須仍然被用于向S/88傳送S/370I/O命令。在把命令轉(zhuǎn)換成S/88命令的同時(shí),與命令相關(guān)的系統(tǒng)370存儲(chǔ)器地址必須被EXES370碼變換成S/88的地址。
在從存儲(chǔ)器162向I/O裝置傳送數(shù)據(jù)時(shí),在執(zhí)行I/O操作前,首先把與I/O操作有關(guān)的高速緩存器中的字節(jié)刷新到存儲(chǔ)器162中。
在從I/O向存儲(chǔ)器162傳送數(shù)據(jù)時(shí),在執(zhí)行I/O操作前,使與I/O操作有關(guān)的那部分高速緩存器無(wú)效。
如果需要數(shù)據(jù)轉(zhuǎn)換,可以通過(guò)與S/88處理器62中EXEC370所用的類似的程序在I/O設(shè)備控制器中執(zhí)行該功能。
應(yīng)用EXEC370調(diào)用S/88OS的轉(zhuǎn)換程序(如ASCII-EBCDIC轉(zhuǎn)換)也可以執(zhí)行數(shù)據(jù)轉(zhuǎn)換。
3。使直接連接的一對(duì)處理機(jī)脫鉤圖52說(shuō)明了一個(gè)替代方案的數(shù)據(jù)流,其中兩個(gè)直接連接的處理器都與它們各自相關(guān)的硬件脫開(kāi),其方式最好與最佳實(shí)例中的S/88處理器62的情況大致相似,以便在相對(duì)于操作系統(tǒng)透明的情況下在處理器之間傳送命令和/或數(shù)據(jù)。
兩個(gè)處理器640,641通過(guò)處理器總線642,643,驅(qū)動(dòng)器接收電路644,645和一個(gè)普通的本地存儲(chǔ)單元646相互連接。640和641可以有同樣或不同的體系結(jié)構(gòu)或操作系統(tǒng)。它們都可以有自己的硬件(未畫(huà)出),包括在各自操作系統(tǒng)控制之下供正常的程序處理用的主存和I/O裝置。兩個(gè)操作系統(tǒng)都不知道與其它操作系統(tǒng)相關(guān)的處理器的存在,也不與其相連接。
但是當(dāng)應(yīng)用程序控制該替代方案中的處理器640向處理器641送出命令和/或數(shù)據(jù)時(shí),640最好在處理器地址總線647上放一個(gè)預(yù)定地址,邏輯648對(duì)其進(jìn)行譯碼,使電路644把總線642通過(guò)本地總線652耦合到本地總線646上,以便從處理機(jī)640到存儲(chǔ)646傳送命令和數(shù)據(jù)。該地址的譯碼還使處理器640從其相關(guān)硬件脫開(kāi),使傳送操作對(duì)處理器640的操作系統(tǒng)透明。
當(dāng)處理器641所要接收的I/O命令和/或數(shù)據(jù)已進(jìn)入本地存儲(chǔ)器646時(shí),脫機(jī)控制邏輯649把處理器641中斷。處理器641通過(guò)它的應(yīng)用程序的中斷處理器)與自己的硬件脫離,並用對(duì)其操作系統(tǒng)透明的方式把命令和/或數(shù)據(jù)從存儲(chǔ)器646讀入主存(沒(méi)有示出)。如果需要對(duì)命令和/或數(shù)據(jù)轉(zhuǎn)換,處理器641用存儲(chǔ)器650中的仿真微碼執(zhí)行該轉(zhuǎn)換。然后處理器641在其操作系統(tǒng)控制下處理轉(zhuǎn)換后的命令。
在允許每個(gè)處理器與其硬件“再耦合”之前,處理器640和641最好允許來(lái)往于本地存儲(chǔ)器646連續(xù)地傳送實(shí)質(zhì)段命令和/或數(shù)據(jù),這樣便可實(shí)現(xiàn)快速高效的數(shù)據(jù)傳送。
命令和/或數(shù)據(jù)可以按類似方式反方向從處理器641向處理器640傳送,也可以在需要時(shí)由存儲(chǔ)器651中的仿真微碼對(duì)其進(jìn)行轉(zhuǎn)換。在操作系統(tǒng)的控制下,轉(zhuǎn)換后的命令可以在處理器640中進(jìn)行處理。
有一個(gè)很重要之處本替換方案不同于最佳實(shí)例,即產(chǎn)生數(shù)據(jù)傳送的處理器與其硬件脫開(kāi),以便向接收處理器發(fā)出數(shù)據(jù)。這就要求有附加功能對(duì)應(yīng)用程序進(jìn)行傳送控制,這與最佳實(shí)例的EXEC370/ETIO中要執(zhí)行一個(gè)I/O功能(向另一處理器傳送命令和/或數(shù)據(jù))時(shí)的情況相類似。
對(duì)從一個(gè)操作系統(tǒng)到一個(gè)應(yīng)用于程序的一些I/O操作的傳送控手段取決于系統(tǒng)的特征。
例如,在最佳實(shí)例中,S/370執(zhí)行一個(gè)起始I/O指令,操作系統(tǒng)對(duì)其以正常方式進(jìn)行處理,并不把S/370處理器從相關(guān)硬件脫開(kāi)。
在圖52中的替代方案中,當(dāng)S/370處理器640向處理器641送命令和/或數(shù)據(jù)時(shí),可能使用一個(gè)被選出的無(wú)效OPCODE,而不是一個(gè)起始I/O指命。硬件或者被選出的無(wú)效OPCODE的微碼的譯碼把控制傳送給一個(gè)特殊應(yīng)用程序,它使S/370與其硬件脫開(kāi),以便通過(guò)存儲(chǔ)器646與處理器641進(jìn)行信息傳送。
為了防止一個(gè)處理器對(duì)另一處理器已經(jīng)傳送了數(shù)據(jù)的存儲(chǔ)器646的重寫(xiě),可以控制處理器640僅僅向存儲(chǔ)器646的一個(gè)特定部分寫(xiě)入,并使處理器641僅僅從該部分讀出。處理器641只能向存儲(chǔ)器646的一個(gè)第二部分寫(xiě)入,并只允許處理器640從該第二部分讀出。640和641都分別不允許向笫二和第一部寫(xiě)入。
對(duì)于處理器640和641的操作系統(tǒng)而言,脫離和中斷機(jī)構(gòu)的操作是透明的,這與最佳實(shí)施例中的S/88處理器62的情況一樣。
仿真功能可以由應(yīng)用程序(而不是本地存儲(chǔ)器中的微碼)按照最佳實(shí)例中的EXEC370的方式實(shí)現(xiàn)。
也可以不用中斷機(jī)構(gòu)而用探詢技術(shù)進(jìn)行處理器640,641之間的數(shù)據(jù)傳送,但是這種技術(shù)效率不高。
由于處理器640和641都可以為對(duì)方執(zhí)行I/O操作,所以它們每個(gè)都可以獲得對(duì)方的一些I/O環(huán)境特征。
另外,不用任何一方處理系統(tǒng)中的操作系統(tǒng)的服務(wù),一個(gè)處理器中的應(yīng)用可以與另一處理器中同樣的或類似的應(yīng)用相通信。
本申請(qǐng)中的術(shù)語(yǔ)“應(yīng)用程序或碼”指的就是數(shù)據(jù)處理技術(shù)領(lǐng)域的人所理解的它的通常含義,它與操作系統(tǒng)碼的典型區(qū)別如下1.應(yīng)用程序位于操作系統(tǒng)的頂部,它必須調(diào)用操作系統(tǒng)進(jìn)行諸如讀、寫(xiě)、I/O控制、日期時(shí)間等等服務(wù)。
2.應(yīng)用碼是用戶啟動(dòng)或產(chǎn)生的,并通過(guò)操作系統(tǒng)的服務(wù)被裝入。
3.操作系統(tǒng)控制應(yīng)用程序在存儲(chǔ)器內(nèi)和外的分頁(yè)。
4.操作系統(tǒng)給應(yīng)用程序分配主存儲(chǔ)器。但是,這個(gè)“應(yīng)用”碼現(xiàn)在被給定了要執(zhí)行的附加功能。
“外來(lái)”(Alien)一詞用以定義一個(gè)操作系統(tǒng)所不知道的裝置(因?yàn)樗€沒(méi)在操作系統(tǒng)結(jié)構(gòu)表中定義,因此操作系統(tǒng)還沒(méi)有該裝置的設(shè)備驅(qū)動(dòng)口,也不能控制它)。但是操作系統(tǒng)中運(yùn)行的一個(gè)特殊應(yīng)用程序知道該裝置,也可以對(duì)其進(jìn)行某些控制。
“明辯”一詞指的是一個(gè)操作系統(tǒng)不知道與一個(gè)處理器(操作系統(tǒng)在它上面運(yùn)行)相連的外來(lái)裝置,或指動(dòng)作是由處理器所引起,并與操作系統(tǒng)相隔離,以防止操作系統(tǒng)拒絕這些動(dòng)作。
在說(shuō)明中,“透明”一詞常常和明辨一詞同義使用。雖然參照最佳實(shí)例具體說(shuō)明了本發(fā)明,但應(yīng)當(dāng)指出,在不背離本申請(qǐng)的教導(dǎo)的情況下,本領(lǐng)域的技術(shù)人員可以做出上述建議的變化和替代形式以及各種其它形式的和具體的變化。因此,上述說(shuō)明和附圖只是進(jìn)行描述,而不是限定,所附的權(quán)利要求包括了本發(fā)明真正構(gòu)思和范圍內(nèi)全部變化和改進(jìn)。
權(quán)利要求
1.一種數(shù)據(jù)處理系統(tǒng)中的組合,包括一個(gè)處理器單元及其相關(guān)硬件,用于在一個(gè)操作系統(tǒng)的控制之下進(jìn)行信息處理;一個(gè)與該操作系統(tǒng)相異的信息處理設(shè)備;以及使上述處理器單元與上述操作系統(tǒng)相隔離、并使該處理器單元與上述信息處理設(shè)備相耦合從而與該設(shè)備進(jìn)行交互作用的裝置。
2.如權(quán)利要求1所述的系統(tǒng),其中所述的執(zhí)行隔離和耦合功能的裝置在執(zhí)行隔離和耦合功能時(shí)不使用操作系統(tǒng)的服務(wù),也不會(huì)被上述操作系統(tǒng)所拒絕。
3.一種數(shù)據(jù)處理系統(tǒng)中的組合,包括一個(gè)處理器單元及其相關(guān)硬件,用于在一個(gè)操作系統(tǒng)的控制之下進(jìn)行信息處理;一個(gè)與該操作系統(tǒng)相異的信息處理設(shè)備;以及使上述處理器單元與上述操作系統(tǒng)相隔離、并使該處理器單元與上述信息處理設(shè)備相耦合從而與該設(shè)備進(jìn)行交互作用的裝置;其中,所述的執(zhí)行隔離和耦合功能的裝置在執(zhí)行隔離和耦合功能時(shí)不使用操作系統(tǒng)的服務(wù),也不會(huì)被上述操作系統(tǒng)所拒絕;所述的外來(lái)設(shè)備包括用于向上述處理器單元發(fā)出中斷請(qǐng)求的邏輯電路;另外,當(dāng)上述設(shè)備發(fā)出中斷請(qǐng)求時(shí),上述隔離/耦合裝置工作,使上述處理器單元與上述操作系統(tǒng)相隔離、并使該處理器單元與上述信息處理設(shè)備相耦合從而與該設(shè)備進(jìn)行交互作用。
4.一種數(shù)據(jù)處理系統(tǒng)中的組合,包括一個(gè)處理器單元及其相關(guān)硬件,用于在一個(gè)操作系統(tǒng)的控制之下進(jìn)行信息處理;一個(gè)與該操作系統(tǒng)相異的信息處理設(shè)備;以及使上述處理器單元與上述操作系統(tǒng)解耦、并使該處理器單元與上述信息處理設(shè)備相耦合從而與該設(shè)備進(jìn)行交互作用的裝置。
5.如權(quán)利要求4所述的系統(tǒng),其中所述的執(zhí)行解耦和耦合功能的裝置在執(zhí)行解耦和耦合功能時(shí)不使用操作系統(tǒng)的服務(wù),也不會(huì)被上述操作系統(tǒng)所拒絕。
6.一種數(shù)據(jù)處理系統(tǒng)中的組合,包括一個(gè)處理器單元及其相關(guān)硬件,用于在一個(gè)操作系統(tǒng)的控制之下進(jìn)行信息處理;一個(gè)與該操作系統(tǒng)相異的信息處理設(shè)備;以及使上述處理器單元與上述操作系統(tǒng)解耦、并使該處理器單元與上述信息處理設(shè)備相耦合從而與該設(shè)備進(jìn)行交互作用的裝置;其中所述的外來(lái)設(shè)備包括用來(lái)向上述處理器單元發(fā)出中斷請(qǐng)求的邏輯電路;另外,當(dāng)上述設(shè)備發(fā)出中斷請(qǐng)求時(shí),上述解耦/耦合裝置工作,使上述處理器單元與上述操作系統(tǒng)解耦、并使該處理器單元與上述信息處理設(shè)備相耦合從而與該設(shè)備進(jìn)行交互作用。
7.在具有用來(lái)在一個(gè)操作系統(tǒng)的控制下處理信息的處理器單元和硬件的數(shù)據(jù)處理系統(tǒng)中、允許該處理器單元和與上述操作系統(tǒng)相異的數(shù)據(jù)處理設(shè)備以一種不被操作系統(tǒng)所察覺(jué)的方式進(jìn)行交互操作的方法,包括如下的步驟在信息處理期間使處理器單元與操作系統(tǒng)隔離;以及在上述處理器單元與操作系統(tǒng)隔離期間,將該處理器單元耦合到上述設(shè)備上,進(jìn)行交互操作。
8.如權(quán)利要求7所述的方法,其中所述的隔離步驟和耦合步驟的執(zhí)行既不使用操作系統(tǒng)的服務(wù),也不會(huì)被操作系統(tǒng)所拒絕。
9.在具有用來(lái)在一個(gè)操作系統(tǒng)的控制下處理信息的處理器單元和硬件的數(shù)據(jù)處理系統(tǒng)中、允許該處理器單元和與上述操作系統(tǒng)相異的一個(gè)數(shù)據(jù)處理設(shè)備以一種不被操作系統(tǒng)所察覺(jué)的方式進(jìn)行交互操作的方法,包括如下的步驟從上述的外來(lái)設(shè)備向處理器單元發(fā)出一個(gè)中斷請(qǐng)求;隨著該中斷請(qǐng)求的接收,使處理器單元與操作系統(tǒng)隔離;以及在上述處理器單元與操作系統(tǒng)隔離期間,將該處理器單元耦合到上述設(shè)備上,進(jìn)行交互操作。
10.一種將處理器單元和與之相關(guān)的操作系統(tǒng)隔離、從而允許以一種不被操作系統(tǒng)察覺(jué)的方式與和該操作系統(tǒng)相異的設(shè)備進(jìn)行信息傳遞的方法,包括如下步驟在上述的處理器單元中執(zhí)行一個(gè)具體的應(yīng)用程序的選定數(shù)據(jù)傳遞指令;在上述指令的執(zhí)行期間,將預(yù)定的虛擬地址設(shè)置在該處理器單元的地址總線上;對(duì)上述地址進(jìn)行解碼;響應(yīng)于上述為執(zhí)行與外來(lái)設(shè)備的數(shù)據(jù)傳遞指令而進(jìn)行的譯碼操作,把上述的處理器單元從與之相關(guān)的操作系統(tǒng)隔離開(kāi),并把該處理器單元耦合到上述的外來(lái)設(shè)備上。
11.一種將處理器單元和與之相關(guān)的操作系統(tǒng)隔離、從而允許以一種不被操作系統(tǒng)察覺(jué)的方式與和該操作系統(tǒng)相異的設(shè)備進(jìn)行信息傳遞的方法,包括如下步驟在上述的處理器單元中執(zhí)行一個(gè)具體的應(yīng)用程序的選定數(shù)據(jù)傳遞指令;在上述指令的執(zhí)行期間,將預(yù)定的虛擬地址設(shè)置在該處理器單元的地址總線上;對(duì)上述地址進(jìn)行解碼;響應(yīng)于上述為執(zhí)行與外來(lái)設(shè)備的數(shù)據(jù)傳遞指令而進(jìn)行的譯碼操作,把上述的處理器單元從與之相關(guān)的操作系統(tǒng)隔離開(kāi),并把該處理器單元耦合到上述的外來(lái)設(shè)備上;以及在數(shù)據(jù)傳遞完成時(shí),終止上述指令的執(zhí)行。
12.一種數(shù)據(jù)處理系統(tǒng)中的組合,包括一個(gè)處理器單元及其相關(guān)硬件,用于在一個(gè)操作系統(tǒng)的控制之下進(jìn)行信息處理;一個(gè)與該操作系統(tǒng)相異的信息處理設(shè)備;以及使上述處理器單元與上述操作系統(tǒng)相隔離、并使該處理器單元與上述設(shè)備相耦合從而使上述處理器單元與上述操作系統(tǒng)隔離同時(shí)與該設(shè)備進(jìn)行交互作用的裝置,其中該裝置在執(zhí)行上述的隔離和耦合功能時(shí)不使用操作系統(tǒng)的服務(wù),也不會(huì)被上述操作系統(tǒng)所拒絕。
13.一種數(shù)據(jù)處理系統(tǒng),包括一個(gè)用于在一個(gè)操作系統(tǒng)的控制之下進(jìn)行信息處理的處理器及其相關(guān)硬件,所述操作系統(tǒng)具有以多個(gè)優(yōu)先級(jí)別處理來(lái)自所述處理系統(tǒng)的中斷請(qǐng)求的程序;一個(gè)與上述操作系統(tǒng)相異的數(shù)據(jù)處理設(shè)備,該設(shè)備含有為與上述處理器進(jìn)行數(shù)據(jù)傳遞而以上述的多個(gè)優(yōu)先級(jí)別中的一個(gè)向處理器發(fā)出附加的中斷請(qǐng)求的裝置,上述的程序不能對(duì)來(lái)自上述設(shè)備的中斷請(qǐng)求進(jìn)行服務(wù);一個(gè)附加的中斷服務(wù)程序,用于對(duì)來(lái)自上述設(shè)備的中斷請(qǐng)求進(jìn)行服務(wù);在從上述設(shè)備發(fā)出中斷請(qǐng)求時(shí)工作、用于把上述處理器從操作系統(tǒng)隔離并且訪問(wèn)上述的附加中斷處理程序的裝置;該裝置操作時(shí)不使用上述操作系統(tǒng)的服務(wù),也不被該操作系統(tǒng)拒絕;然后再在上述處理器上執(zhí)行上述的附加中斷處理程序的裝置。
14.在具有用來(lái)在一個(gè)包含處理來(lái)自硬件的中斷請(qǐng)求的程序的操作系統(tǒng)的控制下處理信息的處理器單元和相關(guān)硬件的數(shù)據(jù)處理系統(tǒng)中、接受和處理來(lái)自與該操作系統(tǒng)相異的數(shù)據(jù)處理設(shè)備的中斷請(qǐng)求的方法,包括如下的步驟在系統(tǒng)初始化期間提供一個(gè)附加的中斷處理器;從上述外來(lái)設(shè)備發(fā)出一個(gè)中斷請(qǐng)求信號(hào);將該中斷請(qǐng)求信號(hào)耦合到上述處理器;隨著上述的中斷請(qǐng)求信號(hào)的接受,將上述處理器從操作系統(tǒng)隔離開(kāi)來(lái);以及當(dāng)上述處理器與操作系統(tǒng)隔離開(kāi)來(lái)時(shí),以一種不被該操作系統(tǒng)察覺(jué)的方式訪問(wèn)上述的中斷處理器。
全文摘要
兩個(gè)虛擬操作系統(tǒng)的功能被合并成一個(gè)實(shí)際系統(tǒng),S/88處理器的一對(duì)伙伴運(yùn)行S/88OS并處理系統(tǒng)的容錯(cuò)和而且把整個(gè)系統(tǒng)看作是單一系統(tǒng)映象。一對(duì)或多對(duì)S/370處理器的伙伴通過(guò)S/88OS總線直接與相應(yīng)的S/88OS處理器耦合。各S/370處理器的S/88主存貯器的連續(xù)的存貯區(qū)中被分配有1—16兆字節(jié)。各S/370虛擬操作系統(tǒng)認(rèn)為其存貯分配在地址O開(kāi)始,它利用正常S/370的動(dòng)態(tài)存貯分配和分頁(yè)技術(shù)管理其存貯器。
文檔編號(hào)G06F15/16GK1230722SQ98126569
公開(kāi)日1999年10月6日 申請(qǐng)日期1990年4月29日 優(yōu)先權(quán)日1989年5月17日
發(fā)明者歐內(nèi)斯特·戴散爾特·巴克, 小約翰·蒙勞·蒂恩維蒂, 龍尼·愛(ài)德華·格利茨, 詹姆斯·莫里斯·喬伊斯, 喬恩·瑪利奧·洛夫萊道, 肯恩特·盧瑟爾·桑德森 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司