Hướng dẫn thực hành tổ chức máy tính 2

Thực hành tổ chức máy tính 2: Hướng dẫn chi tiết, dễ hiểu. Nắm vững kiến thức, kỹ năng thực hành, ứng dụng vào thực tế. Tài liệu hữu ích cho sinh viên CNTT.

Chuyên ngành

Công Nghệ Thông Tin

Người đăng

Ẩn danh

Thể loại

Hướng dẫn thực hành

2023

41
0
0

Phí lưu trữ

30 Point

Tóm tắt

I. Bắt đầu thực hành tổ chức máy tính 2 Tổng quan cốt lõi

Môn học Tổ chức máy tính 2 là bước đi sâu vào kiến trúc máy tính hiện đại, nơi các khái niệm lý thuyết được chuyển hóa thành kỹ năng thực tiễn. Nội dung này không chỉ tập trung vào cấu trúc phần cứng mà còn khám phá cách phần mềm tương tác với phần cứng ở mức độ thấp. Một hướng dẫn thực hành tổ chức máy tính 2 chi tiết là công cụ cần thiết để nắm vững các chủ đề phức tạp như lập trình assembly, tối ưu hóa hiệu năng máy tính, và quản lý bộ nhớ. Trọng tâm của học phần này là việc sử dụng các công cụ mô phỏng chuyên dụng để kiểm chứng và hiểu rõ hơn về hoạt động bên trong của một bộ xử lý. Sinh viên sẽ được làm quen với hợp ngữ MIPS, một kiến trúc tập lệnh rút gọn (RISC) phổ biến trong giảng dạy, giúp xây dựng nền tảng vững chắc trước khi tiếp cận các kiến trúc phức tạp hơn như x86 hay ARM. Thông qua các bài thực hành, người học sẽ có khả năng phân tích, thiết kế và đánh giá hiệu suất của các thành phần cơ bản trong một hệ thống máy tính. Việc hoàn thành tốt các báo cáo thực hànhđồ án môn học không chỉ đảm bảo kiến thức mà còn rèn luyện tư duy logic và kỹ năng giải quyết vấn đề, một yếu tố quan trọng trong ngành Công nghệ thông tin. Bài viết này sẽ cung cấp một lộ trình chi tiết, từ các khái niệm cơ bản đến những kỹ thuật nâng cao.

1.1. Vai trò của kiến trúc máy tính trong việc tối ưu hiệu năng

Hiểu rõ kiến trúc máy tính là chìa khóa để khai thác tối đa hiệu năng máy tính. Các quyết định thiết kế ở cấp độ vi kiến trúc, chẳng hạn như cấu trúc đường ống, số lượng đơn vị thực thi, hay hệ thống bộ nhớ đệm, đều có tác động trực tiếp đến tốc độ xử lý của CPU. Ví dụ, việc áp dụng kỹ thuật pipeline cho phép CPU thực thi nhiều lệnh cùng một lúc bằng cách chia nhỏ quá trình xử lý thành các giai đoạn gối đầu, từ đó tăng thông lượng (throughput) một cách đáng kể. Tương tự, một hệ thống phân cấp bộ nhớ hiệu quả, với bộ nhớ cache nhanh và cơ chế bộ nhớ ảo thông minh, giúp giảm thiểu độ trễ khi truy cập dữ liệu. Trong thực hành, việc hiểu rõ các nguyên tắc này giúp lập trình viên viết mã hiệu quả hơn, đặc biệt là khi làm việc với hợp ngữ MIPS hoặc các ngôn ngữ cấp thấp khác. Tối ưu hóa mã assembly để giảm thiểu các xung đột đường ống như data hazard hay control hazard là một ví dụ điển hình cho thấy kiến thức về kiến trúc máy tính được áp dụng để cải thiện CPU performance.

1.2. Các công cụ thiết yếu Trình mô phỏng MARS và QtSpim

Để thực hành lập trình assembly, việc sử dụng các trình mô phỏng là không thể thiếu. Trình mô phỏng MARS (MIPS Assembler and Runtime Simulator) và trình mô phỏng QtSpim là hai công cụ phổ biến nhất được sử dụng trong giảng dạy kiến trúc máy tính MIPS. MARS cung cấp một môi trường phát triển tích hợp (IDE) mạnh mẽ, cho phép viết, biên dịch, chạy và gỡ lỗi mã hợp ngữ MIPS một cách trực quan. Giao diện của MARS hiển thị rõ ràng trạng thái của các thanh ghi, bộ nhớ, và cho phép thực thi từng lệnh một (step-by-step), giúp sinh viên dễ dàng theo dõi luồng chương trình và xác định lỗi. Trong khi đó, QtSpim là một phiên bản cải tiến của SPIM với giao diện đồ họa thân thiện hơn, cũng cung cấp đầy đủ các tính năng tương tự. Việc thành thạo các công cụ này là yêu cầu cơ bản để hoàn thành các bài tập lớn tổ chức máy tính, vì chúng cho phép kiểm chứng các thuật toán và hiểu rõ cách tập lệnh MIPS tương tác với phần cứng mô phỏng.

