Posted By: mac (Macintosh) on 'CZhardware'
Title:     LBA a prekladajici BIOS
Date:      Sun Nov 16 01:03:21 1997


Takze jak vidim, panuje tady obrovska mlha, takze se pokusim to trosicku 
objasnit.



1) Rozhrani disku ATA, zvane tez IDE
=====================================
Zapomenme nyni na chvili na to, ze v pocitaci je nejaky BIOS a divejme se 
na disk jako takovy, a jak ze se vlastne adresuji sektory na urovni rozhrani 
IDE.

Na tomto rozhrani se pouziva 28-mi bitova adresace (vim, je to divne cislo, 
ale je to tak), takze IDE jako takove muze adresovat az 2^28, 
tj. teoreticky az cca 137 GB dat. 

Mody adresace sektoru na disku:

nejznamejsi mod adresace sektoru na disku je CHS (Cylinder, Head, Sector)
U ktereho se adresa sektoru, jak uz je snad intuitivne videt, posila jako 
trojice cisel.
Onech 28 bitu je rozdeleno takto: 4 bity na hlavy, 16 bitu na cylindry a 8 
bitu na sektory.
To znamena, ze takhle naadresujeme nejvyse 16 hlav, 65536 cylyndru a 256 
sektoru.

Jiny casto pouzivany mod adresace je LBA (Logical Block Address)
(aha uz jsme u toho, LBA je mod adresace u disku, tudiz zalezitost hardware, 
musi to umet predevsim disk a radic, ale take je nutna podpora BIOSu) 
Tady jsou sektory ocislovany linearne tj. kazdemu sektoru priradime cislo od 
0 do n, (pricemz zadna cisla nepreskakujeme ani neopakujeme).
Pro ocislovani sektoru se pouzije vsech 28 bitu.  

Vsimnete si, ze oba mody toho naadresuji stejne (oba pouzivaji 28 bitu)!
Take si povsimnete, ze tyto dva mody adresace se lisi predevsim tim, ktera
cisla se pouziji, a ktera zustanou nevyuzita v pripade, ze je disk mensi nez 
onech 137 GB (coz je momentalne kazdy disk - aspon jsem tak velky jeste 
nevidel ;-)) 

Zavedeme si usporadani sektoru:
LBA podle velikosti adresy, u CHS bereme jako nejvyznamnejsi cislo cylindru, 
potom hlavy a nakonec sektoru.
A ted problem - vidime, ze u LBA a CHS nemusi byt fyzicke sektory prirazeny 
tak, aby tato dve usporadani byla stejna. 

Avsak neni uplne tezke zjistit, ze z technickeho hlediska LZE udelat disk, 
ktery bude mit jak v LBA tak v CHS stejne usporadane sektory - z toho 
vyplyva odpoved k puvodnimu dotazu. 
Ano, disk naformatovany v LBA muze (ale nemusi) fungovat bez LBA. Zalezi na 
disku. (a take na BIOSu, jak ostatne uvidime, az se dohrabeme k prekladani 
adres.)
 Do jake miry se s timhle da poctat v praxi nevim - patrne spis ne. 


2) BIOS
========
Nyni se presuneme blize k zalezitostem BIOSu.
Bios preruseni int 13h pouziva, jak je znamo adresaci typu CHS, ovsem tohle je 
malinko jine CHS nez u IDE, proto zavedeme spec. oznaceni.
Adresace BIOSu se obvykle oznaceje jako L-CHS (logical CHS), adresace na IDE 
jako P-CHS (Physical CHS).

<pozn.> P-CHS, prestoze se se jmenuje "physical" ma s fyzickym usporadanim 
sektoru na disku pramalo spolecneho, a to uz proto, ze ve skutecnosti na 
disku nemusi (a typicky nemaji) vsechny cylindry stejny pocet sektoru </pozn.>

Adresace u L-CHS (tedy v BIOSu int 13h) je 24 bitova.
Pro hlavy je vyhrazeno 8, pro cylindry 10 a pro sektory 6 bitu.
Tj. max 256 hlav, 1024 cyl., 64 sec.
(cisla ktera tady uvadim jsou POCTY, nikoliv max. hodnoty, ty jsou pri 
cislovani od nuly o jedna mensi)
Kdyz si to vynasobite, zjistite, ze lze pres int 13h adresovat az 8 GB (coz 
neni zase tak mnoho) 

Vyvstava ovsem problem:
U starsich BIOSu, ktere posilaji disku adresu predanou int 13h primo bez 
jakekoliv upravy vzniklo neprijemne omezeni.
BIOSu predavame:
 8-mi bitove cislo hlavy, ale IDE pouziva pouze 4 bity, takze hlav max. 16
10-ti bit cylindr. IDE sice muze pouzit 16 bitu, nic naplat, cyl. je max. 1024 
 6-ti bit sektor, opet je nanic, ze IDE jich pouziva 8, sektoru je max. 64.

A ted nasobime 16*1024*64 to cele krat 512 - ha vyjde nam onech 528 MB!
A to je ten stary, dobre znamy limit.

Reseni je nasnade - staci kdyz bude BIOS umet adresu kterou dostane sikovne 
prekopavat, a ne jenom slepe predat disku, a je to vyreseno.
Udela se to tak, ze kdyz BIOS dostane cislo hlavy, ketere se nevejde do 4 
bitu, preda disku mensi cislo - 4 bitove, a vyrovna to tim, ze zvetsi cislo 
cylindru a/nebo sektoru
A tomu se rika PREKLADAJICI BIOS!!!
(V originale CHS translating BIOS)

DULEZITE UPOZORNENI! 
Nutno si povsimnouti, ze k vyreseni problemu 528 MB _neni_ treba zadne LBA!
(a nejen to, _existuji_ BIOSy, ktere prekladaji _bez_ pouziti LBA.)
Nicmene LBA jako mod adresace u disku pouzit lze i tady, ale je dulezite si 
uvedomit, ze s limitem 528 MB nema nic spolecneho, a ze take samotne LBA 
problem 528 MB neresi. 


3) Problem s velikosti disku c. 2
==================================
Vyvstava nam druhy problem, ktery souvisi s tim, ze BIOS pouziva k adresaci
jenom 24 bitu - tj. 8 GB adresovatelnych dat. Na to uz ale tak jednoduchy 
lek neexistuje. Resit se to snazi: 


4) LBA v BIOSu
===============
Novejsi BIOSy umoznuji pouzivat pro pristup na disk primo adresaci LBA.
K tomu bylo nutne zavest nove sluzby int 13h, AH=4Xh, ktere maji jako 
parametr 28 bitu dlouhe cislo coz je LBA adresa. 
Ale zkuste si treba prinutit takovy DOS, aby tyhle sluzby pouzival!
<grin>


5) Zaverem
===========
To co jsem napsal, je ale jenom cast pravdy, ve skutecnosti to s tim 
prekladanim neni tak jednoduche, v BIOSu je hned nekolik prekladani, ktera 
pokryvaji snad vsechny mozne kombinace LBA<=>L-CHS, L-CHS<=>P-CHS, 
P-CHS<=>LBA, aby se daly pouzit v obou modech disku oba typy 
adresace, no je toho az hruza. 

A nejaky standard? Pochopitelne neexistuje, to bychom se snad ani nemohli 
bavit o PC-cku, protoze na nem je "standardni" jenom to, ze je 
cele "nestandardni". 
Je tedy asi 10 znamych typu BIOSu podle toho, jak ktery preklada, ale v zasade 
se snazi dojit ke stejnemu vysledku, prenositelnost disku je casto mozna. 

Pokud budou nejasnosti, ozvete se, pripadne vaznejsi zajemce o 
problematiku prekladajicich BIOSu a LBA odkazuji na

   http://www.uruk.org/~erich/grub/PC_partitioning.txt 

(je to dokument v anglictine (jak jinak) velky jenom neco malo pres 100 KB :-) 
myslim, ze to tady nebudu opisovat ;-)) 


                          Mac

Search the boards