Giới thiệu
Bạn muốn trở thành một chuyên gia trong lĩnh vực máy tính? Để làm được điều này, bạn cần hiểu rõ về tổ chức và kiến trúc máy tính để có thể xây dựng các chương trình chạy hiệu quả. Trong bài viết này, chúng ta sẽ tìm hiểu về các khái niệm cơ bản về tổ chức và kiến trúc máy tính cùng các thuật ngữ liên quan.
1. Tổ chức máy tính và kiến trúc máy tính là gì?
Tổ chức máy tính (TCMT) là khái niệm liên quan đến việc tổ chức các khối chức năng và kết nối giữa chúng để thực hiện các tính năng kiến trúc. Điều này bao gồm tín hiệu điều khiển, giao tiếp giữa máy tính và thiết bị ngoại vi, công nghệ bộ nhớ, v.v. TCMT đơn giản là cách các bộ phận của hệ thống kết nối và hoạt động với nhau để thực hiện kiến trúc tập lệnh.
Trong khi đó, kiến trúc máy tính là thuật ngữ chỉ việc lựa chọn và kết nối các thành phần phần cứng một cách khoa học để tạo ra các máy tính đáp ứng được yêu cầu về chức năng, hiệu suất và giá cả.
Dù có nhiều điểm khác biệt cơ bản, TCMT và KTMT luôn có mối quan hệ với nhau trong một hệ thống máy tính. Công nghệ tiến bộ không chỉ ảnh hưởng đến tổ chức mà còn làm cho kiến trúc trở nên phức tạp và hiệu quả hơn.
2. Chương trình lưu trữ
Chương trình lưu trữ (CTLT) được thiết kế với nhiều đặc điểm kiến trúc khác nhau. Chúng được gắn vào ổ cứng BIOS để chặn việc đọc và ghi từ các chương trình ứng dụng và trình điều khiển thiết bị.
Khi một chương trình ứng dụng muốn đọc dữ liệu từ ổ cứng, CTLT sẽ chặn yêu cầu đọc, sau đó chuyển nó đến bộ điều khiển ổ cứng. Sau khi dữ liệu đã được đọc từ ổ đĩa và lưu vào bộ nhớ đệm, cuối cùng, nó được trả lại cho chương trình ứng dụng.
Nếu các ứng dụng muốn đọc nhiều dữ liệu hơn, CTLT sẽ kiểm tra xem dữ liệu đó có trong bộ nhớ đệm hay không. Nếu có, chương trình sẽ trả dữ liệu trực tiếp từ bộ nhớ đệm mà không cần thao tác đọc từ ổ cứng. Cách thức này giúp tăng tốc độ truy cập và ảnh hưởng đến hiệu suất ổ đĩa.
3. Kiến trúc mã hóa
Kiến trúc mã hoá là một mô hình thiết kế mạng nơ-ron được sử dụng để xử lý ngôn ngữ tự nhiên. Kiến trúc máy tính này bao gồm hai phần: bộ mã hoá và bộ giải mã. Bộ mã hoá chuyển đổi đầu vào thành trạng thái tensor, sau đó truyền nó vào bộ giải mã để sinh ra đầu ra.
- Bộ mã hoá: là một mạng nơ-ron thông thường nhận đầu vào và trả về đầu ra. Đầu vào có thể là một câu nguồn. Ví dụ:
from mxnet.gluon import nn # Lưu trữ trong gói d2l để sử dụng sau này class Encoder(nn.Block): """Giao diện mã hoá cơ bản cho kiến trúc mã hoá-giải mã.""" def __init__(self, **kwargs): super(Encoder, self).__init__(**kwargs) def forward(self, X, *args): raise NotImplementedError
- Bộ giải mã: có phương thức init-state để phân tích đầu ra từ bộ mã hoá. Quá trình này bổ sung thông tin về độ dài hợp lệ của đầu vào để tạo ra trạng thái cần thiết. Bộ giải mã nhận hai đầu vào chính: một câu đích và một trạng thái. Dưới đây là một ví dụ về mô hình bộ giải mã:
# Lưu trữ trong gói d2l để sử dụng sau này class Decoder(nn.Block): """Giao diện giải mã cơ bản cho kiến trúc mã hoá-giải mã.""" def __init__(self, **kwargs): super(Decoder, self).__init__(**kwargs) def init_state(self, enc_outputs, *args): raise NotImplementedError def forward(self, X, state): raise NotImplementedError
4. Biểu diễn toán hạng
Biểu diễn toán hạng tập trung chủ yếu vào loại cơ bản sau:
4.1. Toán hạng thanh ghi (Register Operands)
Toán hạng của các lệnh số học thường bị hạn chế và phải được đặt trong các vị trí đặc biệt trên thanh ghi. Máy tính hiện nay giới hạn ở mức 32 thanh ghi.
4.2. Toán hạng bộ nhớ (Memory Operands)
Trong vi xử lý, chỉ có thể lưu giữ một lượng nhỏ dữ liệu trong thanh ghi, trong khi bộ nhớ máy tính có thể chứa hàng triệu dữ liệu. Vì vậy, cần có các lệnh để chuyển dữ liệu giữa bộ nhớ và thanh ghi. Với lệnh MIPS, chuyển dữ liệu giữa bộ nhớ và thanh ghi được thực hiện bằng các lệnh như lw
(load word) và sw
(store word).
Lưu ý: Để truy cập vào bộ nhớ, các lệnh phải cung cấp địa chỉ bộ nhớ, tức là giá trị dùng để xác định vị trí của phần tử dữ liệu trong mảng bộ nhớ.
4.3. Toán hạng hằng (Constant or Immediate Operands)
Toán hạng này chỉ đại diện cho một hằng số hoặc số tức thời có thể được sử dụng trong một phép toán. Ví dụ:
addi $s3, $s3, 4 # $s3 = $s3 + 4
Bài viết này đã cung cấp những kiến thức cơ bản về tổ chức và kiến trúc máy tính. Hy vọng qua bài viết, bạn đã nắm vững những khái niệm cơ bản trong hệ thống máy tính để xây dựng các chương trình chạy hiệu quả hơn.
Phạm Thị Thanh Ngọc