Biên dịch CHS, giới hạn 2.1GB và 4.2GB

Biên dịch CHS, giới hạn 2.1GB và 4.2GB

Có một dung lượng ổ đĩa hạn chế mức giới hạn đến 528MB hay ít hơn không là vấn đề khi các ổ đĩa lớn nhất có khá năng nhỏ hơn mức giới hạn này. Nhưng vào năm 1994, công nghệ ổ đĩa phát triển làm các ổ đĩa lớn hơn những giới hạn BIOS và ATA được kết hợp có thể định vị là có thể.

Biên dịch CHS (phá vỡ giới hạn 528MB)

Bắt đầu năm 1993, nhà phát triển BIOS Phoenix Technologies bắt đầu làm việc trên những mở rộng BIOS để xử lý quanh những giới hạn của CHS. Tháng 1 năm 1994, họ phát hành đặc điểm kỹ thuật BIOS Enhanced Disk Drive (EDD). Sau đó được tái bản bởi ủy ban TI3 (cũng chịu trách nhiệm cho ATA) như “BIOS Enhanced Disk Drive Services (EDD)”. Các tài liệu EDD nêu chi tiết vài phương pháp cho phá vỡ những giới hạn của những BIOS cũ mà không gây ra các sự cố tương thích với phần mềm hiện hữu. Những cái này bao gồm:

  • Những mở rộng BIOS INTI3h hỗ trợ 64-bit LBA
  • Biên dịch CHS hình học chuyển dời bit (Bit-shift geometric CHS translation)
  • Biên dịch CHS hình học trợ giúp LBA (LBA-assist geometric CHS translation)

Phương pháp cho xử lý vấn đề CHS được gọi là biên dịch (translation) bởi vì nó cho phép các thủ tục con thêm vào trong BIOS để biên dịch các tham số CHS từ các lượng tối đa ATA đến các lượng tối đa BIOS (và ngược lại). Trong một nổ lực để làm những phương pháp của nó trở thành tiêu chuẩn trong toàn bộ công nghiệp PC. Phoenix phát hành tài liệu EDD công khai và cho phép công nghệ được sử dụng miễn phí thậm chí đổi với những đối thủ cạnh tranh của họ như là AMI và Award, ủy ban TI3 phụ trách ATA sau đó chấp thuận tiêu chuẩn EDD và đưa nó vào những tài liệu ATA chính thức.

CHS

Bất đầu năm 1994, phần lớn BIOS bắt đầu thực thi các phương pháp biên dịch CHS do Phoenix thiết kế cho phép các ổ đĩa lên tới giới hạn BIOS 8.4GB được hỗ trợ. Sửa lỗi liên quan đến những tham số ở mức BIOS như cylinder, head, sector để phù hợp với các thông số mà BIOS cho phép. Có hai loại biên dịch: một hoạt động qua một kỹ thuật được gọi là CHS bit-shift (thường được gọi là “Large” hay “Extended CHS” trong BIOS Setup), cái kia dùng một kỹ thuật được gọi là LBA-assist (thường được gọi là “LBA” trong BIOS Setup). Những loại này nói đến những phương pháp toán học khác nhau của việc thực hiện cơ bản cùng một việc: chuyển đổi một bộ các số CHS thành bộ kia.

Biên dịch CHS bit-shift thực hiện các số cylinder và đầu đọc nhưng không thay đổi số sector. Nó bắt đầu với các cylinder và đầu đọc vật lý (ổ đĩa được báo cáo), dùng một số phép chia và phép nhân, theo kịp với các số được thay đổi cho các ổ Under là đầu đọc. Các sector cho mỗi giá trị rành ghi không được biên dịch và được chuyên mà không được thay đổi. Thuật ngữ bit-shift được dùng bởi vì phép chia và nhân thực sự thực hiện trong phần mềm BIOS bảng cách dịch chuyển các bit trong địa chỉ CHS.

Với biên dịch CHS bit-shift, các tham số báo cáo ổ đĩa (vật lý) được nói đến như P-CHS và những tham số logic BIOS được sửa đổi được nhắc đến như L-CHS. Sau khi các thiết lập được thực hiện trong BIOS Setup, các địa chỉ L-CHS được tự động biên dịch ra P-CHS tại mức BIOS. Điều này cho phép hệ điều hành gửi những lệnh đến BIOS dùng các tham số L-CHS, mà BIOS tự động chuyển đổi thành P-CHS khi nó gọi ra ổ đĩa dùng các lệnh ATA. Bảng 1 thể hiện các quy luật cho tính toán biên dịch CHS bit-shift.

Biên dịch CHS bit-shift thì trên cơ sở chia sự đếm cylinder vật lý cho số lượng 2 để làm nó dưới giới hạn BIOS lNT13h cylinder 1.024 rồi nhân đầu đọc với số lượng 2 để lại sự đếm sector không thay đổi số lượng 2 được sử dụng tùy thuộc việc đếm cylinder, như được chỉ ra trong bảng 1.

Bảng 1: Các quy luật biên dịch CHS Bit-Shift

Các trụ quay vật lý (ổ đĩa được báo cáo) Các đầu đọc vật lý Các trụ quay logic Các đầu đọc logic Dung lượng tối đa
1 I c=c H=H 528MB
1,024 1 c=c /2 H=H’ 2 1GB
2,048 l c=c /4 H=H*4 2.1GB
4,096 l c=c ‘8 H=H*8 4.2GB
8,192 I OC/16 H=H*16   8.4GB

Giá trị các đầu đọc logic không thể rượt quá 255 với một số hệ điều hành.

Đây là một ví dụ của biên dịch CHS bit-shift:

Thí dụ này thể hiện một ổ đĩa với 8.000 cylinder và 16 đầu đọc. Sự đếm cylinder vật lý là cách trên giới hạn BIOS 1.024, vì vậy nếu biên dịch CHS bit-shift được lựa chọn trong BIOS Setup, kế tiếp BIOS chia sự đếm cylinder với 2. 4. 8 hay 16 để làm nó dưới 1,024. Trong trường hợp này nên chia với 8 dẫn đến sự đếm cylinder logic mới 1.000 dưới số tối đa 1,024. Do đếm cylinder được chia bởi 8 rồi sự đếm đầu đọc được nhân cùng số kết quả 128 đầu đọc, cùng dưới giới hạn BIOS có thể xử lý.

Vì vậy mặc dù ổ đĩa báo cáo có 8.000 cylinder và 16 đầu đọc. BIOS và toàn bộ phần mềm (bao gồm cả hệ điều hành) thay vì thấy ổ đĩa như có 1,000 cylinder và 128 đầu đọc. Nhận xét rằng con số 63 sector/rãnh ghi thì đơn thuần không mang sự thay đổi. Kết quả là bảng cách dùng các tham số logic. BIOS có thể thấy ổ đĩa toàn bộ 4.13GB và sẽ không bị giới hạn chỉ 528MB đầu tiên.

Khi cài đặt một ổ đĩa bạn không phải thực hiện phép toán biên dịch để chuyển đổi các cylinder và đầu đọc BIOS làm một cách tự động. Tất cả bạn phải làm là cho phép BIOS tự động phát hiện các tham số P-CHS và kế tiếp cho phép biên dịch trong BIOS Setup. Chọn lựa biên dịch Large hay ECHS trong BIOS Setup cho phép CHS bit-shift. BIOS thực hiện phần còn lại.

CHS bit-shift là sự sắp xếp nhanh và đơn giản (code-wise) có thể hoạt động với tất cả ổ đĩa, nhưng không may nó không thể biên dịch chính xác tất cả hình học ổ đĩa về mặt lý thuyết cho các ổ đĩa dưới 8.4GB. Để giải quyết điều này, một phần được thêm vào đặc điểm kỹ thuật ATA-2 yêu cầu một cách cụ thể các ổ đĩa báo cáo các dãy hình học chắc chắn cho phép biên dịch bit-shift hoạt động. Do vậy, tất cả ổ đĩa thích ứng với đặc điểm kỹ thuật ATA-2 (hoặc cao hơn) có thể được biên dịch dùng phương pháp này.

Giới hạn 2.1GB và 4.2GB

Một số BIOS dùng không đúng 12 bit cho trường cylinder p-CHS, bảng cách này cho phép lượng tối đa 4.096 cylinder. Được kết hợp với những tiêu chuẩn 16 đầu đọc và 63 sector, điều này dẫn đến không khả năng hỗ trợ bất kỳ ổ đĩa nào dung lượng trên 2.1GB. May thay, nhược điểm BIOS này ảnh hưởng chỉ một số hệ thống bị giới hạn với hạn BIOS trước và khoảng giữa năm 1996.

Tuy vậy, một số vấn đề vẫn tồn tại với biên dịch bit-shift. Do cách DOS và Windows được viết, chúng không thể vận hành đúng một ổ đĩa 256 đầu đọc. Đây là một sự cố cho các ổ đĩa lớn hơn 4.2GB bởi vì các quy luật biên dịch CHS bit-shift đặc thù dẫn đến 256 đầu đọc nhu một giá trị logic, xem trong ví dụ sau:

Sắp xếp này hỏng khi bạn cố gắng cài đặt Windows (hay DOS) trên một ổ đĩa lớn hơn 4.2GB bởi vì các tham số L-CHS bao gồm 256 đầu đọc. Bất kỳ BIOS nào thực thi sự sắp xếp này về cơ bản có giới hạn 4.2GB nên cài đặt một ổ đĩa lớn hơn giới hạn này và lựa chọn biên dịch CHS bit-shift đều đưa đến thất bại. Nhận xét rằng điều này không là vấn đề với Windows.

Ghi chú:

Thú vị để nhận xét là BIOS không thực sự lỗi ở đây; vấn đề là việc của mã hệ thống tập tin, chứa sector cho mọi rãnh ghi như một giá trị 8-bit số 256 gây ra một sự cố bởi vì 256 = 100000000b, lạy đi 9 bit để lưu trữ. Giá trị 255 (tương đương llllìỉllb) là giá trị lớn nhất có thể phù hợp trong một thanh ghi nhị phân 8-bit và do đủ là số tối đa đầu đọc mà những hệ điều hành này có thể hỗ trợ.

Để giải quyết vấn đề này, biên dịch CHS bit-shift được sửa đổi lại bảng cách thêm một quy luật nếu ổ đĩa báo cáo 16 đầu đọc và nhiều hơn 8,192 cylinder (sẽ dẫn đến một biên dịch 256 đầu đọc), giá trị đầu đọc P-CHS sẽ giả định là 15 (thay vì 16) và giá trị cylinder P-CHS sẽ được nhân với 16/15 để làm cân bằng. Những giá trị cylinder và đầu đọc được điều chỉnh kế tiếp sẽ được biên dịch. 

Như bạn có thể thấy từ ví dụ này, một ổ đĩa với 12.000 cylinder và 16 đầu đọc biên dịch thành 750 cylinder và 256 đầu đọc dùng sự sắp xếp CHS bit-shift tiêu chuẩn. Quy luật sắp xếp CHS bit-shift được sửa đổi thực hiện một biên dịch đôi trong trường hợp này. Đầu tiên thay đổi 16 đầu đọc thành 15 và kế tiếp nhân 12.000 cylinder với 16/15, dẫn đến 12,800 cylinder. Kế tiếp, giá trị cylinder mới là CHS bit-shift được biên dịch (chia nó cho 16) dẫn đến 800 cylinder logic. Tương tự như vậy, 15 đầu đọc được nhân với 16, dẫn đến 240 đầu đọc logic. Nếu sự đếm cylinder logic tính toán để vượt qua 1.024, nó được rút ngắn thành 1.024. Trong trường hợp này, cái bắt đầu như 12.000 cylinder là 16 đầu đọc P-CHS trở thành 800 cylinder và 240 đầu đọc (thay vì 750 cy linder và 256 đầu đọc) L-CHS hoạt động trong phạm vì lỗi ở các hệ điều hành.

Trong chừng mực tất cả ví dụ của tôi rất rõ ràng là các tham số L-CHS nhấm tính toán cùng dung lượng như các tham số P-CHS. Không may, nó không luôn luôn thực hiện theo cách này. Thí dụ sau thể hiện một thí dụ khá điển hình trong thực tế. Vài ổ đĩa 8.4GB từ Maxtor Quantum Seagate và những loại khác có 16.383 cylinder và 16 đầu đọc P-CHS. Đối với những ổ đĩa này, những sự biên dịch này sẽ thực hiện như sau.

Nhận xét rằng những quy luật biên dịch CHS bit-shift được sửa đổi dẫn đến chỉ hỗ trợ 7.93GB trong tổng 8.46GB ổ đĩa. Thực tế, những tham số được cho thấy (với 240 đầu đọc) là lượng tối đa hoàn toàn mà CHS bit-shift được sửa đổi hỗ trợ. May thay chế độ biên dịch khác có khả năng cải tiến tình huống này.

Tìm hiểu thêm các loại màn hình khác nhau nhấp link!