Dữ liệu chung MV / 8000 đức tính của hoàng tử Không có chế độ bit bit


10

Tôi đang đọc "Linh hồn của một cỗ máy mới" của Tracy Kidder, nơi một nhóm tại Data General thiết kế một cỗ máy mới (tên mã là "Đại bàng", sau này được đặt tên là MV / 8000). Nó là phần mở rộng 32 bit của kiến ​​trúc trước đó (Eclipse 16 bit). Một trong những chủ đề xoay vòng dường như là, họ không muốn tạo ra một cỗ máy với một chút chế độ và họ đã thành công trong việc này.

Tuy nhiên, nó bỏ qua cách thức đạt được điều này về mặt kỹ thuật và nó cũng không đi vào lý do tại sao nó lại hấp dẫn để tạo ra một cỗ máy không có bit chế độ. Cuốn sách không phải là một cuốn sách kỹ thuật nên có thể các chi tiết bị bóp méo bằng cách nào đó. Tuy nhiên, bạn có cảm giác khi đọc cuốn sách rằng giải pháp "bit chế độ" là phổ biến (và do đó khả thi) tại thời điểm đó, nhưng có thể được các kỹ sư cho là không hấp dẫn vì lý do thẩm mỹ. Cuốn sách cũng làm cho nó có vẻ như là một nhiệm vụ vô cùng khó khăn để tạo ra một thiết kế mà không có một chút chế độ, điều này đã được nhóm đặc biệt này khắc phục bằng cách nào đó.

Tôi tìm thấy mô tả này về cách nó đã đạt được:

http://people.cs.clemson.edu/~mark/330/kidder/no_mode_bit.txt

Về cơ bản, nó dường như là về việc sử dụng một phần không gian opcode trước đây chưa sử dụng cho các hướng dẫn mới. Tôi phải thừa nhận rằng tôi đã hơi thất vọng vì đó là "chỉ vậy thôi". Ngoài ra tôi nghĩ rằng điều này vẫn còn một số câu hỏi chưa được trả lời:

Đầu tiên, làm thế nào các quy trình 16 bit sống trong không gian địa chỉ 32 bit? Bởi vì tôi nghĩ đó là thách thức chính trong việc tạo ra một phần mở rộng 32 bit "không có bit chế độ". Mở rộng bộ hướng dẫn, mặt khác, là một công việc tương đối phổ biến. Vì không có mô tả nào về cách nó xảy ra, người ta có thể giả sử rằng mã 16 bit chỉ đơn giản là truy cập bộ nhớ như mọi khi, nên có thể thấy một số dạng xem ảo / bị vùi lấp của bộ nhớ (với các thanh ghi CPU mới kiểm soát địa chỉ đầu tiên) hoặc một cái gì đó như thế Nhưng tôi không biết nếu có nhiều hơn thế. Trong trường hợp đó, người ta có thể lập luận rằng đó là một giải pháp "bit chế độ". Các quy trình chế độ 16 bit có thể chạy cùng với các quy trình khác nhờ các tính năng đặc biệt được thêm vào CPU.

Thứ hai, tại sao nó lại hấp dẫn để tạo ra một máy không có bit chế độ? Nhiều lợi ích được chào hàng trong cuốn sách là khách hàng muốn chạy phần mềm cũ. Nhưng điều này dường như không nói với bit chế độ, vì toàn bộ mục đích của việc sử dụng bit chế độ là để có khả năng tương thích ngược. Khi AMD mở rộng x86 lên 64 bit, ít nhất là theo sự hiểu biết của tôi về từ "bit chế độ", những gì họ đã làm là chính xác để thêm một bit chế độ. Một bit đặc biệt sẽ làm cho CPU ở chế độ 64 bit. Và một bit khác sẽ làm cho một quá trình thực thi trong "chế độ phụ" của chế độ 64 bit (để cho phép tương thích với các ứng dụng 32 bit). Bản chất của chế độ con là CPU diễn giải luồng lệnh là các lệnh 32 bit cũ nhưng các truy cập bộ nhớ 32 bit được giải quyết bằng định dạng bảng trang mới (được thiết lập bởi hệ điều hành nhận biết 64 bit) và cuối cùng ánh xạ tới không gian địa chỉ vật lý đầy đủ. Ngoài ra, mã 32 bit có thể được ưu tiên bởi mã 64 bit. Giống như giải pháp Data General, điều này cũng cho phép chương trình 32 bit chạy dọc theo các chương trình 64 bit (16 bit so với 32 bit trong trường hợp DG). Vì vậy, từ quan điểm của khách hàng dường như không có sự khác biệt nào cả. Do đó, lợi ích duy nhất có thể có được trong việc triển khai, đơn giản hóa thiết kế, nhưng cuốn sách không khiến nó nghe có vẻ như đó là mối quan tâm, vì bit chế độ được coi là phổ biến ngay cả tại thời điểm đó (và dường như các kiến ​​trúc sau này cũng có sử dụng nó như trường hợp x64 cho thấy).

