2014年4月23日 星期三

CPU的組成

CPU

CPUCentral Processing Unit 中央處理器」之簡稱,它是使整部電腦能夠運作的最核心、最重要的元件。號稱電腦的心臟, 其作用就是當電腦系統開始運作時,CPU從記憶體內,讀取操作它的軟體的指令與資料,透過ALU運算出結果後存回記憶體,同時由主機板,與外界的I/O週邊溝通,達到資料處理的目的。
 
CPU為控制整部電腦運作的中心樞紐,其內部包括控制單元、算術及邏輯單元、暫存器或記憶單元。
v算術及邏輯運算單元(ALU):加、減、乘、除及比 較、選擇、判斷等運算。
v控制單元(CU):翻譯程式中的指令的解碼功能及協調控制各部門依指令執行使電腦自動化處理資料。
v記憶單元(MU:儲存目前正要被處理運算的程式或資料,容量以KB為單位。
v暫存器(Register):暫時儲存資料,如用來儲存運算的累積器。其功能與記憶體相似 。
CPU的運作
它是透過一種叫匯流排(Bus) 來傳 輸資料。匯流排可說是CPU 、記憶體與I/O 裝置的訊號傳遞的共同通道。一次只能有 一個裝置去使用匯流排, 所以當同時有兩個以上的裝置使用時, 必須由主機板上的 I/O 控制電路加以協調, 先將優先權較高的裝置使用; 等該裝置使用完畢後, 才輪到 其他裝置使用。
CPU的內部暫存
 CPU 利用暫存器(Register)來指示程式 執行流程, 追蹤並記錄程式的運算結果。一個典型的CPU , 最少有下列暫存器:
@累加器(Accumulator) : 它負責讀取運算元做運算, 並且將結果轉移到其它暫存器或記憶體內。
@程式計數器PC (Program Counter):負責儲存CPU下一次所要執行的記憶體位址。
@指令暫存器IR (Instruction Register):負責儲存CPU所要執行的指令。
@堆疊指標器SP (Stack Pointer):負責儲存CPU目前使用的堆疊位址。
@位址暫存器MAR:負責儲存CPU所要存取記憶體資料的位址。
 

錯誤更正-漢明碼


漢明碼

漢明碼
所謂漢明碼(Hamming code)是一種錯誤更正碼,可檢查錯誤並更正。有關漢明碼的編碼方式說明如下:


(一)漢明碼的編碼:有關漢明碼的內容可以分成資料位元和核位元兩個部分,以傳輸資料中2的次方位元部分(第1,2,4,8.‥個位元)當核對位元(check bits)Ci,分別由資料位元第k個位元中符合(2I AND k)0的所有位元中計算1的個數,結果則視採用奇同位檢查或偶同位檢查而定,若採用奇同位檢查則結果若為奇數個1則取0,偶數個l則取1;反之若採偶同位檢查,則結果若為奇數個l則取l,偶數個1則取0。

(二)漢明碼的檢查:對各組核對位元作檢查,若引為核對位元Ci與其相關資料位元的同位檢查結果,則(Em-1, Em-2, ….E0)即為錯誤的位元位置,只要更正此一位元即可。




通用演算法
下列通用演算法可以為任意位數位產生一個可以糾錯一位(英語:Single Error Correcting)的漢明碼。
從1開始給數字的數據位(從左向右)標上序號, 1,2,3,4,5...
將這些資料位的位置序號轉換為二進制, 1, 10, 11, 100, 101, 等.
資料位的位置序號中所有為二的冪次方的位(編號1,2,4,8,等,即資料位位置序號的二進制表示中只有一個1)是校驗位
所有其它位置的資料位(資料位位置序號的二進制表示中至少2個是1)是資料位
每一位的資料包含在特定的兩個或兩個以上的校驗位中,這些校驗位取決於這些資料位的位置數值的二進制表示
校驗位 1 覆蓋了所有資料位位置序號的二進制表示倒數第一位是1的資料:1(校驗位自身,這裡都是二進制,下同),11,101,111,1001,等
校驗位 2 覆蓋了所有資料位位置序號的二進制表示倒數第二位是1的資料:10(校驗位自身),11,110,111,1010,1011,等
校驗位 4 覆蓋了所有資料位位置序號的二進制表示倒數第三位是1的資料:100(校驗位自身),101,110,111,1100,1101,1110,1111,等
校驗位 8 覆蓋了所有資料位位置序號的二進制表示倒數第四位是1的資料:1000(校驗位自身),1001,1010,1011,1100,1101,1110,1111,等
簡而言之,所有校驗位覆蓋了資料位置和該校驗位位置的二進制與的值不為0的數。
採用奇校驗還是偶校驗都是可行的。偶校驗從數學的角度看更簡單一些,但在實踐中並沒有區別。


資料位位置1234567891011121314151617181920...
編碼後資料位置p1p2d1p4d2d3d4p8d5d6d7d8d9d10d11p16d12d13d14d15
奇偶校驗位
覆蓋率
p1XXXXXXXXXX
p2XXXXXXXXXX
p4XXXXXXXXX
p8XXXXXXXX
p16XXXXX


 





CPU設備 input output

常見的輸入裝置有
輸入資料時,輸入單元會將這些資料先轉換成電子訊號,然後傳送至主記憶體內,讓處理裝置運算得到答案。


鍵盤 

最常見的輸入裝置,所產生的電子訊號將來會被轉換成字元。


滑鼠 

在平面上移動滑動時底部的圓球會滾動,目前光學滑鼠佔多數。藉著移動,同時將移動訊號傳回處理裝置,讓螢幕上的指標也跟著移動。可以說是當前操作電腦最重要的工具。


掃描器 

用來讀進特定的字母、數字或符號在商店中常使用如光筆閱讀機和條碼閱讀機這類設備平台式掃描器或導紙式掃描器是用來掃描照片或印刷文件到電腦中


光碟機
 
光碟機(CD-ROM/DVD-ROM)為儲存元件之一,容量大易於保存是其優點,且因其具唯讀的特性,適合用來存放不需經常變動的資料,或備份之用途。

數位相機
 
數位照相機Digital Camera)是一種利用電子傳感器把光學影像轉換成電子數據的照相機,有別於傳統照相機通過光線引起底片上的化學變化來記錄圖像。

觸控板
 
觸控板的英文名稱叫Touchpad,此裝置是一種在平滑的觸控板上,利用手指的滑動操作可以移動游標的一種輸入裝置。當使用者的手指接近觸控板時會使電容量改變,觸控板自己的控制IC將會檢測出電容改變量,轉換成座標。

麥克風
 
麥克風是利用導體間的電容充放電原理,以超薄的金屬或鍍金的塑膠薄膜為振動膜感應音壓,以改變導體間的靜電壓直接轉換成電能訊號,經由電子電路耦合獲得實用的輸出阻抗及靈敏度設計而成。 


而輸出裝置有
 
 

影像顯示器

影像顯示器又稱為螢幕(monitor),它的作用就是用來顯示所鍵入及處理後的資料,包括文字、圖形或影像。
列表機(printer)
列表機是用來將程式、資料或經處理過的結果,依列印方式而分有撞擊式及非撞擊式兩種,分述如下:
  • 撞擊式:表示在列印時印字頭和紙張有接觸情形。
  • 非撞擊式:表示在列印時,印字頭和紙張不接觸。
 

繪圖機(plotter)

繪圖機是將電腦主機設計完成的圖形予以畫出,是電腦輔助設計(CAD)的利器,其上有一支可上下左右移動的握筆器及數支不同顏色的繪圖筆,當程式執行後,它會自動取筆畫圖。依紙張展開情形有平面式和滾筒式兩種。
 

機器人(Robots)

機器人為電子計算機用來產生機械功能的輸出媒體,它能依據吾人設定的程式工作,例如焊接、噴漆、無人搬運車、裝配機器等。

語音應答系統(Voice response system)

將電腦處理後的結果,以語音發聲出來的系統稱之語音應答系統。


Audacity 和 Podomatic

