bloggerads

2015年10月22日 星期四

APIC (Advanced Programmable Interrupt Controller)

APIC (Advanced Programmable Interrupt Controller)有分Local / IO APIC這兩種,這兩種都會同時存在系統上,一個管外部一個管內部。Local APIC是每個CPU核心都有的,而IO APIC(Intel 82093)是外部接收中斷的中斷控制器,可以決定要以什麼型態以及發給哪個核心。

Local APIC可以處理以下的中斷:

1. CPU Core相連的I/O設備。比如直接連在LINT0,LINT1 pin上的設備。

2. 外部的I/O設備。這些設備産生的中斷先經過I/O APIC,然後再通過LOCAL APIC到達處理器。

3. Inter-processor interrupts (IPIs), CPU核心之間的中斷。當一個核心想中斷另外一個就可以用IPI。

2015年10月21日 星期三

MCA (Machine Check Architecture)

MCA 最初的設計是用來report hardware error,如 system bus errors, ECC errors, parity errors,
cache errors, TLB errors等等。

register主要分成兩部分 Global Control MSRsError-Reporting Bank Registers

2015年10月16日 星期五

UBUNTU 下的硬碟對拷方法

使用"dd"這個指令,將硬碟a完全複製到硬碟b
(Please prepare a ubuntu system to boot and use buit-in app "dd" to clone disk a, b, c,... to disk a, b, c,...)

1. find your disk by calling built-in app "Disks"  and find which disk is source and which one is destination

for example, my source disk is sdc, destination disk is sda


2. sudo dd if=/dev/sdc of=/dev/sda bs=200M


bs is very critical, although I type 200M, but actually average speed is around 100MB, if you dont give this parameter, the clone process might take very long time


3. wait then done.


<Note>
if you want to see the progress, open a new terminal and type: 

watch -n 5 killall -USR1 dd

Then the dd will start to show the progress every 5 seconds.

2015年9月14日 星期一

DOS boot menu problem (autoexec.bat + exe file )

在dos下想要做選單連結一些執行檔,但是將執行檔路徑寫在autoexec.bat 常常會碰到顏色花掉以及執行完執行檔卻回不了DOS的問題。
原因是因為在執行autoexec.bat時DOS initial還沒完成(還必須設定VGA mode跟執行int 21h回到Dos),因此autoexec.bat內不能直接執行用C寫的程式,要先寫執行一個組合語言寫的程式切video mode 以及呼叫DOS中斷來回到DOS,才會完整跑完DOS initial的流程。
在autoexec.bat最前面先放以下這隻程式,之後再跑其他的C語言寫的執行檔都能順正常執行,執行完後也能順利回到DOS

2015年8月20日 星期四

SATA : PMP (Port Multiplier)

這份spec常常被人遺忘,但她又確確實實定義在AHCI和SATA裡,先不論市場的接受度如何,相信做碟機相關技術的朋友都很好奇這個是什麼。

首先先看看spec所給的架構圖:


2015年8月12日 星期三

DRAM overview

每周部門meeting都會討論各function owner的issue,然後幾乎都是一堆DRAM的issue。
我自己也不是很懂,不過我把比較常聽到同事講的東西加上自己的理解寫一篇來分享

1. DRAM Data的寬度是 8 bytes (64bits)/ 含有ECC的則是72bits

2. Channel/Rank/記憶體顆粒的解釋:
  1. 1個channel可以有很多Dimm, 但每個channel有支援Rank的數量限制 (如H61/H81單一Channel只能接受2個Rank)
  2. 1條Dimm可以有很多Rank. (一條記憶體目前最多是有4個Rank)
  3. 1個Rank資料寬度是64bit, 由許多記憶體顆粒組成這個資料寬度, 1個記憶體顆粒資料寬度可能是8bit, 16bit,.同一個Rank上的記憶體顆粒他們的CS都是接在一起。
  4. bank則是cell 組成的二維陣列(Row & Column), 使用控制訊號為BA0, BA1,.
3. DRAM 頻率的算法
  • IO clock (或稱Bus clk, 外頻) = Memory clock (或稱Internal clk, 內頻)* 1或2或4或8 (要看是DDR或DDR2或DDR3或DDR4)
  • Data rate (數據速率) = Memory clock * 2或4或8或16 (要看是DDR或DDR2或DDR3或DDR4)
  • ex: 模組名稱: PC3-6400 (DDR3-800): IO clock=400MHz(因為是double date rate), 記憶體clock=100MHz, 數據速率=800MT/s
4. Bios會透過SMBUS讀取每根Dimm上的SPD來知道他的大小、資料寬度、速度以及電壓

5. Bank Interleaving技術: 原理是將奇數位址和偶數位址分在不同bank,減少讀寫當前字元而影響下一個字元的時間

6. CPU 至 DRAM 顆粒層級由大至小為 channel>DIMM>rank>chip>bank>row/column

2015年8月1日 星期六

UEFI : ROM 格式

相關設定請參考 .fdf (Flash Description Files)檔案

UEFI對於ROM的格式,可以分為下面幾項:(由大集合到小集合)

 Firmware Device (FD):
Bios Rom即是一個 FD, 一個FD可以由多個FV組成
 Firmware Volume (FV):
每個FV通常是由一個 header+N個Firmware Files所組成, 一般說的Boot Firmware Volume/ Recovery Firmware Volume/ Main Firmware Volume就是以這個為單位, FV的細部定義如下: