版權(quán)歸原作者所有,如有侵權(quán),請(qǐng)聯(lián)系我們

[科普中國(guó)]-中央處理機(jī)

科學(xué)百科
原創(chuàng)
科學(xué)百科為用戶提供權(quán)威科普內(nèi)容,打造知識(shí)科普陣地
收藏

中央處理機(jī)一般功能

(1)進(jìn)行算術(shù)邏輯運(yùn)算

(2)可接收和發(fā)送數(shù)據(jù)

(3)可暫存少量數(shù)據(jù)

(4)提供控制信號(hào)

(5)對(duì)指令解碼1

CPU一般組成(1)算數(shù)邏輯部件ALU

(2)控制邏輯

(3)寄存器組1

中央處理機(jī)結(jié)構(gòu)格式中央處理機(jī)執(zhí)行系統(tǒng)需要的算術(shù)和邏輯操作并對(duì)系統(tǒng)總線實(shí)施統(tǒng)一的管理。

1.兩種程序狀態(tài)

中央處理機(jī)在兩種不同的狀態(tài)下工作。這兩種狀態(tài)是核心態(tài)和用戶態(tài)。只有核心態(tài)程序?qū)ο到y(tǒng)有完全的控制權(quán)。用戶態(tài)不允許執(zhí)行某些指令,不允許直接與系統(tǒng)中的外圍設(shè)備打交道*。這樣的硬件特性適用于多道程序環(huán)境下實(shí)施完善的保護(hù)。

2.通用寄存器

中央處理機(jī)使用6個(gè)通用寄存器,兩個(gè)堆棧指示器和一個(gè)程序計(jì)數(shù)器。R7用作機(jī)器的程序計(jì)數(shù)器(PC),存放下一條要執(zhí)行的指令地址。此外它可以用于編址,但不能作為累加器使用。R6通常作為“處理機(jī)堆棧指示器”,保存最近進(jìn)人堆棧的數(shù)據(jù)地址。在186計(jì)算機(jī)中有兩個(gè)處理機(jī)堆棧指示器:“核心態(tài)堆棧指示器”和“用戶態(tài)堆棧指示器”。它們由相應(yīng)程序狀態(tài)的程序使用。當(dāng)發(fā)生外中斷或內(nèi)中斷時(shí),處理機(jī)原來的狀態(tài)保留在由服務(wù)程序的程序態(tài)所規(guī)定的處理機(jī)堆棧中。其余的6個(gè)寄存器是真正的通用寄存器。

3.處理機(jī)狀態(tài)字(pSW)777776

處理機(jī)狀態(tài)字寄存器存放處理機(jī)的現(xiàn)時(shí)狀態(tài)。它包括:現(xiàn)時(shí)處理機(jī)優(yōu)先級(jí),現(xiàn)行程序態(tài)和原先程序態(tài),表征最近一條指令結(jié)果特征的條件碼,一個(gè)程序調(diào)整的跟蹤位。

現(xiàn)行程序態(tài)(14、15位)是指目前正在利用處理機(jī)運(yùn)行的程序是核心態(tài)或用戶態(tài)。原先態(tài)(12、13位)是指最近一次外中斷或內(nèi)中斷之前的程序態(tài)是核心態(tài)或用戶態(tài)。

兩種程序態(tài)為多道程序系統(tǒng)提供了保護(hù)環(huán)境,因?yàn)樗鼮橛脩籼峁┝藘蓚€(gè)處理機(jī)堆棧和兩組存管寄存器。除了核心態(tài)程序之外,其它態(tài)的程序禁止執(zhí)行“停機(jī)”指令。非核心態(tài)程序企圖執(zhí)行“停機(jī)”指令,使處理機(jī)發(fā)生“非法停機(jī)”內(nèi)中斷,內(nèi)中斷向量地址4。此外,非核心態(tài)的“復(fù)位”或“置優(yōu)先級(jí)”指令,不被執(zhí)行,作為“空操作”指令對(duì)待。只有核心態(tài)程序可以執(zhí)行所有的指令。它可以把用戶程序分配到存貯空間的任何位置,從而直接地保護(hù)關(guān)鍵區(qū)域(包括設(shè)備寄存器和處理機(jī)狀態(tài)字)在用戶操作環(huán)境下不被破壞。

在處理機(jī)狀態(tài)字的5~7位,保存著現(xiàn)在在處理機(jī)中運(yùn)行的程序的優(yōu)先級(jí),它起著外中斷請(qǐng)求屏蔽的作用。三位代碼表示了處理機(jī)8個(gè)可能的優(yōu)先級(jí)。當(dāng)處理機(jī)的優(yōu)先級(jí)是7時(shí),所有的外中斷請(qǐng)求都不能被響應(yīng)。處理機(jī)只響應(yīng)比其優(yōu)先級(jí)高的外中斷請(qǐng)求。處理機(jī)優(yōu)先級(jí)可通過執(zhí)行“置優(yōu)先級(jí)”指令動(dòng)態(tài)地改變。這條指令允許核心態(tài)程序,在不改變處理機(jī)狀態(tài)字其余部分的情況下,改變處理機(jī)的優(yōu)先級(jí)。

4.向量區(qū)的保護(hù)

在186機(jī)中,從。~377號(hào)單元為系統(tǒng)向量區(qū),在這里存放的信息極為重要,不允許破壞,由于系統(tǒng)堆棧通常設(shè)置在系統(tǒng)向量區(qū)之上,而且它是向低地址擴(kuò)展的,所以進(jìn)棧操作有可能破壞向量區(qū)。為防止進(jìn)棧操作破壞系匆句量區(qū),在186機(jī)內(nèi),設(shè)有堆棧溢出檢測(cè)功能,當(dāng)進(jìn)棧地址小于(400)8時(shí)引起“堆棧溢出”內(nèi)中斷。

5.中斷系統(tǒng)

介紹了中央處理機(jī)內(nèi)程序可訪的主要資源的基礎(chǔ)上,以中斷系統(tǒng)為題目來說明系統(tǒng)各部分相互作用的約定。

(1)直傳請(qǐng)求和直傳

在186機(jī)中,直傳請(qǐng)求只是請(qǐng)求單總線控制權(quán),在獲得總線控制權(quán)后,總線上的丙個(gè)設(shè)備之間直接傳送數(shù)據(jù),無需中央處理機(jī)為干預(yù)。但因?yàn)樵趩慰偩€使用上會(huì)與中央處理禮發(fā)生沖突,所以必須規(guī)定兩者的優(yōu)先次序。在180系列中,直傳請(qǐng)求的優(yōu)先級(jí)高于處理機(jī)。在186機(jī)中更是重點(diǎn)保證直傳請(qǐng)求能獲得最快的響應(yīng)?;旧献龅浆F(xiàn)行總線周期一結(jié)束就予以響應(yīng)。所以直傳請(qǐng)求的等待時(shí)間不大于代個(gè)存貯周期。直傳請(qǐng)求設(shè)備一旦獲得控制權(quán)以后,可按與之協(xié)同工作的存貯器等效周期時(shí)間相同的速度進(jìn)行高速傳輸。

(2)外設(shè)硬件中斷請(qǐng)求

186計(jì)算機(jī)設(shè)置了四根外中斷請(qǐng)求線,供單總線上的外設(shè)為中斷的目的請(qǐng)求總線控制權(quán)。外中斷請(qǐng)求在中央處理機(jī)完成一條指令時(shí),按預(yù)定的硬件優(yōu)先級(jí)予以響應(yīng),在所有請(qǐng)求中優(yōu)先級(jí)最高的設(shè)備取得總線控制權(quán)。通過外中斷請(qǐng)求線取得總線控制權(quán)的設(shè)備原則上可以進(jìn)行兩種可能的操作:(l)啟動(dòng)總線數(shù)據(jù)傳輸(2)發(fā)中斷命令及中斷向量地址,使處理機(jī)執(zhí)行它所要求的中斷服務(wù)程序。或者在進(jìn)行第一種操作之后再進(jìn)行第二次操作。實(shí)際上在180系列中的大多數(shù)設(shè)備通過外中斷請(qǐng)求獲得控制權(quán)的設(shè)備只進(jìn)行第二種操作。

(3)內(nèi)中斷和緊急內(nèi)中斷

中央處理機(jī)和存貯系統(tǒng)發(fā)生的錯(cuò)誤和某些指令的執(zhí)行,使處理機(jī)中斷現(xiàn)行程序轉(zhuǎn)而執(zhí)行相應(yīng)的中斷處理程序。這個(gè)過程與響應(yīng)外中斷請(qǐng)求的過程相類似,由于中斷源是在中央處理機(jī)內(nèi)部,所以稱為內(nèi)中斷。根據(jù)內(nèi)中斷源的性質(zhì),內(nèi)甲斷分為內(nèi)中斷和緊急內(nèi)中斷兩類。凡是檢測(cè)到一次內(nèi)中斷請(qǐng)求時(shí),本條指令尚能執(zhí)行完畢,然后再轉(zhuǎn)入中斷處理的稱為一般內(nèi)中斷;凡是內(nèi)中斷的原因使本條指令不能進(jìn)行下去,必須中止引起內(nèi)中斷的操作,立即轉(zhuǎn)人中斷處理的,稱為緊急內(nèi)中斷。

(4)中斷的申請(qǐng)及優(yōu)先級(jí)結(jié)構(gòu)

內(nèi)中斷及緊急內(nèi)中斷源直接向處理機(jī)申請(qǐng)中斷并提供中斷向量地址。內(nèi)中斷不受處理機(jī)優(yōu)先級(jí)的屏蔽,即可視為優(yōu)先于所有處理機(jī)程序。外部設(shè)備請(qǐng)求中斷表現(xiàn)為請(qǐng)求總線控制權(quán)的形式。對(duì)總線控制權(quán)處理取決于設(shè)備在單總線優(yōu)先級(jí)結(jié)構(gòu)中的位置。

(5)中斷的利用

通過外中斷請(qǐng)求取得總線控制權(quán)的設(shè)備可以通過中斷中央處理機(jī)的現(xiàn)行程序,使處理機(jī)的全部功能為設(shè)備服務(wù),利用整個(gè)指令系統(tǒng)操;縱數(shù)據(jù)和狀態(tài)寄存器。每個(gè)可以中斷處理機(jī)現(xiàn)行程序的設(shè)備在主存中有一對(duì)單元保存它的“中斷向量”。其中第一個(gè)字存放它的服務(wù)程序的起始地址。第2個(gè)字是處理程序所使用的處理機(jī)狀態(tài)字,通過正確地使用處理機(jī)狀態(tài)字,可以轉(zhuǎn)變處理機(jī)的程序態(tài),改變所用的堆棧指示器,修改處理機(jī)的優(yōu)先級(jí)。

(6)外中斷步驟

在186機(jī)中下述中斷處理步驟是由硬件自動(dòng)完成的:

①如果中斷優(yōu)先級(jí)系統(tǒng)許可,處理機(jī)批準(zhǔn)在所有申請(qǐng)中斷的設(shè)備中,優(yōu)先級(jí)最高的設(shè)備取得總線控制權(quán)。

②設(shè)備取得總線控制權(quán),向處理機(jī)發(fā)出“中斷”命令,和它的服務(wù)程序的向量地址。向量地址和服務(wù)程序都是在核心態(tài)虛擬空間。中斷向量的第一個(gè)字是服務(wù)程序的首地址,中斷向量的第二個(gè)字(它的地址等于中斷向量地址+2)是該服務(wù)程序所用的處理機(jī)狀態(tài)字。

③處理機(jī)把現(xiàn)行處理機(jī)狀態(tài)字和程序計(jì)數(shù)器存人處理機(jī)內(nèi)的暫存寄存器。

④處理機(jī)從核心態(tài)虛擬空間取出新的程序計(jì)數(shù)器和狀態(tài)寄存器(中斷向量)。然后把老的程序狀態(tài)和程序計(jì)數(shù)器壓入由新的程序狀態(tài)字15、14位所規(guī)定的堆棧。并且把老程序狀態(tài)字的現(xiàn)行程序狀態(tài)置人狀態(tài)字寄存器的13、12位。然后啟動(dòng)服務(wù)程序。

這些操作,從處理機(jī)接受中斷命令,至開始執(zhí)行服務(wù)程序的第一條指令,所花的時(shí)間約為12微秒。這個(gè)時(shí)間是以整個(gè)過程中未發(fā)生直接傳送為前提的。

⑤中斷服務(wù)程序結(jié)束時(shí),通過執(zhí)行“中斷返回”或“推遲跟蹤中斷返回”指令返回被中斷的程序。執(zhí)行上述命令的結(jié)果是從現(xiàn)行程序態(tài)堆棧中彈出兩個(gè)字裝人程序計(jì)數(shù)器和狀態(tài)字寄存器。

(7)內(nèi)中斷步驟

內(nèi)中斷步驟與外中斷基本相同,每個(gè)內(nèi)中斷源有自己的中斷向量。所不同的是因?yàn)橹袛嘣丛谔幚頇C(jī)內(nèi)部,所以不必請(qǐng)求總線控制權(quán),就可發(fā)送中斷向量。

(8)系統(tǒng)對(duì)同時(shí)發(fā)生的內(nèi)中斷,外中斷統(tǒng)一按如下優(yōu)先次序服務(wù):

①在處理“指令內(nèi)中斷”、“跟蹤內(nèi)中斷”、“堆棧溢出內(nèi)中斷”或“總線錯(cuò)誤內(nèi)中斷”時(shí)又出現(xiàn)總線錯(cuò)誤,處理機(jī)只能立即停機(jī)。

②在處理“指令內(nèi)中斷”、“總線錯(cuò)誤內(nèi)中斷”或“跟蹤內(nèi)中斷”的過程中出現(xiàn)“堆棧溢出”,處理過程被完成。然后處理堆棧溢出。在處理堆棧溢出時(shí),在中斷隱指令中仍有兩次壓堆棧的操作會(huì)引起堆棧進(jìn)一步溢出,在中央處理機(jī)內(nèi)已采取措施避免因此而引起死循環(huán)。2