Audacity
Audacity 的特色:
  • 多語使用者介面(切換時必須重新開啟軟體)
  • 匯入與匯出 WAV、MP3、Ogg Vorbis或者其他的聲音檔案格式
    • 從1.3Beta開始支援MP4、MOV、WMA、M4A 、AC03檔。
  • 錄音與放音
  • 對聲音做剪下、複製、貼上(可復原無限次數)
  • 多音軌混音
  • 數位效果
  • 波峰編輯
  • 雜音消除
  • 支援多聲道模式
  • 支援Nquist程式語言,讓您自行撰寫效果器
  • 對聲音檔進行切割。
 
Podomatic
 


2014年4月10日 星期四

IEEE754 浮點數

整體呈現

IEEE 754浮點數的三個域
二進位浮點數是以符號數值表示法的格式儲存——最高有效位被指定為符號位(sign bit);「指數部份」,即次高有效的e個位元,儲存指數部分;最後剩下的f個低有效位的位元,儲存「尾數」(significand)的小數部份(在非規約形式下整數部份默認為0,其他情況下一律默認為1)。

指數偏移值

指數偏移值(exponent bias),是指浮點數表示法中的指數域的編碼值為指數的實際值加上某個固定的值,IEEE 754標準規定該固定值為2e-1 - 1,其中的e為儲存指數的位元的長度。
以單精度浮點數為例,它的指數域是8個位元,固定偏移值是28-1 - 1 = 128−1 = 127.單精度浮點數的指數部分實際取值是從128到-127。例如指數實際值為1710,在單精度浮點數中的指數域編碼值為14410,即14410 = 1710 + 12710.
採用指數的實際值加上固定的偏移值的辦法表示浮點數的指數,好處是可以用長度為e個位元的無符號整數來表示所有的指數取值,這使得兩個浮點數的指數大小的比較更為容易。



浮點數表示法轉換範例:
符號部分則由於該數(3.14159)為正數故為0
指數部分:指數為1,由於指數部分是採用超127,也就是將原數加上127再放入圖中的指數部分,因此指數部分表示如後:(128)10=(1000 0000)2
假數部分取23位放入圖中的假數部分
(3.14159)10= (11.00100100)2= (1.1001001000011111100111110*21)2



範例:

(35.5)10
=(100011.1)2
=(1.000111000000000000000*25)2
5=(00000101) 2
5超127=(00000101) 2+(01111111) 2
=(1000100) 2

補數

對二進位而言有1補數系統和2補數系統兩個。

(1) 1的補數系統(1's Complement):1補數系統是指兩數之和為1,則此兩數互為1的補數,亦即0和1互為1的補數。換言之,欲求得二進位數的1補數,只需將0變成1,1變成0即可;例如10102 的1補數為01012

(2) 2的補數系統(2's Complement):2補數系統的求法是先取該數的1補數,再加1即可。

數字系統和二進位制

  1. 十進位制(decimal number system):十進位制是一種滿10進位,基底為十的數字系統,由0、1、2、3、4、5、6、7、8、9等十個數字組成,為日常生活中普遍使用的數制。例127810,其基底通常被省略,亦即1278。
  2. 二進位制(Binary number system):二進位制是一種滿2進位,基底為二的數字系統,由0和1兩個數字所組成,為電腦最基本的數字系統。,例1102
  3. 八進位制(octal number system):八進位制為逢8進位的數字系統,由0、1、2、3、4、5、6、7所組成,例如或4568
  4. 十六進位制(hexadecimal number system):十六進位制為逢16進位的數字系統。


十進位數轉換成二進位數

方法:
整數部份:將十進位整數連除以2,直到商數為0,再從下往上依次取出餘數。
小數部份:將十進位小數連乘以2,直到適當位數為止,從上往下依序取其整數
【例】43.62510 = _______________2
解:(a)整數部份
 
 

二進位數轉換成十進位數

方法:將2進位每一位數分別乘以其位值, 再把結果加起來即可。
【例】101011.1012 =__________________ 10
解:二進位數各位值如下: