- 走入IBM小型機世界
- Orian編著
- 47字
- 2018-12-28 23:12:11
2.2 CPU特性
CPU是計算機的核心,操作系統、程序都依靠CPU執行,CPU的特性對程序和操作系統的使用影響巨大。
2.2.1 32/64位問題
盡管32位、64位已經成為過時的話題,但是很多32位的設備還在運行,特別是從我們“攢機器”的角度來看,經常要碰到舊機器,32位和64位成為不得不考慮的問題。這其中,有三種32/64位的技術分別:CPU有32位和64位之分,操作系統AIX(內核)有32位、64位之分,甚至應用程序接口(API)也有32/64位之分。
● 通過查看CPU型號,可以得到硬件32/64位信息:
#lsattr -El proc0
將顯示CPU型號,其中64位的CPU包括:
(1)PowerPC_RS64。
(2)PowerPC_RS64 II。
(3)PowerPC_RS64 III。
(4)PowerPC_Power3。
(5)PowerPC_Power3 II。
(6)PowerPC_POWER4。
(7)PowerPC_POWER5。
(8)PowerPC_POWER6。
如果是以上類型CPU,則表示硬件支持64位。
● 檢查程序32/64位:
#dump -ov filename | grep bit Magic = 0x1df(32-bit XCOFF)
如果是32,則這是32位程序,否則是64位的。
# bootinfo -y
64 →64位硬件,否則是32位硬件。
# bootinfo -K
32 →32位內核,否則是64位內核。
32位和64位的不同組合對我們有什么影響?最主要是兼容性問題。如表2-1所示,圖2-5則顯示了匹配關系。
表2-1 32位和64位內核的不同組合

注1:盡管AIX 5版本支持64位內核,但即使在64位硬件上安裝,在一些比較老的操作系統版本,例如5.1版本上,默認情況下也沒有開啟64位內核(執行64位程序沒有問題),需要手工開啟64位。

圖2-5 硬件、系統內核、應用程序(API)之間32/64位匹配關系
AIX 4.3或者5.1以上版本都可以提供對64位程序運行支持,但有如下要求:
1.安裝bos.64bit
如果沒有安裝,則找不到/etc/methods/cfg64文件,在SMIT中也就不能打開、關閉64位執行環境(實際上就是在inittab文件中增加了執行這個支持64位的程序)。通過:
#lslpp -l bos.64bit
可以檢查是否安裝了bos.64bit程序包(通常在硬件支持64位的機器上安裝操作系統會自動安裝此程序包)。但安裝了此程序包也不等于可以打開64位運行環境,如果你在32位硬件的機器上安裝了此程序包,則你可以在這臺32位的機器上直接編譯出64位的執行程序,然而你不能執行它!
2.需要64位硬件
硬件列表請參考支持64位的CPU型號。
3.開啟內核64位支持
#genkex | grep syscalls64
可能得到這樣的提示輸出:
1ac8170 2b0 /usr/lib/drivers/syscalls64.ext
注意
安裝了64位驅動擴展并不等于內核是64位的。只有在AIX v5以上版本,才可能有真正64位內核。這個內核擴展驅動僅僅代表著可以在此32位內核的機器上編譯出64位的執行程序。而如果64位的CPU,但使用了32位的內核,則此syscalls64.ext程序允許執行64位的應用。
將內核徹底變為64位而不僅僅支持64位程序需要使用AIX 5以上版本的系統。在AIX 5.1以后版中,從64位內核轉為32位內核:
#ln -sf /usr/lib/boot/unix_64 /unix #ln -sf /usr/lib/boot/unix_64 /usr/lib/boot/unix #lslv -m hd5 注:如果hd5有鏡像,則要在每個鏡像磁盤上都進行bosboot操作 #bosboot -ad /dev/ipldevice(或者bosboot -ad /dev/hdisk0,以及另一個鏡像盤) #shutdown -Fr
從64位內核轉為32位內核:
#ln -sf /usr/lib/boot/unix_up /unix 注:多CPU的機器使用unix_mp替代unix_up,下同 #ln -sf /usr/lib/boot/unix_up /usr/lib/boot/unix #lslv -m hd5 #bosboot -ad /dev/ipldevice(或者bosboot -ad /dev/hdisk0,以及另一個鏡像盤) #shutdown -Fr
注意
最新發布的POWER 6小型機以及AIX 6.1操作系統已經不再提供對32位硬件和操作系統的支持,也就是AIX 6.1不提供32位內核,而POWER 6也不能運行32位內核。但這并不影響32位程序在POWER6和AIX 6.1上執行。
除了兼容問題,32/64位還有什么影響?系統性能和一些限制參數也隨32/64位情況不同,已經超出本書希望講述的內容,請參考后續出版的圖書。表2-2所列出的是32/64位內核所影響的系統參數。
表2-2 32/64位內核所影響的系統參數

注:
① 每個VG都有一個Major Number,有一些已經為操作系統和設備保留(例如rootvg的Major Number總是10),執行lvlstmajor命令可以查看可用的Major Number。Major數限制了一個操作系統中允許的最大設備數量,包括硬件設備和邏輯設備(例如一個邏輯卷或者一個VG)。
② 需要VMM映射的設備是被掛接(mount)后的JFS/CDRFS(日志/光盤)類型的文件系統、打開的JFS log(可以理解為是日志文件系統的更改記錄)設備、交換區(paging spaces),其中512,16保留給交換區。這些設備通過內核PDT(Page Device Table,內存頁面分配表)檢索,內核中的PDT是一個固定大小的數組。
③ 想達到最大的存儲空間1TB,必須用npbi=65,536(或者更高)的參數創建文件系統,而且frag設置為4096。
④ 為達到64G文件大小,文件系統必須用-a bf=true標記創建(或者在smit中選擇創建“big file enabled filesystem”,而且需要更改/etc/security/limits文件中對最大文件的限制(默認為2GB)。
2.2.2 查看CPU類型和主頻
非常遺憾,AIX 5.1以前的版本沒有專門的命令去查看CPU的頻率,但通過下面的命令可以看到一些關于CPU情況的信息:
$uname -M IBM,7028-6C4
這個結果并不是那么明確,你需要“查表”來分析所得的結果。如果安裝了bos.pmapi perfagent.tools這個程序集則可以使用:
# which_fileset pmcycles /usr/bin/pmcycles -> /usr/pmapi/bin/pmcycles bos.pmapi.pmsvcs 5.2.0.0 /usr/pmapi/bin/pmcycles bos.pmapi.pmsvcs 5.2.0.0 $pmcycles → 查看CPU主頻
在5.1以上版本這個問題得以解決,直接執行prtconf可以得到我們所需要的關于設備的幾乎全部你需要了解的信息:
$prtconf
另外有一個免費的程序可以查看CPU的類型,這就是lsc,可以從以下站點下載(下載后需要先用uncompress解壓縮,再用tar解包):
ftp://ftp.software.ibm.com/aix/tools/perftools/perfpmr/perf53/perf53.tar.Z
2.2.3 HMT,SMT,HT技術
SMT(Simultaneous Multi-Thread,并發多線程)是POWER 5以后芯片的新技術,它支持一個CPU內核同時處理兩條指令,因此可以最高達到單一CPU兩倍的處理速度(實際測試通常能達到1.3倍,某些應用下可以實現最高1.7倍左右的性能)。平均而言,打開SMT支持(默認)比關閉SMT能提升30%以上的CPU處理能力。SMT的能力來源于CPU中有許多寄存器,但是由于CPU通常在每一時間點只能執行一條指令(即使是流水線方式,某個時間點真正執行占據運算器的也只有一條指令,其他并行執行的指令只能處于解碼、尋址等狀態),因此大部分寄存器都沒有工作,處于閑置。
針對這種情況,IBM特別設計了一種寄存器結構,能夠對CPU的處理狀態進行跟蹤,當發現有閑置的寄存器,而此時另一個線程又可以使用它的時候(恰好需要另一個寄存器,例如一個在執行整數運算,另一個執行浮點運算),就在保持當前線程正常運行的前提下,讓另一個線程同時執行(使用另一個寄存器),這樣在同一時間,一個CPU就可以處理兩個線程的指令。實際上并非如此簡單,因為一個RISC CPU通常采用超流水線的方式同時執行多條指令,因此實現SMT需要進行比較復雜的判斷,而且也并不能保證CPU永遠可以同時執行兩個線程,所以通常SMT并不能將性能翻倍,而只可以提高30%左右。
與SMT類似,HMT(Hardware Multi-Thread,硬件多線程)也是試圖同時執行多條指令線程的一種技術,但與SMT的不同之處在于HMT必須等當前指令流空閑下來,才能切換到另一條指令線程執行。在CPU執行指令發生中斷的時候,就是當前指令流空閑的時候,通常可能原因是指令/數據緩存未命中(由于跳轉和地址越界,緩存中沒有當前需要執行的指令)。由于HMT對指令是否可并行執行的要求更為苛刻,所以對性能提高并不十分顯著。不同多線程技術的區別如圖2-6所示。

圖2-6 不同的多線程技術區別
在圖2-6中,Coarse Gain Threading(粗并行線程方式)是最基本的多線程技術,幾乎每種操作系統、硬件都提供對這種功能的支持。在這種方式下,當一個指令流暫時中斷(例如等待IO),系統/CPU就可以切換到下一個指令流執行;Fine Gain Threading(精細并行線程方式)是HMT的實現方式,Simultaneous Multi-Threading是SMT或者HT(Hyper Thread,Intel對并發多線程的一種稱呼)的實現方式。
IBM的POWER系列CPU從RS64開始支持HMT,到POWER 5開始更增添了對SMT的支持,其中HMT是無條件使用,而SMT則可以通過操作系統開關控制使用或者關閉。
#smtctl -? smtctl: Usage error : Usage: smtctl [ -m off | on [ -w boot | now]] -m用于開啟或者關閉SMT,-w用于控制此開關是重啟動后生效還是現在生效 # smtctl -m off -w now → 關閉SMT smtctl: SMT is now disabled. # smtctl → 查看SMT狀態 This system is SSMT capable SMT is currently enabled SMT boot mod is not set Processor 0 has 2 SMT threads SMT thread 0 is bound with processor 0 SMT thread 1 is bound with processor 1 # lsdev -Cc processor → 查看物理CPU狀態 proc0 Available 00-00 Processor proc2 Available 00-02 Processor # bindprocessor -q → 查看可用的邏輯CPU The available processors are: 0 1 2 3 # lsattr -El proc0 → 查看CPU參數狀態 frequency 1656000000 Processor Speed False smt_enabled true Processor SMT enabled False smt_threads 2 Processor SMT threads False state enable Processor state False type PowerPC_POWER5 Processor type False AIX 5.3 SMT off with 1 CPU Shows one CPU for physical CPU # sar -P ALL 1 2 → SMT關閉狀態 AIX chosin 3 5 00CC1C2C3C40 01/01/70 System configuration: lcpu=1 20:48:21 cpu %usr %sys %wio %idle 20:48:22 3 0 0 0 100 20:48:21 cpu %usr %sys %wio %idle 20:48:22 3 0 0 0 100 - 0 0 0 100 # sar -P ALL 1 2 → SMT開啟狀態 AIX chosin 3 5 00CC1C2C3C40 01/01/70 System configuration: lcpu=2 ent=1.00 20:36:24 cpu %usr %sys %wio %idle physc %entc 20:36:25 2 50 10 0 70 0.60 60.0 3 30 10 0 70 0.40 40.0 - 80 20 0 0 1.00 100.0
- 計算機應用
- Zabbix Network Monitoring(Second Edition)
- 精通數據科學算法
- 傳感器與新聞
- 內模控制及其應用
- 工業機器人維護與保養
- 從零開始學SQL Server
- Mastering Ceph
- 筆記本電腦電路分析與故障診斷
- PowerMill 2020五軸數控加工編程應用實例
- 未來學徒:讀懂人工智能飛馳時代
- Natural Language Processing and Computational Linguistics
- 工業機器人集成應用
- Wireshark Revealed:Essential Skills for IT Professionals
- ARM嵌入式系統開發完全入門與主流實踐