Tôi chắc chắn có điều gì đó tôi đã bỏ lỡ, vì vậy sẽ thật tuyệt nếu ai đó có thể thảo luận thêm về các chi tiết kỹ thuật và ưu điểm của thiết kế "không có chế độ bit" này.


Trong những ngày đó - ngày chuyển kích thước từ phổ biến từ 16 bit sang 32 bit - hầu hết các kiến ​​trúc 32 bit mới có các tập lệnh khác nhau hoàn toàn từ cùng một dòng 16 bit của mfr - ngay cả khi chúng cũng có thể thực thi tập lệnh 16 bit có "bit chế độ". Điều này dẫn đến sự không chắc chắn thị như những người nâng cấp dự án cho các máy 32-bit mới thấy không có lý do gì để ở lại với mfr cùng - miễn là nó là một mới kiến trúc tại sao không chọn tốt nhất của các mới máy từ bất cứ mfr. Thiếu "bit chế độ" đã gợi ý quá trình chuyển đổi "gia tăng" dễ dàng hơn: Do đó, hãy ở lại với DG.
davidbak

Câu trả lời:


8

Câu trả lời là Ed deCastro, Chủ tịch Quản lý dữ liệu chung, đã thành lập một nhóm kỹ sư ở Bắc Carolina đặc biệt để thiết kế CPU thế hệ tiếp theo. Ông đã giao nhiệm vụ hỗ trợ và tăng cường gia tăng cho chúng tôi, nhóm Massachusetts. Ba lần chúng tôi đề xuất một kiến ​​trúc mới, mỗi lần có một bit chế độ rất hợp lý và mô tả nó như một sự tăng cường gia tăng khiêm tốn. Mỗi lần, Ed nhìn thấy sự ngụy trang của chúng tôi và từ chối lời đề nghị, hy vọng nhóm Bắc Carolina sẽ thành công. Ed tin rằng bất kể chúng tôi đã cố gắng ngụy trang các đề xuất của mình như thế nào, anh ta sẽ biết đó là một kiến ​​trúc thế hệ mới nếu nó có một chút chế độ. Vì vậy, chúng tôi đã phải đề xuất một kiến ​​trúc thế hệ mới không có bit chế độ, ngay cả khi điều đó làm cho nó kém hiệu quả hơn. Đó là cách chúng tôi vượt qua Ed deCastro. Xem linh hồn của một cỗ máy mới,


Xin chào Carl, cảm ơn về thông tin này, vâng, đó cũng là ấn tượng của tôi (từ việc đọc cuốn sách) rằng cuộc thảo luận về chế độ bit rất nhiều về ý nghĩa chính trị. Tốt với thông tin nội bộ - âm thanh như MV / 8000 là một dự án rất thú vị được tham gia.
Morty

6

216

Với một bit chế độ, hệ điều hành 16 bit cũ sẽ phải được sửa đổi để tìm hiểu xem chương trình là 16 bit hay 32 bit và sau đó thiết lập bit chế độ phù hợp trước khi khởi chạy chương trình.

Trong thực tế, có vẻ như MV / 8000 thực sự có một chút chế độ. Ở những nơi khác trên trang web của Mark Smotherman tại Clemson, ông đã đăng tải Dữ liệu chung, ECLIPSE MV / 8000 Nguyên tắc hoạt động , 1980 . Nếu bạn xem Phụ lục E (bắt đầu từ trang 369), bạn sẽ thấy MV / 8000 có hai cơ chế bảng trang hoàn toàn khác nhau. Máy cụ thể mà MV / 8000 tương thích ngược là C / 350 và C / 350 có Bộ phận bảo vệ và phân bổ bộ nhớ 16 bit cụ thể, với các cách cụ thể để kiểm soát đơn vị đó. Đối với hoạt động logic 32 bit, thay vào đó, bạn sẽ bật Đơn vị dịch địa chỉ (được mô tả trong Chương 3, bắt đầu từ trang 31.

Trong thực tế điều đó có nghĩa là khi bạn thực hiện một lệnh 16 bit ở chế độ 32 bit, nó được chỉ định rằng 16 bit cao của địa chỉ logic được đặt thành 0. Cũng phải có một số đặc điểm kỹ thuật về những gì xảy ra với mức cao 16 bit của một địa chỉ khi bạn thực hiện một lệnh 32 bit ở chế độ 16 bit, nhưng tôi không thể tìm thấy nó trong quá trình đọc hướng dẫn ngắn gọn của mình.

Vì vậy, đó không phải là một câu hỏi về việc một bit chế độ là tốt hay xấu. Thêm nữa là không có lý do đặc biệt tốt để sử dụng bit-mode để phân biệt giữa các lệnh 16 bit và 32 bit. Các lệnh 16 bit sử dụng 16 bit địa chỉ logic (với 16 bit cao được đặt thành 0) và các thanh ghi 16 bit, và các lệnh 32 bit sử dụng 32 bit địa chỉ logic và các thanh ghi 32 bit. HĐH cũ "chỉ hoạt động" trên máy mới, nhưng bạn cũng có thể thử các hướng dẫn mới bằng cách chạy một chương trình mới trong HĐH cũ.


Xin chào, điều này làm cho mục tiêu với "không có bit chế độ" rõ ràng hơn - vì vậy mục tiêu là có thể khởi động o / s 16 bit ban đầu, nhưng vẫn khởi chạy chương trình 32 bit từ đó. Tuy nhiên, như bạn nói, không thể sử dụng không gian địa chỉ lôgic 32 bit từ trong các chương trình 32 bit đang chạy trong chế độ đó. Theo một cách tương tự như những gì Intel đã làm với quá trình chuyển đổi 16 bit sang 32 bit. Ở đây cũng có thể thực hiện các lệnh 32 bit (truy cập vào phần cao hơn của các thanh ghi) từ trong chương trình 16 bit (ví dụ, đang chạy, trong MS-DOS). Tuy nhiên, cùng lúc họ có ...
Morty

... Các bit chế độ để vào chế độ được bảo vệ 32 bit "thật" (cũng cho phép phân trang). Một điểm khác biệt là ở chế độ 32 bit, mã hóa các lệnh 32 bit khác với mã hóa các lệnh 32 bit ở chế độ 16 bit (vì "mặc định" là khác nhau), nhưng khả năng là như nhau. Mặt khác, với quá trình chuyển đổi x86 sang 64 bit, mã hóa lệnh đã hoàn toàn thay đổi, do đó, chương trình 32 bit (hoặc chương trình 16 bit) không thể sử dụng các thanh ghi 64 bit, v.v. / s khởi chạy tiến trình ở chế độ 64 bit ("Chế độ dài").
Morty

Tuy nhiên, người ta vẫn có thể đặt câu hỏi về ưu điểm của việc nhấn mạnh thiết kế "không có bit chế độ" này vì trước tiên có một bit chế độ và dường như rất nhiều trường hợp góc ("Chạy hệ điều hành cũ và ứng dụng mới") nơi nó cung cấp bất kỳ lợi ích - hầu hết khách hàng không muốn chạy hệ điều hành mới có thể tận dụng tối đa phần cứng? Tính năng quan trọng ở đây là hệ điều hành mới có thể chạy các ứng dụng cũ! Nhưng như liên kết tôi đã gửi đề cập, điều này thậm chí không thể, các chương trình yêu cầu liên kết lại và thậm chí biên dịch lại (do thay đổi trong o / s) hiển thị compat CPU. khía cạnh moot!
Morty
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.