分类目录归档:技术总结

Edge下使用IE的两种方法,兼容银行/政府/事业单位网站

一、 在系统自带的Edge浏览器里设置。

1、 打开Edge浏览器,点击右上角三个小点,选择设置。

2、 在设置中找到默认浏览器选项,在该选项中“允许在 Internet Explorer 模式下重新加载网站”的默认值改为允许,再点击最下方的添加按钮,将需要使用的网址添加到列表里。

添加完毕后,该网址会自动使用IE模式(包括弹窗),不必手动,但需要注意到期后及时更新。

点击【重启】使设置生效。

3、 此后想要使用IE模式访问网站也可手动点击Edge浏览器右上角三个小点,然后选择“在 Internet Explorer 模式下重新加载”即可。

注:在Win11系统已经默认不会提供IE浏览器使用路径,上述方法对于国内的部分网站仍存在不兼容问题,因此如果出现不兼容情况,Win11系统可以使用第二种方法打开IE浏览器。

二、 在控制面板中打开IE浏览器

1、 打开控制面板,可以在搜索中输入“控制面板”来打开。

2、 点击“Internet 选项”,在弹出的窗口中选择“高级”选项卡,往下拉,找到“启动第三方浏览器扩展”将这个选项前的勾去掉,点击右下角的应用。

3、 点击右上角的“?”即可打开完整的IE11浏览器,该模式下IE浏览器基本不会出现兼容性问题。

4、 右键任务栏上的IE图标,选择“固定到任务栏”,下次就可以直接从任务栏打开IE浏览器了。

數據處理入門(下)

第六章 存儲設備的發展過程

6.1 引言

   數據處理系統常需要對海量數據進行存取,因此存儲器對一個數據處理系統來說至關重要。理論上,存儲器的速度越快,數據處理系統的效率越高,但有一個無法迴避的客觀現實,即是存儲器的價格和其速度是成正比的。在CPU中使用了立即存取存儲器,但其價格卻十分昂貴,因此,計算機實際採用的是多種存儲器搭配使用的方法進行工作。

數據處理入門(下)



  這裡將存儲器分為以下兩種類型:
——(設置在CPU內部的)立即存取存儲器;
——(與CPU相連,但不屬於CPU的部件的)輔助存儲器。

6.2 立即存取-存儲器
       最早的計算機是通過導線將將電子管連接到電路中,以起到導電或非導電作用的。適當加一個“觸發”脉衝能引起管子及其電路由一種條件“改變”成另一種條件,直到下一個脉衝的到來再次改變為止。這就是“觸發器”電路。

數據處理入門(下)
數據處理入門(下)
數據處理入門(下)



       觸發器用於寄存器,主立即存取-存儲器中。這種電路耗電大,散熱強,導致電路內的電子管壽命很短成為其最大的缺點。

       其後發展至“延遲線”存儲數據。延遲線是一種帶發聲晶體且注滿水銀的長管子,發聲晶體運送聲波到管子另一端的接收裝置。運用時鐘,可以對時鐘脉衝與接收到的信號脉衝進行比較(AND邏輯操作),如此可得一位信息的譯碼(這是一種排錯的手段)。延遲線傳送數據時,不能在傳輸的過程中進行數據存取,因此,需要非常細緻且符合時間節拍的程序編制,才能讓控制器在預計應該到來的時刻對這些脉衝進行接收和譯碼。若程序佔用時間太長,則會丟失一些脉衝信號;而若數據一到就進行存取,更有可能使存取的時間比其在水銀柱中傳播的時間還長。這卻導致了存儲器在容量和可靠性上出現較大偏差。
  還有一種普遍的磁芯存儲器。這種存儲器由鐵氧化合物材料的小環串在導線上,布網而成。一個小環在經過一個順時針或逆時針的磁化后完成狀態的反復切換,這樣就能表示1或0了。要完成這個操作,需要控制電流有選擇地通過一個或多個磁芯,從而達到改變磁化方向保存數據的目的。磁芯存儲器體積小(如一塊鼠標墊大小的面積上只須幾釐米就能表示近百萬位),耗電少,散熱小,磁化過程十分短暫——幾百萬分之一秒的時間內即可進行數據存取或磁環磁化,因此,它能完成數據的快速存取。另一優點則是因磁芯退磁極緩慢,因而即使斷電,數據仍能完整保存。

數據處理入門(下)

  在一個大型計算機的CPU中,對電路脉衝的傳送需要花一段時間。這段時間事實上妨礙了CPU的操作速度:因為,移動數據的機器週期,比運算器(AU)和控制器(CU)所能操作的週期,前者比後者長。我們希望即使無法將這段多花費的時間除去,也要盡可能將前者保持在後者的最大值範圍內。這便促成了集成電路、芯片的產生。

數據處理入門(下)

  如今,一個完整的CPU具有時鐘,其他一些控制器電路,運算器,一些存儲器。他們集成在一塊指甲大小的硅片/金屬材料上,也就是我們常說的微處理器/芯片。這種設備耗電極少,工作速度很高,可靠且穩定,一旦測試並交付使用,就能連續工作數年。

數據處理入門(下)



  通常除了最小的CPU外,幾乎所有附加的存儲器都需要另外的芯片提供,這就使存儲器的使用更為靈活。如,通用存儲器採用RAM(隨機存取-存儲器,其用法完全和磁芯存儲器一致);CPU中則用ROM(只讀-存儲器,程序指令永久保存,不會被意外毀掉,在計算機生產階段中運用);某些情況下也需要改變ROM的數據,這時可以使用EPROM(可擦可編程-只讀-存儲器,紫外線重寫ROM);等等。

數據處理入門(下)
數據處理入門(下)



6.3 輔助存儲器-串行存取
  輔存可分為兩種,一是可以對數據進行直接存取的存儲器,另一種是對數據進行串行存取的存儲器。
  類似唱片播放時要將唱機的唱頭直接放到音道上進行選擇,盒式磁帶播放時要都放過一邊才能找到所需部份一樣,這種存取方式被稱為串行存取。

數據處理入門(下)

6.4 輔助存儲器-直接存取
  目前大多輔存都以磁力形式來記錄計算機的數據。存儲器所用的介質上有鐵氧化合物塗層,通過對該塗層的磁化來記錄由0和1構成的數據形式。
  直接存取-存儲器中主要的一種是像音樂唱片一樣的平盤形式。該平盤有一個可磁化的面,并有一個跨越在這個面上進行移動的讀寫頭。唱片和計算機磁盤的區別在於它們所記錄的物理形式不同。
  在唱機中,唱片按恒定的速度旋轉,其表面有一道從邊緣開始一直繞到中心的螺旋槽。
  計算機磁盤轉速也恒定,但讀/寫操作時,讀/寫頭是固定不動的,因此,它沒有段杜一條的羅旋軌跡,而是有一個套一個的幾百個同心圓式的磁道。磁盤旋轉磁頭固定時,可讀出某一磁道中的信息;移動磁道需要將磁頭重新驅入進行固定,然後再進行讀寫操作。計算機磁盤驅動器上的磁頭和盤面上浮動的距離較小,磁頭的定位是通過外部一個驅動裝置來完成的。


6.5 計算機磁盤
  計算機磁盤主要有兩種形式——大型、小型。

  大型磁盤常按“磁盤組”形式安裝。每一面都有他們各自所屬的讀寫頭,且這些磁頭是相互關聯地固定著的。

數據處理入門(下)
 圖25 Early experimental non-magnetic Tape Recorder invented by the Volta Associates -Bell & Tainter -i013

  小型磁盤即早先我們稱的軟盤。

數據處理入門(下)

6.6 磁盤容量
       磁盤所能存儲的數據量。直接按實際情況表達即可,關於計量數據的量的方式,見4.1 。

6.7 补充

數據處理入門(下)



  顯微鏡下的金氧半場效電晶體測試用元件。圖中有兩個閘極的接墊(pads)以及三組源極與汲極的接墊。
  金屬—氧化層—半導體結構:

數據處理入門(下)

  幾種常見的MOSFET電路符號,加上接面場效電晶體(Junction Field-Effect Transistor, JFET)一起比較:

數據處理入門(下)
數據處理入門(下)
數據處理入門(下)
數據處理入門(下)
數據處理入門(下)
數據處理入門(下)
數據處理入門(下)
圖41 Computer Memory Hieracy -Various forms of storage, divided according to their distance from the central processing unit. The fundamental components of a general-purpose computer are arithmetic and logic unit, control circuitry, storage space, and input/output devices.

第七部份 輸入/輸出設備
  輸入,即把從外界得到的數據編程計算機能識別的編碼電子脉衝。
  通常這可以分成一步或兩步來做。前者最常見的方法是把一個鍵盤與計算機連接起來,打字錄入數據。後者是將信號發送分為兩步進行,第一步準備,第二步輸 入。準備時涉及到鍵盤,鍵盤可連接到一個磁介質。輸入則是在數據準備之後,利用光敏元件或電磁元件對磁介質、卡片、紙帶或幾張紙進行掃描,使上面的編碼或 標記直接地轉換成電子脉衝。
  類似還有高速紙帶閱讀機,直接輸入設備:電傳打字機、工程師控制台、VDU等。

第八部份 數據的收集及轉換
  把問題轉換為數據,將數據收集起來,提供給機器處理,這是本文自始至終的出發點。這裡先說討論數據的收集。
  把數據收集起來提供給機器,這裡有兩方面,一是人收集數據,另一是由機器進行準備或轉換數據。人這邊的主要問題是數據的收集。
  通常,數據的收集并無法由一個人完成,這就意味著需要在參與收集的人群範圍中達成一定的共識,否則收集無法完成。
  人工的做法常涉及三個步驟:

  • 記錄;
  • 傳送;
  • 轉錄。

  例如一个快递公司的運轉。
  这里面的每一步工作都可能引起新的错误,而且最后一步最易出錯,原因主要是一下兩點:
  數據準備操作員要讀出那些手寫的單據——這些素材有可能不清晰;
  數據準備操作員實際上與數據并沒有關係——他們不懂得這些數據是何含義,也許在不經意中就將其篡改了。
  由於以上原因,常引出數據收集的下一個步驟(事實上已經開始進入數據轉換),即對準備的數據進行校驗。
  數據校驗的方式多種多樣,但主要還是通過重複數據準備的活動,然後對兩次結果進行比較來完成。對兩次結果的比較可以交給機器完成,機器只識別相同與不同,而具體差異的處理仍舊需要人來完成,這事實上又增加了一次出錯的可能性。
  目前,几乎所有专门的應用中,都必須解決數據收集及其轉換中所存在的幾個問題:
1)   數據越陳舊,用處越少;
2)   檢查及校驗錯誤需要花費大量時間,且延長了輸入階段;
3)   收集和轉換過程中,步驟越多,出錯機會越多。
  爲了儘量減少以上問題所造成的影響,數據收集及轉換的設備在兩個領域中都得到了發展。
  首先,集中化的數據準備部門發展除了更有效、更尖端的設備,以求最大程度地減少延遲,并把人為的錯誤保持到最低程度。
  其次,新的设备能允许收集和转换的发生尽可能地接近于数据的生成源。这样也就又省下了一些步骤,检验需要花费时并非所有的数据在收集阶段都会发生错误, 校驗目的是为防止錯誤,但是这项工作是否有價值,卻是因情況而異的。

→精確度
  一些时候精确度十分重要 ,比如在一个银行系统中帳戶的记录;但有时它又不那么重要,比如个人信息当中的姓名及通讯地址。精确度的重要性决定了 检验的必要性,因此我们需要考察数据准备过程中 影響精确度的各种因素——首先就是传统的数据准备设备。历史上十分著名的包括了卡片穿孔机,卡片穿孔检验机,紙帶穿孔机,紙帶校驗機等(这里不做详细介 绍)。後來又發展出了鍵盤,各種直接錄入設備和直接記錄設備,極大程度地提升了數據收集階段的效率。
  但由數據收集到數據處理始終需要歷經數據轉換,各種設備的發展也衍生了各種數據記錄方式,具體體現就是種類繁多的數據格式。
  要將這些不同格式的數據進行轉換,目前它們共通的都是轉換為計算機處理系統下的二進制數據,需要我們提前對數據表示的相關知識有所瞭解。

→数据表示
  數據有離散、連續之分,在計算機內,數據都是離散型數據。處理連續數據,我們將其進行近似處理,這便是所謂的近似法。
  數據的表示,有二進制、八進制、十六進制等,不一而足。各種數據在使用中爲了統一,往往存在一個通行的標準,這樣做被稱之為標準化。
  數據的標準化事實上對應了各種編碼,常見的編碼如ASCII,UTF-8等。
  對數據進行標準化處理,其目的在於統一數據格式。數據的格式指數據以特定位置、特定形式組合的方式進行表示的規定。標準化的數據其實就意味著統一的數據格式,如此,在處理時就能省去對各個數據項進行重複說明,能提高數據處理的效率。

注:在《數據處理入門(下)》中,所有的圖片均來自網絡。

數據處理入門(上)

內容簡介

簡述計算機軟硬件系統的必要基礎知識;

著重討論數據處理這一概念——包括數據的收集、轉換、表示、傳輸和處理(以及處理的環境及標準化和應用的特點)。

對於數據處理的許多基本技術、設備和概念都做了詳細的圖解和說明。

第一章 數據處理概述

1.1 引言

本章就數據處理的一些基本概念作一般地討論。

數據處理(Data Processing),常記作DP或EDP(電子數據處理),此詞在商業方面用得較多。

何謂“數據處理”?

首先,我們要知道什麽叫做“數據”。

數據可簡單定義為——那些被處理后能產生信息的東西。即,數據可被認為是任何的基本事實。而信息可被看作是我們借助於數據(基本事實)作出行動或決定的有用的東西。→那麼,利用一組基本事實去產生信息的過程就是所謂的處理。

商業上,數據可以是關於工作時間、接收票據、庫存量以及供貨單位和顧客地址的事實。所有這些大量的數據都需要去收集、排成順序并組合或表示出來,以利於人們去管理商業。如,一份交給顧客全部貨物的清單以及他們所付的款數就是一組數據。現在對數據作出處理——把那些過期還未付款的顧客挑選出來,列成一份清單,這份清單上的數據是有用的(對商家而言),這些數據就是信用管理員所需要的信息。

1.2 數據

認識到數據的定義之後,我們就必須考慮其中所涉及的定義要素。

首先是處理。

數據一般被認為是能輸入到某個處理系統中去的一些事實。而就處理而言,不局限於計算機系統。因為不僅計算機能對數據進行處理,人也能對其進行處理。因此,觀察人如何處理數據信息,我們可以找到計算機進行數據信息處理的模仿對象/方式。

你可以對日常數據進行觀察。OK,我們的結論是:數據的表示存在三方面要素。就數據本身而言,其是以符號/文字/圖案等具象方式存在的。因此數據的表示使得數據得以存在,而能為人所處理/感知的數據。因此其表示附帶相應的要求。

一則,以適當的方式提供——即數據應該用一種可以被我們理解/懂得的語言來表示/書寫。

二則,數據要求有適當的精確度。例如,天氣預報不可能給出準確的數字,但實際上,觀眾只需要能夠感官上認知天氣冷暖的數據即可;而牛奶成份指示器則需要絕對的精確和正確,因為顧客需要這個精確度來判斷牛奶的質量。這說明數據表示時需要恰當的精確度。

三則,數據需要形象的表示方法。既然人對數據的表示是有要求的,(即並不是任何形式的數據都可被人接受/理解,更別說處理了)那麼恰當/正確的數據表示方法就是能讓數據滿足這些要求的存在。例如,公墓的墓碑上刻有碑文,碑文要求保留很長一個時期,因此用石刻的方式。而路況廣播所傳遞的信息只是憑司機當時的聽覺,因此可以用無線電波的方式傳遞數據信息——滿足了瞬時效應和清晰度要求。

1.3 處理

數據是用來幹什麼的,這一目的就決定了信息的特徵。

數據經過處理便產生輸出——信息。這種處理也許很簡單,也有可能很複雜。

數據處理入門(上)

買東西的例子事實上還說明了數據處理系統的另一個共同特性。如果主婦本人不親自到商店去,怎麼辦呢?她可以拜託她的鄰居去幫她買這些東西啊。她只要把購物清單交給鄰居就可以了。這時,主婦這個處理系統的輸出就變成了鄰居這一處理系統的輸入了!數據處理系統常常就是一環扣一環,這一階段的輸出構成下一階段的輸入!

明確了數據處理的輸入和輸出內容,我們還需要瞭解處理的內容。

科學家經過觀察,總結認為,處理可以看成由下列活動的一個或多個組成:

——計算(例如,需要的食品量與庫存的食品量之差)

——比較(例如,已有的方案里,是否有某種情況存在?)

——邏輯(例如,按正確的順序進行算術運算)

——決定(例如,賭馬,猜測哪匹獲勝)

1.4 機械化

上面的例子,都沒有涉及到任何機械或電子的處理形式,因為它們都是比較瑣碎的事情或者說完全不適合機械處理。適合機械處理的多數作業是在商業和工業領域中,而非普通家庭環境中。

那麼,適合機械處理的一個數據處理系統是什麽樣的呢?

機械適合于做一些涉及到重複性工作的事情。

只有一個作業要做的地方,採用一個簡單的機械就行。若有多個作業或者多個子處理一次完成,那麼有可能要考慮全部的機械化。

因此,重複性的工作是一個有利條件,而可自動操作的順序是另一個有利條件。

從而,我們可以設定計算機作為處理電子數據的機器,按照輸入-處理-輸出的順序來進行。對於這三個不同的階段,通常都設有一個單獨的設備。

首先來看輸入。人類通過感覺來獲取外界數據/信息,文字中傳遞的數據/信息通常是由我們的眼睛獲取到的。計算機并沒有眼睛,但它有一個能完成類似工作的設備——輸入設備。例如,某些計算機的輸入設備設有光敏元件,它們可以掃描預先準備的數據,并把明暗不同的圖案轉換成計算機可用的電子信號。這就相當於人的眼睛將信號送給大腦。

另一種形式的輸入設備,即打字機上的鍵盤。它連於計算機,按一下鍵就產生一個代碼電子信號。

同樣,有多種方法能是計算機產生它的輸出。恰當地從這些方法選取才能順利地完成計算機作業。

輸出可以通過一台打印設備,一台和打字機一樣的小型設備或一台高速的大型設備產生。對於那些不需要打印的記錄,可用電視螢光屏顯示輸出。

再來討論處理。上文已闡述過,計算機是一個處理系統,我們通過對人這一處理系統的觀察,進行了計算機處理系統的設計。因此,處理系統的要素不變,仍是輸入,處理,以及輸出。

計算機由輸入、輸出設備和一個中央處理器(CPU)組成。

CPU擔負處理的職責,處理的內容就有——計算、比較、邏輯、決定。

目前,CPU設計有一個運算器(AU)——負責算術、比較、決定;一個存貯器(內部存儲器/內存)——存放輸入的數據、中間結果、最後結果、程序(即使一個簡單的任務,長春也涉及到一個以上的操作。如(5+6)×26這個代數式的運算,並且,除了不只一個操作這一特點外,運算時,正確的運算順序也十分重要,譬如(5+6)×26與5+6×26的運算結果不一樣。);一個控制器(CU)——控制程序的執行順序。

通常,當我們給定一作業讓計算機來做時,必須將作業排成一個操作表,我們把這種表稱為程序。一個表就代表一個計算機的程序或一個事件的程序。程序/操作表跟數據一樣,存放在CPU的內存中。通過以上敘述,現在可直接對數據處理的兩個系統進行比較。

數據處理入門(上)

對於這兩個處理系統,我們做了如下抽象:

數據處理入門(上)

在人工數據處理系統中,辦事員按照自己的手工操作過程親自控制操作順序,並且每當完成一步,他就去處理下一步。當他完全處理了輸入,並且產生了輸出;他有得繼續進行下一個輸入的處理工作。這種採用相同方法的重複工作一直到IN文件架上空了,或者他要轉到某個其他的任務(比如午餐間隙)才會中斷。

而計算機完成這種處理,通常是直到那裡沒有任何的輸入了或者遇到了一個終端信號,改終端信號發送給控制器(CU)并告訴它轉到更高優先級的作業。

第二章 處理的主要類型

2.1 適應性

本章對那些特別是在商業環境中適合計算機的集中數據處理類型進行討論。

一個操作執行的越頻繁,適合自動化處理的可能性就越大。

2.2 成批處理

工資管理一直是計算機的一個傳統任務。

每個雇員的數據量是相當小的,例如工作小時、等級、發款日期等。需要的主要結果也很小,如工資變動情況;儘管計算工資的規則相當複雜,但是這個規則對每個雇員卻是完全相同的。因此,一旦設計好這種指令程序,就可用於任意多個雇員了。

這一類的應用就叫做成批處理——以信息週期為單位,把數據收集起來,集中進行處理,這種處理需要一些時間,一次處理結束之後,在下一個週期重複進行相同的整個處理過程。

2.3 聯機處理

處理系統的應用還有另外一種類型——聯機處理,這時信息並非成批收集起來進行處理,而是立即進行處理。有些作業按這種方式進行處理會更加有效。

2.4 系統的改進

第一章中,家庭主婦總需要不斷重複家裡食品的儲備工作,工業中也有類似。爲了保持必不可少的物品的儲備,必須按照下列因素來重新訂購物品:什麽物品預計會被使用;當前的庫存量;預計的交貨日期;以及購買策略。→並非所有庫存物品都要進行一次重新訂貨,而計算機的速度卻是允許把整個庫存量檢查一遍并指出短缺物品項目的,這可以大大提升工業運作的穩定性。

計算機還能隨時保存使用的記錄,然後按一定比例進行綜合預報。這項工作如果用手工來做會花費很多的時間、金錢,但人們使用計算機卻可以在費用和對大數據量的處理需求之間找到平衡。這是成批處理的一種應用。

廣義來講(泛泛而言),一個工資管理系統就是一個辦公室工作過程的在線,但在一個庫存控制系統中,一個計算機化的系統要比一個辦公室工作系統的執行能力強的多。

2.5 大型文件

儘管處理過程簡單,但若涉及到大量需要被處理的數據/對象/文件的時候,使用計算機很是非常值得的。例如,政府互助協會需要對投資者和借款者的帳目做大量的存儲記錄;類似銀行要保留其大量顧客的帳目文件等等。

2.6 過程控制

目前,我們只討論了人言所能識別的數據——如字母或數字,並非所有的數據都是如此的!在過程控制中,數據可能是溫度,物資的流量或者重量,或許還會存在著一種要求,使上述數量限制在可容許的範圍之內。這時,每一個數據採樣經過檢查也許會引起校正動作,最好在下一個數據取樣之前完成這個校正動作。這類處理就叫做實時處理。

當前,實時處理已經越來越多,如導彈系統,反導彈系統和交通管理系統。

2.7 分佈式數據處理

很多商業機構分佈在廣闊的地理區域內:如銀行、國稅局、民航局。同一商業機構,都需要存取公用的商業信息。一種辦法是一個中央計算機內保留所有的信息,并在遠程(遠處)的辦公室打電話更計算機中心聯繫,讓一個操作員去詢問計算機。另一種辦法是直接將遠距離辦公室跟忠言計算機聯結起來,這要借助於這個國家的郵政電話服務機構。

這樣,在一個銀行的分行,就可以從計算機文件中查找出任何帳目的平衡情況,並且能就地顯示出來,同時將請求發送給計算機中心,然後通過電話線再把回答送回到分行。有時對一個本地的辦公室來說,在送往計算機設備之前和從該設備接收之後,最好先把本地辦公室的信息處理一下——這件事由本地的CPU來做。

用這種方法,一個零售的分理處就可以在本地計算機上提供發票和加工訂單,為匯總帳目而把這些數據發送到中央處理機,而且還能接收到其他分理處庫存情況的信息。這種計算機和終端的網絡就叫分佈式數據處理,包括了數據傳輸。

第三章 存儲程序的概念

3.1 CPU

計算機程序在CPU的存儲器里。

最早的一個程序的定義是:一個程序是一個指令表。

或者更確切地說:一個程序是一個計算機可識別的指令表。

3.2 指令類型

上文中,我們說要執行某個作業,我們需要把它的執行步驟變成一個操作表,即程序。而由程序的定義(一個程序時一個指令表),我們可以知道,指令表就是操作表。則指令即操作。

而我們確切地指出了——一個程序是一個計算機可識別的指令表。那麼,什麽樣的指令才能被計算機識別呢?

還記得前文中我們對操作的分類么?

指令即操作,則指令也可分為計算、比較、邏輯、決定四個內容。

在計算機中,它們分別對應於算數運算指令、判別指令、轉移指令和I/O指令。數據的獲取(輸入)是爲了用來運算,運算是爲了比較(判零),比較是爲了改變執行順序(轉移),按要求的順序執行是爲了得到結果(輸出)。

3.3 程序流程圖

把一個程序直觀地描述出來,最簡單的方法就是用一系列的方框,每一個方框里都含有一個說明,並且把這些方框用流線按其先後順序連接起來。這就是所謂的一個“流程圖”。

程序流程圖就是前文中所述操作表/指令表,這個名稱只是對四種類型進行不同的表示及關聯方法設定后取的一個新的稱呼,代表它符合公認的表示規範。

下面舉個例子說明。例子:根據本周周號推算下周周號(周號範圍在1-52)。