II. Thách thức thường gặp khi thực hành tổ chức máy tính 2

Quá trình học và thực hành tổ chức máy tính 2 thường đi kèm với nhiều thách thức đặc thù. Một trong những khó khăn lớn nhất là việc chuyển đổi tư duy từ lập trình cấp cao sang lập trình assembly ở mức thấp. Thay vì các cấu trúc lệnh phức tạp, người học phải làm việc trực tiếp với các thanh ghi, địa chỉ bộ nhớ và một tập lệnh MIPS hạn chế. Điều này đòi hỏi sự tỉ mỉ và một cách tiếp cận hoàn toàn khác để giải quyết vấn đề. Bên cạnh đó, các khái niệm trừu tượng như kỹ thuật pipeline, xung đột đường ống, hay hệ thống phân cấp bộ nhớ rất khó hình dung nếu không có các công cụ mô phỏng trực quan. Sinh viên thường gặp khó khăn trong việc gỡ lỗi các data hazardcontrol hazard khi viết mã cho kiến trúc pipeline. Yêu cầu của các bài tập lớn tổ chức máy tínhđồ án môn học thường rất cao, đòi hỏi sự kết hợp nhuần nhuyễn giữa lý thuyết và kỹ năng thực hành trên các trình mô phỏng. Việc chuẩn bị một báo cáo thực hành chất lượng, trình bày rõ ràng phương pháp, kết quả và phân tích hiệu năng cũng là một thử thách không nhỏ.

2.1. Phân tích yêu cầu đồ án môn học và báo cáo thực hành

Một đồ án môn học về tổ chức máy tính thường yêu cầu sinh viên thiết kế hoặc mô phỏng một thành phần của hệ thống, ví dụ như một bộ xử lý MIPS đơn chu kỳ hoặc đa chu kỳ, triển khai kỹ thuật pipeline, hoặc thiết kế một hệ thống bộ nhớ cache. Việc đầu tiên và quan trọng nhất là đọc kỹ và phân tích yêu cầu đề bài. Cần xác định rõ các chức năng bắt buộc, các tập lệnh MIPS cần hỗ trợ, và các tiêu chí đánh giá hiệu năng máy tính. Lập một kế hoạch chi tiết, chia nhỏ bài toán thành các module con (ví dụ: khối ALU, khối thanh ghi, khối điều khiển) sẽ giúp quản lý công việc hiệu quả hơn. Đối với báo cáo thực hành, cấu trúc phải rõ ràng, bao gồm phần giới thiệu, cơ sở lý thuyết, thiết kế hệ thống, kết quả thực nghiệm và kết luận. Phần kết quả cần trình bày các kịch bản kiểm thử (test case), ảnh chụp màn hình từ trình mô phỏng MARS, và các số liệu đo lường hiệu năng để chứng minh thiết kế hoạt động chính xác và hiệu quả.

2.2. Khó khăn trong việc hiểu và vận dụng hợp ngữ MIPS

Rào cản lớn đối với nhiều người khi bắt đầu lập trình assembly với hợp ngữ MIPS là sự khác biệt căn bản so với các ngôn ngữ lập trình cấp cao. Mỗi lệnh trong MIPS chỉ thực hiện một thao tác rất nhỏ, như cộng hai thanh ghi hoặc tải một từ từ bộ nhớ. Do đó, để triển khai một thuật toán phức tạp, cần phải viết rất nhiều dòng mã và quản lý cẩn thận việc sử dụng các thanh ghi. Các khái niệm như quy ước gọi hàm (calling convention), quản lý ngăn xếp (stack), và các chế độ địa chỉ hóa là những kiến thức nền tảng nhưng thường gây nhầm lẫn. Việc gỡ lỗi mã MIPS cũng phức tạp hơn, đòi hỏi phải theo dõi giá trị của từng thanh ghi và ô nhớ sau mỗi lệnh thực thi trên trình mô phỏng QtSpim hoặc MARS. Để vượt qua khó khăn này, cần bắt đầu với các bài tập đơn giản, như các phép toán số học, vòng lặp, sau đó mới đến các cấu trúc phức tạp hơn như hàm và đệ quy. Nắm vững tập lệnh MIPS và cách chúng ảnh hưởng đến trạng thái của máy là điều kiện tiên quyết.

III. Hướng dẫn lập trình hợp ngữ MIPS với trình mô phỏng MARS

Để thành công trong môn thực hành tổ chức máy tính 2, việc làm chủ lập trình assembly là yêu cầu cốt lõi. Hợp ngữ MIPS là công cụ chính để tương tác trực tiếp với kiến trúc máy tính ở cấp độ thấp. Trình mô phỏng MARS cung cấp một môi trường lý tưởng để học và thực hành. Hướng dẫn này sẽ tập trung vào phương pháp tiếp cận có hệ thống để viết và gỡ lỗi mã MIPS. Quy trình chuẩn bắt đầu bằng việc phân tích bài toán, sau đó ánh xạ các biến và cấu trúc dữ liệu sang các thanh ghi và vùng nhớ. Tiếp theo là viết mã assembly, tuân thủ chặt chẽ cú pháp và quy ước của tập lệnh MIPS. Một kỹ năng quan trọng là sử dụng hiệu quả các tính năng của MARS, như điểm dừng (breakpoint), thực thi từng bước (step-through), và theo dõi giá trị thanh ghi/bộ nhớ. Bằng cách quan sát sự thay đổi trạng thái của hệ thống sau mỗi lệnh, người học có thể hiểu sâu sắc cách chương trình hoạt động và nhanh chóng xác định các lỗi logic. Việc áp dụng phương pháp này không chỉ giúp hoàn thành các bài tập lớn tổ chức máy tính mà còn xây dựng nền tảng vững chắc cho việc tối ưu hóa CPU performance sau này.

3.1. Làm quen với tập lệnh MIPS cơ bản và cấu trúc mã

Cấu trúc một chương trình hợp ngữ MIPS thường bao gồm hai phần chính: đoạn dữ liệu (.data) và đoạn mã (.text). Đoạn .data dùng để khai báo các biến và hằng số tĩnh, trong khi đoạn .text chứa các lệnh thực thi. Tập lệnh MIPS được chia thành ba định dạng chính: R-type (Register), I-type (Immediate), và J-type (Jump). Các lệnh R-type, như add, sub, and, or, thực hiện các phép toán trên các thanh ghi. Các lệnh I-type, như addi, lw, sw, làm việc với một toán hạng tức thời hoặc địa chỉ bộ nhớ. Các lệnh J-type, như jjal, được sử dụng cho các bước nhảy không điều kiện. Để bắt đầu, cần nắm vững các lệnh cơ bản này, cùng với các lệnh rẽ nhánh điều kiện như beq (branch on equal) và bne (branch on not equal). Việc hiểu rõ chức năng và định dạng của từng lệnh là bước đầu tiên để có thể đọc và viết mã lập trình assembly một cách chính xác.

3.2. Gỡ lỗi và tối ưu hóa mã trong trình mô phỏng QtSpim

Gỡ lỗi là một kỹ năng không thể thiếu trong lập trình assembly. Trình mô phỏng QtSpim cung cấp các công cụ mạnh mẽ cho công việc này. Khi chương trình không chạy đúng như mong đợi, bước đầu tiên là sử dụng chế độ thực thi từng lệnh. Bằng cách nhấn phím F10 (Single Step), có thể quan sát lệnh nào đang được thực thi và kiểm tra giá trị của các thanh ghi liên quan. Cần đặc biệt chú ý đến các thanh ghi bị thay đổi bởi lệnh hiện tại. Đối với các lỗi liên quan đến truy cập bộ nhớ, cửa sổ Dữ liệu (Data) trong QtSpim cho phép xem nội dung của stack và các vùng nhớ tĩnh. Việc kiểm tra xem con trỏ ngăn xếp $sp có được quản lý đúng cách hay không là rất quan trọng, đặc biệt là trong các hàm lồng nhau. Sau khi mã đã chạy đúng, có thể tiến hành tối ưu hóa. Một số kỹ thuật tối ưu cơ bản bao gồm giảm số lần truy cập bộ nhớ bằng cách sử dụng thanh ghi, và sắp xếp lại các lệnh để tránh các data hazard tiềm ẩn trong kiến trúc pipeline.

IV. Bí quyết tối ưu hiệu năng CPU bằng kỹ thuật pipeline

Một trong những nội dung trọng tâm của thực hành tổ chức máy tính 2 là tìm hiểu và áp dụng kỹ thuật pipeline (đường ống). Đây là một phương pháp thiết kế bộ xử lý nhằm tăng thông lượng lệnh bằng cách cho phép nhiều lệnh được xử lý đồng thời ở các giai đoạn khác nhau. Thay vì đợi một lệnh hoàn thành tất cả các bước trước khi bắt đầu lệnh tiếp theo, pipeline chia quá trình thực thi thành nhiều giai đoạn (ví dụ: Tìm nạp lệnh, Giải mã, Thực thi, Truy cập bộ nhớ, Ghi kết quả). Điều này giúp cải thiện đáng kể CPU performance. Tuy nhiên, phương pháp này cũng tạo ra các vấn đề mới gọi là xung đột đường ống. Việc hiểu rõ bản chất và cách giải quyết các xung đột này là chìa khóa để thiết kế một bộ xử lý hiệu quả. Các bài thực hành thường yêu cầu sinh viên sửa đổi một bộ xử lý đơn chu kỳ thành bộ xử lý có pipeline và triển khai các cơ chế xử lý xung đột. Đây là một bài tập quan trọng giúp củng cố kiến thức về kiến trúc máy tínhhiệu năng máy tính.

4.1. Nguyên lý và các giai đoạn của một đường ống MIPS 5 tầng

Kiến trúc MIPS cổ điển thường sử dụng một pipeline 5 tầng, bao gồm:

  1. IF (Instruction Fetch): Giai đoạn tìm nạp lệnh từ bộ nhớ lệnh dựa trên địa chỉ trong thanh ghi PC (Program Counter).
  2. ID (Instruction Decode): Giai đoạn giải mã lệnh, đọc các toán hạng từ tệp thanh ghi, và chuẩn bị tín hiệu điều khiển.
  3. EX (Execute): Giai đoạn thực thi phép toán. Khối ALU (Arithmetic Logic Unit) thực hiện các phép tính số học hoặc logic.
  4. MEM (Memory Access): Giai đoạn truy cập bộ nhớ dữ liệu, thực hiện các lệnh đọc (lw) hoặc ghi (sw).
  5. WB (Write Back): Giai đoạn ghi kết quả từ ALU hoặc từ bộ nhớ trở lại tệp thanh ghi. Với kỹ thuật pipeline này, trong điều kiện lý tưởng, một lệnh mới có thể bắt đầu sau mỗi chu kỳ xung nhịp, giúp tốc độ thực thi gần như tăng gấp 5 lần so với kiến trúc đơn chu kỳ. Việc mô phỏng các giai đoạn này giúp sinh viên hình dung rõ ràng luồng dữ liệu và tín hiệu điều khiển bên trong CPU.

4.2. Giải quyết xung đột đường ống Data và Control Hazard

Hiệu suất của pipeline bị ảnh hưởng bởi các xung đột đường ống. Có hai loại chính: Data hazard (xung đột dữ liệu) xảy ra khi một lệnh cần kết quả của một lệnh trước đó chưa hoàn thành. Ví dụ, lệnh add $t0, $t1, $t2 theo sau là sub $t3, $t0, $t4. Lệnh sub cần giá trị mới của $t0 mà lệnh add chưa ghi lại. Giải pháp phổ biến là kỹ thuật chuyển tiếp (forwarding) hoặc chèn một chu kỳ chờ (stall). Control hazard (xung đột điều khiển) xảy ra do các lệnh rẽ nhánh. CPU không biết lệnh tiếp theo cần nạp là lệnh ngay sau hay lệnh ở địa chỉ đích của nhánh cho đến khi điều kiện rẽ nhánh được tính toán. Giải pháp bao gồm dự đoán nhánh (branch prediction) và thực thi đầu cơ (speculative execution). Trong các bài tập lớn tổ chức máy tính, sinh viên thường được yêu cầu triển khai các đơn vị phát hiện và xử lý các loại hazard này để đảm bảo pipeline hoạt động chính xác.

V. Cách làm chủ hệ thống phân cấp bộ nhớ và bộ nhớ cache

Một hệ thống máy tính hiện đại không thể đạt được hiệu năng máy tính cao nếu không có một hệ thống phân cấp bộ nhớ được thiết kế tốt. Tốc độ của CPU nhanh hơn rất nhiều so với tốc độ của bộ nhớ chính (RAM). Để thu hẹp khoảng cách này, các kỹ sư kiến trúc máy tính đã phát triển bộ nhớ cache – một bộ nhớ nhỏ, nhanh, nằm giữa CPU và RAM. Mục tiêu của bộ nhớ cache là lưu trữ các dữ liệu và lệnh được truy cập thường xuyên. Khi CPU cần một dữ liệu, nó sẽ kiểm tra cache trước. Nếu tìm thấy (cache hit), tốc độ truy cập sẽ rất nhanh. Nếu không tìm thấy (cache miss), CPU phải truy cập RAM, gây ra độ trễ đáng kể. Hiểu được nguyên lý hoạt động của cache, bao gồm các kỹ thuật cache mapping, chính sách thay thế, và chính sách ghi, là rất quan trọng trong thực hành tổ chức máy tính 2. Ngoài ra, khái niệm bộ nhớ ảo cũng là một phần không thể thiếu, giúp quản lý bộ nhớ hiệu quả và an toàn hơn.

5.1. Tối ưu truy cập với bộ nhớ cache và các kỹ thuật cache mapping

Bộ nhớ cache hoạt động dựa trên nguyên lý cục bộ (locality of reference), bao gồm cục bộ về không gian (dữ liệu gần nhau có xu hướng được truy cập gần nhau) và cục bộ về thời gian (dữ liệu vừa được truy cập có khả năng cao sẽ được truy cập lại). Kỹ thuật cache mapping quyết định cách một khối bộ nhớ chính được ánh xạ vào một dòng trong cache. Có ba phương pháp chính:

  1. Direct Mapped (Ánh xạ trực tiếp): Mỗi khối bộ nhớ chỉ có thể được đặt vào một dòng cache duy nhất. Đây là phương pháp đơn giản nhất nhưng dễ gây xung đột.
  2. Fully Associative (Ánh xạ kết hợp toàn phần): Một khối bộ nhớ có thể được đặt vào bất kỳ dòng nào trong cache. Phương pháp này linh hoạt nhất nhưng đòi hỏi phần cứng so sánh phức tạp.
  3. Set-Associative (Ánh xạ kết hợp tập hợp): Một sự dung hòa giữa hai phương pháp trên, nơi cache được chia thành các tập hợp, và một khối bộ nhớ có thể được đặt vào bất kỳ dòng nào trong một tập hợp cụ thể.

5.2. Tìm hiểu cơ chế hoạt động của bộ nhớ ảo Virtual Memory

Bộ nhớ ảo hay virtual memory là một kỹ thuật cho phép một chương trình sử dụng một không gian địa chỉ ảo lớn hơn bộ nhớ vật lý thực tế. Hệ điều hành, với sự hỗ trợ từ phần cứng (MMU - Memory Management Unit), sẽ ánh xạ các địa chỉ ảo sang các địa chỉ vật lý. Cơ chế này mang lại nhiều lợi ích: cho phép nhiều tiến trình chạy đồng thời mà không can thiệp vào bộ nhớ của nhau, đơn giản hóa việc quản lý bộ nhớ cho lập trình viên, và cho phép sử dụng đĩa cứng như một phần mở rộng của RAM (thông qua cơ chế paging/swapping). Khi một trang (page) cần thiết không có trong bộ nhớ vật lý, một lỗi trang (page fault) sẽ xảy ra, và hệ điều hành sẽ tải trang đó từ đĩa vào RAM. Mặc dù bộ nhớ ảo làm tăng độ phức tạp của hệ thống, nó là một thành phần không thể thiếu trong các hệ điều hành hiện đại, giúp hệ thống hoạt động ổn định và hiệu quả.

VI. Ứng dụng hệ thống vào ra và DMA trong đồ án thực tế

Hoàn thiện một hướng dẫn thực hành tổ chức máy tính 2 không thể bỏ qua hệ thống vào/ra (I/O System). Đây là thành phần chịu trách nhiệm giao tiếp giữa CPU, bộ nhớ và các thiết bị ngoại vi như bàn phím, chuột, màn hình, và ổ đĩa. Quản lý I/O là một thách thức đối với hiệu năng máy tính, vì tốc độ của các thiết bị ngoại vi thường chậm hơn rất nhiều so với CPU. Có nhiều phương pháp để quản lý I/O, từ đơn giản như Programmed I/O (CPU phải chờ thiết bị) đến hiệu quả hơn như sử dụng ngắt (interrupt), nơi thiết bị sẽ báo cho CPU khi nó sẵn sàng. Phương pháp tiên tiến nhất là truy cập bộ nhớ trực tiếp (DMA - Direct Memory Access), cho phép thiết bị truyền dữ liệu trực tiếp đến/từ bộ nhớ mà không cần sự can thiệp của CPU. Trong các đồ án môn học nâng cao, sinh viên có thể được yêu cầu mô phỏng hoặc lập trình cho các bộ điều khiển I/O, sử dụng ngắt hoặc DMA để tối ưu hóa việc truyền dữ liệu, qua đó hiểu rõ hơn về hoạt động tổng thể của một hệ thống máy tính.

6.1. Lập trình ngắt interrupt và quản lý thiết bị ngoại vi

Cơ chế ngắt (interrupt) là một giải pháp hiệu quả để quản lý hệ thống vào/ra. Thay vì CPU liên tục kiểm tra trạng thái của một thiết bị (polling), nó có thể thực hiện các công việc khác. Khi một thiết bị I/O hoàn thành một tác vụ (ví dụ: nhận được một ký tự từ bàn phím), nó sẽ gửi một tín hiệu ngắt đến CPU. CPU sẽ tạm dừng công việc hiện tại, lưu lại trạng thái, và chuyển sang thực thi một chương trình con đặc biệt gọi là trình xử lý ngắt (Interrupt Service Routine - ISR) để phục vụ thiết bị. Sau khi ISR hoàn thành, CPU sẽ khôi phục lại trạng thái và tiếp tục công việc bị gián đoạn. Lập trình với ngắt đòi hỏi sự cẩn thận trong việc quản lý ngữ cảnh và đảm bảo ISR thực thi nhanh chóng để không làm ảnh hưởng đến hiệu năng toàn hệ thống. Trong trình mô phỏng MARS, có hỗ trợ mô phỏng một số ngắt cơ bản, cho phép sinh viên thực hành viết các trình xử lý ngắt đơn giản.

