プロセッサー初期化 -> BSP(?) -> 謎のソフト -> BIOS

っていう流れでBIOSに起動しているのかな？  
謎のソフトの所で、 in out命令でBIOSコードを読み込んでメモリーに取り込んでいるの？

それぞれのハードウェアを初期化し  
それぞれのハードウェアとはなんですか？ BIOS上でメモリーコントロラーやPCIやFPUやグラフィックのやつなんかを初期化しなくてもいいよね？  
でもPOSTを実行するながれは上記であげたハードウェアを初期化とエラーチェックみたいなんをしないとダメだよね？なんでやる必要があるの？
CC BY-SA 4.0
2022-01-30T19:45:18.910
86024
2022-02-03T03:23:03.503
2022-01-30T21:41:04.007
51165
51165
question
ハードウェア bios
初期化後になんかやっているよね？そこからBIOS起動しているよね？
何を訊きたいのか微妙に（というより全く）わからないのですが、「初期化」という単語をどうとらえているか、あなたと読者の間で合意が成立しないと回答しても無駄な努力で終わるというか。

> それぞれのハードウエア

PCを構成する各種要素のことです。例えば DIMM 例えば PCI-e カード例えばキーボード

DIMM を挿入せずに、あるいは挿入不完全で接触不良状態で電源を投入したら PC から見て主記憶装置が存在しません。あるいは DIMM
に不良があって/オーバークロックのし過ぎで CPU から見て正しく読み書き操作に反応しないなんてこともありそうです。

あるいは何か部品を入れ替えたりすることで OS を起動するべき大容量記憶装置が変わったり消滅したりすることもあるでしょう。

> BIOS上でメモリーコントロラーやPCIやFPUやグラフィックのやつなんかを初期化しなくてもいいよね？

各種部品（ボード類）が与えられた信号に反応するようになる＝そのボードの自己初期化は当然行われる前提で（質問者氏のいう初期化はこれのことだとオイラは想像する）でも
PC １台の初期化はそれだけでは不足で、全体の構成がどうなっているのか把握するとか、不良な部品がないかどうかとか、そういうののチェックは BIOS
(UEFI) レベルで行わないと OS の起動までたどり着くことはできないでしょう（PC/BIOS の初期化というのはこっち）

OS の起動以前の話として、今時の PC はディスプレイが複数個ついているものが普通で、どのディスプレイにどの解像度で POST 画面を出すのかなんてのも
BIOS レベルで存在認識・表示優先度の確認・出力先の解像度設定なんてのもやらないとユーザーが困る。
CC BY-SA 4.0
2022-01-31T00:56:42.827
86025
2022-01-31T00:56:42.827
8589
86024
answer
PC(と呼ばれるハード)を前提にします

CPUには DRAM, ROM などが繋がっていて 指定のアドレスから実行可能  
Power ON時に CPUは特定のアドレス(CPU種類によっては特定のベクター, など)から実行を開始する。その位置にはハード的に ROMが配置されている  
ただし電源入ったすぐは ROM, SRAMはともかく DRAMは使えないので初期化が必要です

(DRAMについて)  
Static RAM は CPUのレジスターやキャッシュなどにも使われていて, トランジスターの NOR ゲートを組み合わせた形。電流流れていれば使える  
Dynamic RAM はコンデンサーが使われており, 電流流れててもそのうち放電し尽くし消える。のでメモリーコントローラーで,
読み込んだ内容を再度書き直す「リフレッシュ」が必要。起動時にはそのタイミングなどの指定がないと記憶できない (DRAM Frequency)

参考:

  * SRAM <https://tinystones.net/mem/mem5.html>
  * DRAM <https://tinystones.net/mem/mem3.html>

* * *

「BIOS」にはいくつかの意味が含まれていて, 以下の意味以外にもあるかも

  1. BIOS: Basic Input/Output System のこと
  2. 起動時の ROM のこと。BIOSはファームウェアとして中に含まれている
  3. C-MOS のこと。ポタン電池でバックアップされた (CMOS SRAM 内の)情報

文字列出力, 文字列入力, ディスク I/O などの基本的な入出力は BIOS と呼ばれ, ROM
内にありサービスコールで呼び出すことが可能でした(過去形)  
最近の？ CPUは 32ビットモードあるいは 64ビットモードで動作しているので, 16ビットのコードはそのままでは動きません  
起動した OS 内の (必要とする) APIを呼び出すのが現在の形。OS側に, 必要な APIがすべて揃えてあるはず

画面が映るかキーボードが繋がっているかなどの POST (power-on self test: 電源投入時自己診断)も, 起動した OS
の初期化処理で行うはずで, 先に ROMでも行うなら 2度手間に。  
BIOS ROMに代わる次世代の起動方法では必要最小限の方向のはず (今でも, 数 GBの RAMのセルフチェックは時間かかるので省かれてるはず)  
UEFIでは, BIOS-POST は ⇨ Pre-EFI初期化モジュール

参考:

  * PDFドキュメント [新世代BIOS"UEFI"の構造と実装](https://ipsj.ixsq.nii.ac.jp/ej/?action=pages_view_main&active_action=repository_view_main_item_detail&item_id=62936&item_no=1&page_id=13&block_id=8)
  * PDF [自由な PC 向けファームウェアの開発 --yabits: Yet Another UEFI Implementation―](https://www.ipa.go.jp/files/000065624.pdf)
    * (ja.wikipedia.org) [coreboot](https://ja.wikipedia.org/wiki/Coreboot)

(2) の起動時 ROMについて  
起動時 ROM (firmware)は, マスク ROMではなくフラッシュメモリーが使われてることが多い  
これは (SSDなどでよく使われている)NAND型ではなく NOR型フラッシュメモリーで, 特徴としては ROM同様に普通にアドレス指定可能 (CPUの
Jump命令, Call命令の飛び先に指定可能)  
(なので, CPUから読み出して RAMに転送などの手順は必要ない)
CC BY-SA 4.0
2022-01-31T06:43:03.547
86031
2022-02-03T03:23:03.503
2022-02-03T03:23:03.503
3060
43025
86024
answer