上文中的流程圖直觀地反映了一個作業的完成步驟,它就是我們最早提到的操作表!我們用有統一規範的語句將它們表示出來,這就是源程序啦,源程序的每一個步驟就是一個指令/操作。圖中同樣還反映出計算機在做判別時是需要判零的哦。

基於上文已做的鋪墊,我們來細細考慮一下計算機數據處理系統的處理過程吧!

首先,獲取數據(輸入)。誒?不對啊,計算機不是很笨嗎?小猴子說,它只能判零啊,既然如此,這麼笨的傢伙怎麼知道什麽叫做獲取數據?

好吧,讓我們來看看目前的技術是怎樣解決這個問題的。

(某些頭腦異常的傢伙)經過仔細觀察,得出結論——程序中所用到的數據可以分為兩種:

——輸入數據,通常是變量和未知量(如,上例中的本周周號),以及變量結果(如:下周周號);

——程序數據,多事不變的已知量(如,上例中1和52);

想辦法讓程序知道要找的數據在什麽地方,並且讓它知道去做什麽。所以可以把一個程序步或指令剖分為下列步驟:

——去做啥,即操作;

——在哪兒,找到參加運算的數據存放地。

3.4 存儲器編址

利用計算機可以進行判零的特性,我們把計算機存儲器編以不同的地址標號。事實上,一台計算機的存儲器可分成許多大小相等的存儲單元,并給每個單元都分配一個標誌號,稱之為地址。由於從一開始,地址系統就是從零開始算起的,因此,通行的規範是從零開始對存儲器編號。

上文就已經說過,我們把程序也同數據一樣存放在存儲器里。如此,程序指令和數據都有了可以被計算機判零的編號,傻傻的計算機就可以干各種複雜的工作了!

歷史上,第一台大規模計算機(1946年美國製造),即電子數字計分計算機,它在具有好幾百個插頭和導線的插件板上設置了程序代碼!這種辦法在程序之間差異大的情況下,極易出錯,而且很費時;而就在新中國成立的同一年(1949年),劍橋大學研製出第一台內部存儲程序計算機(EDSAC),EDSAC就是把程序同數據一樣存放在存儲器里的,然後計算機從程序起點處的指令開始一次執行這個程序。當一條判別指令到了滿足條件的地方時,它就必須轉到別處去執行另一條指令。OK,如此,計算機需要的就只有兩個東西了——指令/操作和地址。

由此得出計算機存儲器編址的三個要義:

——存儲器里的數據和指令時存在不同的位置的;

——每條指令包含一個指令內容(即操作)和一個地址(至少一個地址);

——地址就像門牌號,一個地址號對應的內存單元存放的可以是數據,也可以是一條指令。

3.5 程序順序

計算機最強大的功能之一就是重複執行一個過程哦,所以我們往往需要一條轉移指令來讓它重新進入前面已執行過的程序。

下圖就是一個典型的存儲程序的邏輯圖。

數據處理入門(上)

3.6 累加器與寄存器

在周號的例子中,當我們從本周周號里減去52時,那麼原來的結果就被破壞了。這種破壞性的運算可能是非常麻煩的,因此通常都用另外的叫做寄存器的存儲單元(可以對初始數據、中間結果及結果都分配內存空間,使數據可以逆向尋回)來做這種運算,而這些寄存器中的主寄存器常常又叫做累加器——如果累加器的內容為0/非0,那麼就轉移。

其他寄存器是用來做算術的,這種算術有些指令本身就可以做,尤其是修改地址——叫做“變址”,這些寄存器就稱為變址寄存器。它們和累加器一樣,也能做判別,但只能判零。

對不同的操作數(它們的地址有一個簡單的相互關係)進行同一種操作時,就要用到變址寄存器。

如,我們要把地址100,101,102,……,109的內容加起來,那麼程序就應該像下面這樣:

0 清累加器[將累加器置零]

1  Add(100)[將100的內容加到累加器中]

2  Add(101)

3  Add(102)

4  Add(103)

5  Add(104)

6  Add(105)

7  Add(106)

8  Add(107)

9  Add(108)

10 Add(109)

11 Print(累加器的內容)

3.7 修改地址是個問題

如果我們能把一個變址寄存器的內容跟地址加起來表示修改地址,那上面的程序就可以短多了!行不行呢?

作如下嘗試:

恩,我們把變址寄存器加上一個圓括號,就像(IR)一樣,用來表示一個變址寄存器的內容。現在,一個地址的內容就可以寫成(100+(IR)),如果IR地址的內容是5,則這個式子表示的就是地址100+5或105的內容~。

這時程序可以改寫成:

0        清累加器

1 清IR

2  Add(100+(IR))

3  Add 1 to (IR)[(IR)+1→IR]

4  IF(IR)=10,Jump 6

5  Jump 2

6 Print(累加器的內容)

如此,我們已經節省了幾條指令,雖然在此省的不多,但要是在一個很長的程序按這個比例去省的話,那麼將會省很多指令。所以,這樣的考慮是有價值的。

3.8 子程序

程序中的另一種要求就是在不同的地方要作同一種處理。爲了避免多次寫這段程序,我們只須對該程序引入一個專門的入口和出口過程,使其在整個程序中只出現一次。這就是子程序。

在進入一個子程序之前,程序必須在當該子程序執行完時,把要被執行的指令的地址存儲起來。這種附加的地址叫做“鏈地址”(指針),而且子程序的最後一條指令總是“GOTO鏈地址”(首/尾指針)。

3.9 機器代碼

目前我們談到的程序實際上都在計算機的存儲器里,這樣的程序,要能夠被使用就要有各自的實際地址,計算機根據這些地址來識別它們。而真正的計算機指令是下面這樣的:

11100101

10001000

11011101

……

這是“機器代碼”指令,計算機只認識這種形式的指令(即可以判零)。

你願意用上面這低級又特別繁雜的方法來寫程序?

如此浪費時間,還容易出錯,這可不是明智的選擇。這不,後來就發展了更好的辦法。這裡,我們只討論兩個主要的改進——自動翻譯程序和高級程序語言。

3.10 地址標號

爲了和只會說機器代碼(即0和1)的計算機進行交流,我們做的第一個改進,就是發展了一個自動的翻譯程序。

利用這個自動翻譯程序,就不必用二進制數11000011來表示地址195了,只需要給這個地址取一個名字,比如“A”,“B”,或“TAX-PAID”。每次用到這個地址的時候,翻譯程序就可以自動地將他轉換成正確的二進制代碼。

這樣,我們要記的就是名字,而計算機來記憶那個名字對應的二進制數字地址,找到該地址里存放的數據或指令。

3.11 語言法則

還是爲了和只會0和1的計算機溝通,第二個改進可謂聲名遠播——它就是我們現在編程時使用的高級程序語言。

這個改進是基於第一個改進的。有了自動翻譯程序后,我們可以使用人意識里已有意義的代號來表示不同的二進制數,而如何映射全憑自動翻譯程序的設計者喜歡。我們對自己說的語言進行剖析,然後再仿照我們的日常語言給那些莫名其妙的二進制數加上代號,如此,高級語言就誕生了。

高級語言使人的工作變簡單了,好記又快,而且又精確(一個代號對應其固有的二進制數,而人工輸入二進制數的話很容易被密密麻麻的0和1弄得眼花繚亂以致出錯)。用高級語言寫的程序指令就需要多一步處理——由機器/翻譯系統翻譯成機器代碼。各種高級語言都各自有一個專門的翻譯系統。

翻譯系統事實上是一個計算機程序,我們稱之為“編譯”程序,它能接受程序員的指令,又能輸出機器碼指令。

3.12 計算機程序

現在,你對計算機是否有一個明確的認識了呢?

一個計算機程序就是計算能能夠按其說明的順序去執行的一組指令。指令有四種類型,即算術指令,判別指令,轉移指令,輸入/輸出指令。

高級語言允許用較簡單的,更容易明白的形式去編寫計算機程序,但用高級語言編寫出來的程序要通過編譯程序翻譯成機器碼。

計算機的存儲器是由一組經過任意編號的單元組成的,這種單元能保存指令和數據。尋址一個存儲單元常常是通過一個名字或者標號,而非難於記憶的二進制單元號(還容易出錯)。

在高級語言和機器碼之間的語言是彙編語言或低級語言。這種語言也是要通過翻譯程序才能變成機器碼。

讓我們回到開始,我們對生活中的工作進行了觀察,發現我們在做的事情實際上大多數都是數據處理。接著我們對“數據”的概念進行了思考,給出了一個可行的原理體系——數據-數據處理-處理系統-輸入,操作/處理過程與輸出-操作/處理過程-操作表-指令表/程序-指令-機器碼指令-改進指令-翻譯系統/編譯程序-高級程序語言指令,至此,我們對問題的處理才從身體力行轉變到了只要動動手指頭交給計算機去做的地步,而這樣的變化在計算機及高級程序語言誕生了迅速蔓延開來,我們的社會發生了巨大的變化——這邊是二十世紀中後期發生的轟轟烈烈的第三次技術革命!

第四章 數制

4.1 進制轉換表

事實上,我們意識里的數字幾乎都是默認其為十進制數為前提的。

十進制只是一種計量數量的方式,我們剛好有十個手指,所以人類選擇了十進制,但計算機沒有十個手指,它只有高電位(電路通路)和地電位(電路斷路)兩種狀態,所以它只認識0和1,因此,計算機使用二進制。

就像九九乘法表一樣,進制轉換表需要你爛熟於心。當記住,我們已經學過的加、減、乘、除都是十進制的,因此,你做進制轉換運算時,若沒有特殊聲明,都被認作(包括你自己)是十進制運算哦!

數據處理入門(上)

下面給出一個進制轉換的例子:

數據處理入門(上)

4.2 模擬計算機

需注意,計算機不僅只是“數字”計算機,還有模擬計算機。

模擬計算機中,我們用量來表示數(無論採用生麼數字)。量就是只有帶上單位以後才具有意義的數據。並且,“數字”意味著數據以離散的方式在計算機內表達,“模擬”意味著數據以連續的方式在計算機內表達。

第五章 中央處理器/CPU

5.1 引言

前面已給出了數據處理與計算機的大致輪廓。因此,現在我們可從計算機CPU出發,進一步分析數據處理系統的各個部份。

CPU含有三個部份:

——運算器(AU):進行算術和邏輯運算;

——控制器(CU):控制作用;

——存儲器:保存程序和數據。

接下來,我們依次討論。

5.2 運算器

5.2.1 算術運算

運算器只做加減法,每一次只能處理兩個值。

AU中有一個累加器和一個計數器。如果累加器(初值必須是零)搭配上計數器一起使用,就可以進行乘法和除法運算。有了加減乘除,就可以編寫簡單的數學函數,通常我們把這些函數設計成專用電路,并把這些運算構成的專用電路叫做“微程序”,裝入AU。

微程序裝入硬件后,我們可以通過簡單的機器代碼指令,如乘法,去調用這些微程序,避免代碼的繁複。

5.2.2 邏輯運算

邏輯器執行的功能是按位/逐位進行比較。

計算機內有三個邏輯比較運算符:AND、OR、NOT EQUIVALENT(=NOR)。這三個邏輯運算符的主要用途之一就是對一長串的位的模式進行比較。

5.2.3 轉移

AU除了算術運算和邏輯運算外,另一功能是當程序指定有“轉移”或“GOTO”時進行判定操作。一個轉移的作用,就是改變計算機所遵循的嚴格的順序操作,使它去執行與緊跟著的存儲單元內的下一條指令不同的另一條指令。

轉移是AU對自身基本功能——邏輯/算術運算的再運用,可以理解為:當程序中出現“轉移”或“GOTO”→判斷是條件轉移還是無條件轉移→

→無條件轉移:給出轉移目的地地址號。

→條件轉移:判斷條件是否為真/符合事實(1)→真:轉移;假(0):不轉移。

5.3 控制器

CU實際上是一個轉接中心。它只會和協調程序指令以調用全部操作,其中包括輸入或輸出設備的啟動或停止,包括將數據送到存儲器和從存儲器接收數據,也寶庫存儲器與AU之間的數據傳送。

CU將保持計算機處理直到遇到下列三種情況之一才會停止:

1) 全部數據處理完畢,并在作業末位發現HALT指令;

2) 在系統的某處發現了一個故障;

3) 停止或中斷計算機。

由於控制器實際上是一個轉接中心,所以,我們可以通過日常生活中非常熟悉的電話交換系統(也是一個轉接中心)來間接認識它。

下圖給出一個電話交換系統:

數據處理入門(上)

由此,你可以想像出控制器的工作情形——一個控制器具有所有可能的數據通路,它按指令(根據自身的指令條件/原則)對這些通路的要求進行必要的連接。

當我們說到“分佈式數據處理”或“連接處理器”時,不難想像它們不過是上述這些交換機連在一起的簡單表達而已。

5.4 實際的算術運算

這裡我們以加法為例。

問題:A+B,產生一個結果C。

一條完整的指令將完成系列操作:把地址A的內容和地址B的內容相加,結果放在地址C中,然後到地址D中取下一條指令。

這個求和過程需要在基本硬件上來討論,因此,我們需要先認識三個基本硬件概念:寄存器、加法器、機器週期。

下面給出一個CPU結構抽象圖:

數據處理入門(上)

那麼實際的加法運算究竟是怎樣完成的呢?

首先,我們解釋一下上文所提到的三個概念:

——寄存器:一個能接收信息,保存信息以及在控制器只會下傳輸信息的設備。不同寄存器的名字跟它的用途有關。一個地址寄存器保留一個存儲單元的地址或者一個IO設備的地址;一個指令寄存器含有代執行的指令;一個累加器保留累加的值(最後結果或中間結果);一個存儲寄存器含有送往存儲器的數據以及從存儲器接收的數據。

——加法器:將兩個寄存器的數據相加,結果放在第三個寄存器里。這就是加法器。

——機器週期:計算機中,所有的操作都發生在固定的時間間隔內。通過一個i的電子時鐘一告訴發出有規則的脉衝信號來確定這些時間間隔。這些時間間隔便是機器週期,即一個機器週期(=固定數量的脉衝)就是計算機完成一個機器操作的時間。完成一條指令所需的機器操作次數取決於它的複雜性。

下面,我們回到上文的問題,我們用指令表示之:ADD A,B,C,D。

它的時序(即微程序)是:

0        把指令從所在的存儲單元(指令地址寄存器含有該指令的存儲地址)取出,放到IO寄存器。

1        把該指令放在線性的指令寄存器中。

2        把叫做ADD微程序的第一部份進行譯碼。

3        ADD微程序將住存儲地址A放入現行地址寄存器中。

4        通過讀取週期來去地址A的內容并放到IO寄存器中。

5        IO寄存器的內容放入第一個加法寄存器(如x)中。

6        ADD微程序吧B主存儲地址放到線性的地址寄存器中。

7        同5.

8        同6,將本內容放到加法寄存器y中。

9        把x和y從最低有效位(右手邊)開始想家,結果放在加法寄存器z中。

10    z的內容傳送到存儲IO寄存器中。

11    從現行指令寄存器中取出地址C并放入線性地址寄存器中。

12    通過寫週期將其結果放入C中。

13    對D做同12的處理。

14    通過讀週期吧D的內容取出并放入IO寄存器中。

15    把內容傳送到線現行指令寄存器中。

這些微程序都在控制器(也包括時鐘)的控制下進行,它們作為一個完整的功能硬化在硬件裏面。(待续)