6.2. Tăng hiệu suất truyền dữ liệu với truy cập bộ nhớ trực tiếp

Truy cập bộ nhớ trực tiếp (DMA) là kỹ thuật tối ưu nhất cho việc truyền các khối dữ liệu lớn. Một bộ điều khiển DMA đặc biệt sẽ đảm nhận toàn bộ quá trình truyền dữ liệu giữa thiết bị I/O và bộ nhớ chính. CPU chỉ cần khởi tạo quá trình DMA bằng cách cung cấp cho bộ điều khiển DMA các thông tin cần thiết: địa chỉ bắt đầu trong bộ nhớ, số lượng byte cần truyền, và chiều truyền (đọc/ghi). Sau đó, CPU có thể thực hiện các công việc khác. Khi quá trình truyền hoàn tất, bộ điều khiển DMA sẽ gửi một ngắt (interrupt) để thông báo cho CPU. Bằng cách giải phóng CPU khỏi công việc truyền dữ liệu tốn thời gian, DMA giúp cải thiện đáng kể CPU performance và hiệu quả tổng thể của hệ thống vào/ra. Mô phỏng một bộ điều khiển DMA là một chủ đề phổ biến cho các đồ án môn học về kiến trúc máy tính nâng cao.

11/09/2025

Trích đoạn nội dung tài liệu

Chương 1 SỐ NHỊ PHÂN VÀ MÃ Hệ nhị phân (hay hệ đếm cơ số hai hoặc mã nhị phân) là một hệ đếm dùng hai ký tự để biểu đạt một giá trị số, bằng tổng số các lũy thừa của 2. Hai ký tự đó thường là 0 và 1; chúng thường được dùng để biếu đạt hai giá trị hiệu điện thế tương ứng (có hiệu điện thế, hoặc hiệu điện thế cao là 1 và không có, hoặc thấp là 0). Do có ưu điểm tính toán đơn giản, dễ dàng thực hiện về mặt vật lý, chăng hạn như trên các mạch điện tử, hệ nhị phân trở thành một phần kiến tạo căn bản trong các máy tính đương thời.1 Phan cau hỏi trắc nghiệm Câu hỏi 1. Một vùng nhớ kích thước 4 bytes thì tương đương với bao nhiêu bits? a.

Bit là đơn vị nhớ cơ bản của máy tính, mỗi bit sẽ lưu trữ giá trị 0 hoặc 1. Cụm 8 bits dude goi 1A 1 byte, vi thé 4 bytes sé tương đương 32 bits. Để biểu diễn 43 giá trị cần ít nhất bao nhiêu bits? a. Dể biểu diễn được n trạng thái trong thế giới thực, máy tính cần tối thiểu |loøan| bits.

Vậy 6 bits là đáp án. Máy tính có thể biếu diễn bao nhiêu trạng thái với 7 bits? a. Với n bits, máy tính có thể tổ hợp thành 2” bộ giá trị riêng biệt tương đương với 2” trạng thái. Vì vậy 256 trạng thái là đáp án.

Ví dụ: bộ mã ASCII là bộ mã 7-bit nên biểu diễn được 256 kí tự khác nhau. Số C trong hệ số đếm 16 khi chuyển sang hệ thập phan bằng: a. Trong hé thập lục phân, ngoài các kí số từ 0 đến 9, kí hiệu A dành cho giá trị 10, B dành cho giá trị 11 và C, D, E, F lần lượt đại diện cho giá trị 12, 13, 14, 15. Số thập phân 14.75 tương đương số nhị phân nào? a.

Lần lượt chuyén déi 15 = 1110) va .11, ta cé dude dap án là 1110. Số 111100110 trong hệ nhị phân được đổi sang hệ bát phân là bao nhiêu? a. Để chuyển từ hệ nhị phân sang hệ bát phân, hãy gom cụm 3-bit từ hàng don vi và chuyển từng cạm một thành một kí số bát phân. Số 11010111100110 trong hệ nhị phân được đổi sang hệ thập lục phân là bao nhiêu? a.

