Nếu một CPU có bus địa chỉ 16 bit và 8 bit từ, nó có thể giải quyết bao nhiêu bộ nhớ?


23

Tôi đang học bài kiểm tra cuối học kỳ và bối rối với câu hỏi sau đây. Nếu CPU có bus địa chỉ 16 bit và 8 bit từ, thì bộ nhớ trong KB có thể giải quyết được bao nhiêu? Sự hiểu biết của tôi sẽ cho tôi biết rằng nó có thể giải quyết 64KB, tuy nhiên để làm điều này tôi chỉ sử dụng 2 ^ 16 = 65,536. Tính toán đó chưa bao giờ thực sự tính đến các từ 8 bit nên tôi không chắc liệu nó có đúng không. Ngoài ra từ 8 bit có nghĩa là gì?

Chúc mừng


16
Bạn đã sử dụng nó một cách gián tiếp: tổng số lượng bộ nhớ có thể đánh địa chỉ là 2 ^ 16 * 8 bit. Vì một byte = 8 bit, đó là 2 ^ 16 byte, tức là 65536 byte hoặc 64 KiB. Lưu ý rằng K là tiền tố SI cho 1000. Nếu bạn có nghĩa là 1024, hãy sử dụng Ki.
jcaron

2
Lưu ý sự khác biệt giữa kilobyte tiền tố SI (1.000 byte) và kibibytes tiền tố nhị phân (1.024 byte). 2 ^ 16 = 65,536 = 64 kibi ~ 65,5 kilo. Câu trả lời được tìm kiếm có lẽ là một trong đó kilo được dùng để có nghĩa là kibi, nhưng có những lúc sự khác biệt thực sự quan trọng. Nếu bạn muốn hoàn toàn chắc chắn, hãy chọn lộ trình an toàn và chỉ định số lượng byte và cung cấp dịch sang các đơn vị tiện dụng hơn như kilobyte hoặc kibibytes để thuận tiện cho giáo viên của bạn. So sánh Wikipedia: Tiền tố nhị phân . Chip bộ nhớ thường chỉ định ví dụ: 65,536x8 bit.
CVn


3
Tôi đoán bạn cho rằng không có trao đổi ngân hàng. Hầu hết các CPU 16 bit sử dụng một số hình thức hoán đổi ngân hàng khiến điều này thực sự khó trả lời.
Joshua

1
@ MichaelKjorling Câu hỏi cho biết KB luôn có nghĩa là 1024 byte.
kasperd

Câu trả lời:


38

Một từ, trong các kiến ​​trúc đa số, là phần dữ liệu lớn nhất có thể được chuyển đến và từ bộ nhớ làm việc trong một hoạt động.

Kích thước địa chỉ lớn nhất có thể, được sử dụng để chỉ định vị trí trong bộ nhớ, thường được gọi là từ phần cứng.

Vì vậy, CPU của bạn sẽ có thể giải quyết 64KB (2 ^ 16) nhưng sẽ chỉ có thể chuyển trong một hoạt động 8 bit duy nhất.


3
Tôi chắc chắn câu trả lời này là câu trả lời của giáo viên, nhưng nó có thực sự đúng không? Bạn có thể không sử dụng cái gì đó như PAE để cho phép một hierachy 3 cấp (hoặc thậm chí nhiều hơn) để cho phép CPU truy cập nhiều hơn 64KB không? Tôi không phải là chuyên gia về phần cứng, nhưng Commodore 128 thậm chí còn không thể làm được điều gì đó như thế này trên một từ 8 bit, bus 16 bit bằng cách cho phép chuyển đổi ngân hàng RAM?
davidgo

5
Không chắc lắm tôi hiểu câu của bạn "sẽ chỉ có thể chuyển trong một thao tác duy nhất là 256B (2 ^ 8)"? Nó chỉ có thể chuyển 1 từ = 1 byte = 8 bit trong một thao tác.
jcaron

8
@davidgo vẫn PAE yêu cầu bus địa chỉ phải có kích thước phù hợp. Các CPU Intel hỗ trợ PAE có bus địa chỉ 36 bit.
Dmitry Grigoryev

6
PAE ít nhiều là một tên thương hiệu / tính năng dành riêng cho CPU x86 hiện đại. Có, các kế hoạch gián tiếp giải quyết số lượng bộ nhớ lớn hơn đã được triển khai từ lâu (ví dụ XMS), cuối cùng chúng xử lý hệ thống con bộ nhớ giống như một thiết bị ngoại vi có thể được cấu hình lại liên tục để đưa bộ nhớ khác nhau vào một không gian địa chỉ nhỏ hơn. Ngoài ra, hãy xem mô hình bộ nhớ được phân đoạn của trường học cũ x86 ...
rackandboneman

6
@Overmind bạn nên làm rõ câu trả lời của bạn một chút. Không ai thực sự sử dụng một B đơn lẻ như một đơn vị và lý do chính xác là những gì đã xảy ra ở đây - bạn đang nhầm lẫn các bit và byte. OP tuyên bố "từ 8 bit * - do đó, mỗi từ có 8 bit (1 byte) và chỉ có thể chuyển từ đó trong một thao tác. 256 chỉ đơn giản là số lượng giá trị có thể có của mỗi từ chứ không phải chuyển bao nhiêu.
adelphus

21

Một từ máy, hay thông thường chỉ là từ là đơn vị dữ liệu lớn nhất mà CPU có thể thao tác toàn bộ bằng cách sử dụng các hướng dẫn chung. Điều này không có gì để làm với địa chỉ bộ nhớ.

Vấn đề là đơn vị phân giải địa chỉ , thường là byte 8 bit ngay cả trên các kiến ​​trúc 16/32/64 bit. Nó không phải bằng kích thước từ của máy, nhưng có lẽ nó nằm trong trường hợp của bạn.

Một đơn vị địa chỉ 8 bit kết hợp với bus địa chỉ 16 bit lên tới 64KiB RAM mà CPU có thể xử lý.


3
Nhưng tôi đã sử dụng các máy có đơn vị phân giải địa chỉ là 16 bit. (Vì vậy, khái niệm này rất có ý nghĩa.)
Martin Bonner ủng hộ Monica

4
@MartinBonner Tuy nhiên, nó không liên quan trực tiếp đến kích thước từ của CPU.
glglgl

1
@glglgl - Nó rất liên quan. Tôi không tin có bất kỳ kiến trúc mà không có một đơn vị địa chỉ của một trong hai 8 bit hoặc kích thước chữ của họ.
Jules

1
Tôi không đồng ý với tuyên bố rằng một từ là đơn vị lớn nhất mà CPU có thể thao tác nói chung. Intel i7 có bus dữ liệu 64 bit và vẫn có thể sử dụng các hướng dẫn SIMD 256 bit. Nếu Wikipedia là chính xác, thì từ chỉ độ rộng của bus dữ liệu chứ không phải nội dung của CPU.
Thomas Weller

1
@ThomasWeller: 8088 có bus dữ liệu 8 bit, nhưng vẫn là hướng dẫn 16 bit. Trong thực tế, nó là một 8086 với một cơ sở dữ liệu nhỏ hơn. Lưu ý: độ rộng của cơ sở dữ liệu và chuyển giao thực tế cũng khác nhau (nghĩ dữ liệu bị sai lệch).
Giacomo Catenazzi

1

Ngoài ra từ 8 bit có nghĩa là gì?

Trong ngữ cảnh, kích thước từ đi với kích thước địa chỉ để mô tả bus bộ nhớ. Có 16 bit được gắn vào bộ nhớ để nó có thể chọn vị trí 64ki. Sau đó, mỗi vị trí chứa 8 bit.

Kích thước từ ở đây có thể hoặc không khớp với kích thước đơn vị tính toán của CPU và điều này có thể hoặc không thể phù hợp với độ chi tiết logic trong việc đánh địa chỉ.

Ví dụ: CPU có thể quảng cáo bus 16 bit (cho mục đích này). Nó sử dụng địa chỉ 16 bit trong hướng dẫn của nó và giống như ví dụ của bạn có 64ki. Nhưng nó có 15 bit bus địa chỉ và 16 bit bus dữ liệu. Nó chỉ cần địa chỉ 32ki và luôn nhận được 2 byte với mỗi vị trí. (Nếu một lệnh muốn 1 byte, nó sẽ gửi địa chỉ bị thiếu ít bit nhất, tìm nạp cả hai byte trong bước đó, sau đó xem xét ít nhất địa chỉ mong muốn để quyết định sử dụng một nửa.)

Lưu ý rằng chuyển đổi ngân hàng, PAE, vv được đề cập bởi những người khác không liên quan ở đây. Một đơn vị quản lý bộ nhớ có thể sử dụng địa chỉ 16 bit và có địa chỉ phần cứng 20 bit, do đó CPU cần chuyển đổi và ánh xạ mọi thứ để sử dụng dải địa chỉ 20 bit thực tế của chip RAM có thể được xử lý.

Hãy chắc chắn để chỉ định các đơn vị trong câu trả lời của bạn. Cẩu 64ki. Của cái gì? Các từ 8 bit, làm cho nó (vẫn) 64ki byte RAM có thể định địa chỉ. Bước đó giúp loại bỏ sự nhầm lẫn và làm cho các vấn đề như tầm thường này.


0

Bạn phải sử dụng kích thước từ trong tính toán là tốt. Câu trả lời là 64 KB.

Bạn có thể giải quyết 2 ^ 16 từ và mỗi từ là 8 bit (= 1 byte). Do đó, nó là 64 KB.

Nếu kích thước từ là 16 bit. Câu trả lời sẽ là 128 KB.


1
Tính toán của bạn không giữ được các CPU 32 bit thông thường vẫn có thể giải quyết 2 ^ 32 byte bộ nhớ (4GB), chứ không phải (2 ^ 32) * 4 (16GB).
Dmitry Grigoryev

Các CPU hiện đại có địa chỉ các hàng lớn hơn, các dòng và có ít dòng địa chỉ hơn. Câu hỏi nói về xe buýt địa chỉ mặt vật lý của sự vật. Vì vậy, nhân với kích thước từ của bus đó (không phải kích thước thanh ghi CPU) là chính xác.
JDługosz

0

Có hai mặt của vấn đề này, những gì người hướng dẫn của bạn chắc chắn muốn bạn nói với anh ta và thực tế là gì.

Đầu tiên những gì người hướng dẫn của bạn chắc chắn muốn bạn nói với anh ta.

"16 bit có thể giải quyết 2 ^ 16 vị trí bộ nhớ, mỗi vị trí là 8 bit. Vì vậy, chúng tôi có thể giải quyết bộ nhớ 524288 bit (65536 octet)."

Tuy nhiên, điều này phản ánh một thế giới quan khá đơn giản. Thực tế phức tạp hơn và để đưa ra một câu trả lời dứt khoát đòi hỏi nhiều thông tin hơn. Một số cách trong đó các hệ thống thực có thể phức tạp hơn bao gồm điều này.

  • Nhiều bộ xử lý không có bản đồ IO chuyên dụng, vì vậy các phần của không gian địa chỉ bộ nhớ có thể cần được sử dụng cho những thứ khác ngoài bộ nhớ.
  • "Kích thước từ" của bộ xử lý không hoàn toàn giống với chiều rộng của bus dữ liệu bộ nhớ hoặc đơn vị bộ nhớ có thể định địa chỉ nhỏ nhất.
  • Một số bus cho phép chuyển động của các đơn vị dữ liệu kích thước khác nhau. Điều này đòi hỏi thêm địa chỉ mà có thể hoặc không thể được xử lý bởi các bit của bus địa chỉ chính.
  • Một số bus đa tín hiệu khác nhau trên cùng một dòng. Ví dụ: SDRAM sử dụng cùng một dòng địa chỉ hai lần để gửi "địa chỉ hàng" và "địa chỉ cột".
  • Nhiều hệ thống đã sử dụng các phương pháp chuyển đổi ngân hàng để cho phép các chương trình truy cập nhiều bộ nhớ hơn bộ xử lý có thể giải quyết.
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.