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 9x/Me đượ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 như 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 9x/Me (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 đặ 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 NT và sau này.
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 DOS/Win9x/Me, chứa số 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 dướng 11111111b) 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. Thí dụ sau thể hiện những kết quả:
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-shitf được sửa đổi thực hiện một biên dịch đôi trong trường hợp này, đầu tiê 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 và 16 đầu đọc P-CHS trở thành 800 cylinder và 240 đầu đọc (thay vì 750 cylinder và 256 đầu đọc) L-CHS, hoạt động trong phạm vi lỗi ở các hệ điều hành DOS/Win9x/Me.
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ợ lượng tối đa hoàn toàn mà CHS bi-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.
Biên dịch LBA-Assist
Phương pháp biên dịch LBA-assist không đặt những giới hạn máy móc trên những hình học ổ đĩa được báo cáo, nhưng nó hoạt động chỉ trên những ổ đĩa hỗ trợ định vị LBA tại mức giao diện ATA. Tuy vậy, thực sự tất cả ổ đĩa ATA lớn hơn 2GB đều hỗ trợ LBA. Biên dịch LBA-assist lấy các tham số CHS mà ổ đĩa báo cáo nhân chúng với nhau để đạt một giá trị tối đa LBA được tính toán (tổng số sector), kế tiếp dùng số LBA được tính toán để lấy được các tham số CHS được biên dịch. Bảng 7.22 thể hiện những quy luật cho biên dịch LBA-assist.
Biên dịch LBA-assist ấn định 63 sector không vấn đề gì chia và nhân các cylinder và đầu đọc bằng cách định trước các giá trị tùy thuộc vào tổng số sector. Điều này dẫn đến một số tham số L-CHS mà hệ điều hành dùng để kết nối với BIOS. Các số L-CHS kế tiếp được biên dịch thành các số LBA tại mức giao diện ÂT. Bởi vì chế độ LBA thì khá linh hoạt ở phần biên dịch, nó được dùng trong đa số trường hợp thay cho CHS bit-shift.
Thông thường, cả hai biên dịch CHS bit-shift và LBA-assist tạo ra cùng dạng L-CHS cho một ổ đĩa định sẵn. Điều này luôn luôn đúng nếu ổ đĩa báo cáo 63 sector cho mỗi rãnh ghi và 4,8 hay 16 đầu đọc. Trong ví dụ sau cả hai sơ đồ biên dịch đều dẫn đến những giá trị L-CHS đồng nhất.
Tuy nhiên, nếu ổ đĩa báo cáo một giá trị khác hơn 63 sector cho mỗi rãnh ghi hay khác hơn 4, 8, hay 16 đầu đọc, biên dịch LBA-assist không dẫn đến cùng các tham số như biên dịch CHS bit-shift. Trong ví dụ sau, những biên dịch khác nhau cho kết quả:
Biên dịch LBA-assist hỗ trợ 8.42GB, gần 500MB nhiều hơn biên dịch CHS bit-shift đã chỉnh sửa. Khá quan trọng, những biên dịch này khác nhau, có thể dẫn đến những sự cố nếu thay đổi chế độ biên dịch với dữ liệu trong ổ đĩa. Nếu bạn đang thiết lập và định dạng một ổ đĩa dùng biên dịch CHS bit-shift và rồi chuyển sang biên dịch LBA-assist, hình học được dịch có thể thay đổi và ổ đĩa có thể trở nên không đọc được cho đến khi nó được phân vùng lại và định dạng lại (sẽ phá hỏng toàn bộ dữ liệu). Kết thức: Sau khi bạn chọn một phương pháp biên dịch, đừng lên kế hoạch thay đổi nó trừ khi dữ liệu của bạn đã sao lưu an toàn.
Thực sự tất cả BIOS PC từ năm 1994 có khả năng biên dịch trong BIOS Setup và tất cả đều hỗ trợ cho chế độ biên dịch cũng như một tùy chọn để vô hiệu hóa biên dịch toàn bộ, Nếu cả hai chế độ biên dịch với dữ liệu trong ổ đĩa. Nếu bạn đang thiết lập và định dạng một ổ đĩa dùng biên dịch CHS bit-shift và LBA-assist đều có, bạn nên chọn phương pháp biên dịch LBA bởi vì nó linh động và hữu hiệu hơn. Biên dịch LBA-assist cũng bị lỗi hệ điều hành 4.2GB do nó được thiết kế để cho phép một lượng tối đa 255 đầu đọc logic thì không vấn đề gì.
Bạn thường hỏi liệu BIOS của bạn có khả năng hỗ trợ biên dịch để cụ thể nhiều hơn 1.024 cylinder trong BIOS Setup, mặc dù điều này có thể dẫn đến sai lầm. Đầu mối tốt nhất là tìm các tham số thiết lập biên dịch trong ATA/IDE drive setup page trong BIOS Setup. Xem chương 5, “BIOS” lấy nhiều thông tin trong cách nào để vào BIOS Setup hệ thống. Nếu bạn thấy những thiết lập liên quan ổ đĩa, như là LBA hay ECHS (đôi khi được gọi là Large hay Extended), đây là những dấu hiệu chỉ báo của một BIOS với hỗ trợ biên dịch. Phần lớn BIOS năm 1994 hoặc sau này đều bao gồm khả năng này, mặc dầu một số phiên bản AMI BIOS từ giữa các năm 1990 định vị thiết lập LBA trên màn hình khác với màn hình cấu hình ổ cứng. Nếu hệ thống hiện hành không hỗ trợ biên dịch tham số, bạn có thể lấy một nâng cấp từ nhà sản xuất bo mạch của bạn hay cài đặt một card nâng cấp BIOS có khả năng này, như là card LBA Pro của eSupport.com.
Bảng 7.23 tóm tắt bốn cách mà BIOS có thể hoạt động định vị các sector trên ổ đĩa: CHS tiêu chuẩn (không biên dịch), biên dịch Extended CHS, biên dịch LBA và định vị LBA đơn thuần.
CHS tiêu chuẩn chỉ có một bước biên dịch có khả năng nội tại đối với ổ đĩa. Hình học vật lý thực sự của ổ đĩa thì hoàn toàn không thấy được từ phía ngoài với tất cả ổ đĩa ATA được ghi BIOS Setup là hình học logic đơn thuần và không đại diện cho những tham số vật lý thực sự. Định vị CHS tiêu chuẩn bị giới hạn 16 đầu đọc và 1.024 cylinder, cung cấp một giới hạn 504MiB (528MB).
Đây thường gọi là “Normal” trong BIOS Setup và tạo ra BIOS vận hành giống như một sản phẩm lỗi thời không có biên dịch. Dùng những thiết lập này nếu ổ đĩa của bạn ít hơn 1.024 cylinder hay nếu bạn muốn dùng ổ đĩa với một hệ điều hành không yêu cầu sự biên dịch.
ECHS hay Large trong BIOS Setup là CHS bit-shift, đa số BIOS từ năm 1997 và sau đó dùng phương pháp được sửa đổi (tối đa 240 đầu đọc logic).
LBA, như được lựa chọn trong BIOS Setup, cho biết biên dịch LBA –assist, không là chế độ LBA đơn thuần. Điều này cho phép phần mềm vận hành dùng các tham số L-CHS trong khi BIOS gọi ra ổ đĩa trong chế độ LBA.
Cách duy nhất để lựa chọn chế độ LBA đơn thuần, từ hệ điều hành (OS) đến BIOS cũng như từ BIOS đến ổ đĩa, là với một ổ đĩa hơn 8.4GB. Tất cả ổ đĩa vượt 137GB phải được định vị vượt 8.4GB theo cách này. Trong trường hợp này không có những thiết lập BIOS Setup chuyên biệt nào cần thiết, khác hơn thiết lập loại cho tự động hay tự động phát hiện.
Lưu ý:
Cảnh báo với những thiết lập biên dịch BIOS: nếu bạn có một ổ đĩa 8.4GB hay ít hơn về dung lượng và sự chuyển đổi giữa CHS, ECHS hay LBA tiêu chuẩn, BIOS có thể thay đổi hình học (được biên dịch). Tương tự có thể xảy ra nếu bạn chuyển một ổ đĩa được định dạng trong một máy tính không LBA cũ sang một máy mới dùng LBA. Điều này gây ra thay đổi hình học CHS logic được nhìn thấy bởi hệ điều hành và dữ liệu xuất hiện nếu không cẩn thận. Tôi luôn đề nghị ghi lại những thông báo CMOS Setup kết hợp với cấu hình ổ đĩa vì thế bạn có thể đặt khớp kết cấu một ổ đĩa vào những thiết lập như bộ đầu tiên. Điều này không ảnh hưởng các ổ đĩa trên 8.4GB do LBA đơn thuần được tự động lựa chọn.Theo "Nâng cấp và sửa chữa máy tính" Scott Mueller