Để chuyển từ hệ nhị phân sang hệ thập lục phân, hãy gom cum 4-bit từ hàng đơn vị và chuyển giá trị thành một kí số thập lục phân. Cụ thể, 11010111100110 được xem như 11,0101,1110,0110 và đáp án là 35E6¡s. Số bù 2 của số 1101 1100 0111 là bao nhiêu? a. Để tìm bù 2 của một số nhị phân, hãy lật bít để tìm bù 1 rồi cộng thêm 1 đơn vị sẽ có bù 2.

Số có dấu 5 bits lớn nhất có thể biểu diễn theo phương pháp dấu lượng (Sign and Magnitude) 1a bao nhiêu? a. Bit đầu tiên dành cho phần dẫu (Sign) va 4 bit con lai danh cho phan tri (Magnitude) vdi gia tri cuc dai la +1111 = 15. Số có dẫu 5 bits nhỏ nhất có thể biểu diễn theo phương pháp dấu lượng (Sign and Magnitude) là bao nhiêu? a. Bit đầu tiên dành cho phần dẫu (Sign) va 4 bit con lai danh cho phan tri (Magnitude) vdi gia tri cuc dai la -1111 = -15.

Dâu là dạng chuẩn của phần định trị (mantissa) trong biểu diễn số thực dấu chấm động (Floating Point Number)? a. Phần định trị luôn được chuẩn hóa thành 0.1xxxx trong biểu diễn số thực dấu chấm động bằng cách dịch chuyển dấu chấm ra liền trước bít 1 trọng số cao nhất và tăng giảm ¿ trong số mũ 2” tương ứng để giữ nguyên giá trị của số đó. Phép toán nao bi tran sé (overflow)? a. Các phép toán đều thực hiện trên số hạng 4-bit.

Nếu kết quả cũng là số 4-bit, phép toán không tràn. Nếu xuất hiện bit thứ 5 (hàng vạn) thì tràn số chỉ xảy ra khi (a) hai toán hạng cùng dấu) VÀ (b) bit thứ 4 của kết quả khác với bit thứ 4 của số hạng.2 Phan bài tập Câu hỏi 1.1 - sách [1] trang 33) List the octal and hexadecimal numbers from 16 to 32. Using A and B for the last two digits, list the numbers from 8 to 28 in base 12. - Hệ bát phân sử dụng 8 kí số từ 0 đến 7, cho nên hàng đơn vị tăng đến 7 thì sẽ quay về 0 đồng thời hàng chục tăng thêm 1 giá trị, vì thế bắt đầu từ 16 thì tiếp theo là 17, rồi đến 20, 21, 22, 23, 24, 25, 26, 27, 30, 31, 32.

- Hệ thập lục phân ngoài 10 kí số từ 0 đến 9 còn dùng thêm kí tự A đến F, cho nên ta có thể đếm 16, 17, 18, 19, 1A, 1B, 1C, 1D, 1E, 1F, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 2A, 2B, 2C, 2D, 2E, 2F, 30, 31, 32. - Hệ thập nhị phân chỉ sử dụng thêm kí tự Á và B, cho nên ta có thể đếm 16, 17, 18, 19, 1A, 1B, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 2A, 2B, 30, 31, 32. - Đoạn code Dython liệt kê các số từ 16 đến 32 trong các hệ cơ số được cho dưới đây. print("\nList Octan numbers: ") var = 0016 # start value while (var <= 0032): # end value print (oct(var)) # print out the number in octal form var = var + 1 # increment varhex by 1 print("\nList Hexadecimal numbers:") var = 0x16 # start value while (var <= 0x32): # end value print (hex(var)) # print out the number in hex form var = var + 1 # increment varhex by 1 Listing 1: Doan ma 1 Câu hỏi 2.

Theo qui ước, 1 Giga bytes = 2”9 bytes. 1 Mega bytes = 2”? bytes. 1 Kilo bytes = 2!9 bytes. Vì thế: (a) 32,768 bytes (b) 67,108,864 bytes (c) 6,871,947,674 bytes Câu hỏi 3.4 - sách [1| trang 33) What is the largest binary number that can be expressed with 16 bits? What are the equivalent decimal and hexadecimal numbers? Gợi ý.

Số nhị phân đó là 1111111111111111a, và có giá trị thập phân là 2!8 — 1 — 65535, và được biểu diễn trong hệ thập lục phân là 0zP'ˆ'PF,. (a) hệ cơ số 6 (b) hệ cơ số 8 (c) hệ cơ số 11 Câu hỏi 5. Bố nhị phân | 00010000 | 00000000 | 11011010 | 10101010 | 10000101 | 11111111 Biéu dién bi 1 | 11101111 | 11111111 | 00100101 | 01010101 | 01111010 | 00000000 Biển diễn bù 2 | 11110000 | 100000000 | 00100110 | 01010110 | 01111011 | 00000001 Trong trường hợp cân (b) thì bit 1 sẽ bị tràn và chuỗi 8-bit còn lại mang giá trị 0, vì thế, số bù 2 của 0 chính là 0.18 - sách [1] trang 34) Perform subtraction on the given unsigned binary numbers using the 2’s complement of the subtrahend. Where the result should be negative, find its 2’s complement and affix a minus sign.

(a) (c) 10011 1001 _— 10010 — 110101 00001 1010100 (b) Bit 1 1A bit tran. 100010 (d) — 100110 101000 1111100 — 10101 010011 Bít 1 là bit tran.20 - sách [1] trang 35) Convert decimal +49 and +29 to binary, using the signed-2’s-complement representation and enough digits to accommodate the numbers. Then perform the binary equivalent of (+29) + (-49), (-29) + (449), and (-29) + (-49). Convert the answers back to decimal and verify that they are correct.

Giá trị lớn nhất là 49 và nên miền giá trị của phép toán cộng hoặc trừ trên hai số hạng sẽ là [—98; 98|, số bit cần thiết cho miền giá trị này là 8 bit. 29 — 0001 1101; -29 = 11100011s, 49 = 0011 00015 -49 = 110011115, (a) 29 00011101 — 49 +11001111 —20 11101100 Đáp án 11101100 là một số âm vì vậy được chuyển đổi thành giá trị thập phân là 11101100 —> 00010011; —> 00010100¡; —› -20. —99 11100011 +49 +00110001 20 100010100 1 18 bit tran nén đáp án là 00010100, đây là một số dương và có giá trị thập phan là 20. (c) —99 11100011 — 49 +11001111 —78 110110010 1 là bit tràn nên đáp án là 10110010, đây là một số âm vì vậy được chuyển đổi thành giá trị thập phân là 10110010 —> 01001101;; —> 01001110; — -78.23 - sách [1| trang 35) Represent the unsigned decimal numbers 791 and 658 in BCD, and then show the steps necessary to form their sum.

791 được biểu diễn bởi 0111 1001 0001gep 658 được biểu diễn bởi 0110 0101 1000 gep 0111 1001 0001 hundreds + 0110 tens + 0101 units + 1000 1110 1110 1001 Hang đơn vị có kết quả là 1001a = 9. Hàng chục có kết quả là 1110a = 14 thì lẫy 4 và mang nhớ 1 sang hàng trăm. Hàng trăm có kết quả là 1110; = 14. Kết quả của phép toán là 791 + 658 là 1449.2 - sách [1| trang 35) Represent the decimal number 6,248 in (a) BCD, (b) excess-3 code.

Mã BCD có được sau khi chuyển mỗi kí số được chuyển thành cụm nhị phân 4-bit. Trong khi mã excess-3 có được từ BCD bằng cách +3 vào mỗi cụm nhị phan. 6,248 = 0110 0010 0100 1000gcp 6,248 = 1001 0101 0111 1011,ze¿;;3 Câu hỏi 11.29 - sách [1] trang 35) Decode the following ASCI code: 1010011 1110100 1100101 1110110 1100101 0100000 1001010 1101111 1100010 1110011.3 Các chủ đề sinh viên tự học Biểu diễn số nhị phân và kí tự Video: Link. Biéu dién sé thuc Video: Link.

Lịch sử máy tính điện tử Bộ phim tài liệu đầy đủ nhất cha BBC: Link. Tìm kiếm trên web Hãy sử dụng từng từ khóa sau đây để tìm video hay bài đọc về các chủ đề tương ứng. Excess-3 code Chương 2 DAI SO BOOLE Trong đại số trừu tượng, đại số Boole (hay đại số Boolean) là một cấu trúc đại số có các tính chất cơ bản của cả các phép toán trên tập hợp và các phép toán logic. Cụ thể, các phép toán trên tập hợp được quan tâm là phép giao, phép hợp, phép bù; và các phép toán logic là Và, Hoặc, Không.

Đại số Boole được đặt tên theo George Boole (1815—1864), một nhà toán học người Anh. Dại số Boole làm việc với các đại lượng chỉ nhận giá trị Đúng hoặc Sai và có thể thể hiện hệ thống số nhị phân, hoặc các mức điện thế trong mạch điện logic. Do đó đại số Boole có nhiều ứng dụng trong kỹ thuật điện và khoa học máy tính, cũng như trong logic toán học.1: Giáo sư George Boole (1815 - 1864) 2.1 Phần câu hỏi trắc nghiệm Câu hỏi 1. Công thức của P là gì theo bảng sự thật dưới đây? A|B|F 0100 0110 1} 0 | 0 1} ijl a.

Thứ tự ưu tiên từ thấp đến cao trong biểu thức boole ra sao? a. or, and, not. and, not, or. not, and, or.

or, not, and.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