Giới thiệu
Để trở thành một chuyên gia trong lĩnh vực máy tính ngày nay, bạn cần nắm vững 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 hiệu quả. Đây là những thuật ngữ quan trọng mà bạn cần hiểu để mô tả một hệ thống máy tính.
1. Tổ chức máy tính (TCMT) và kiến trúc máy tính (KTMT) là gì?
Tổ chức máy tính (Computer Organization) liên quan đến các khối chức năng và cách chúng kết nối với nhau để thực hiện các tính năng kiến trúc, 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ớ,… Tổ chức máy tính là cách các bộ phận cấu thành 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.
Kiến trúc máy tính (Computer Architecture) là 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ả.
Mặc dù TCMT và KTMT khác nhau về một số điểm cơ bản, nhưng hai yếu tố này luôn có mối quan hệ với nhau trong một hệ thống máy tính. Việc thay đổi công nghệ 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. Trong phần tiếp theo, chúng ta sẽ cùng tìm hiểu về các khái niệm cơ bản trong kiến trúc máy tính.
Sơ đồ khái quát kiến trúc máy tính
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 làm gián đoạn, chặn việc đọc – 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 và chuyển nó đến bộ điều khiển ổ cứng, sau đó lưu dữ liệu đã đọc từ ổ đĩa vào bộ nhớ đệm và cuối cùng là chuyển dữ liệu trở lại cho chương trình ứng dụng.
Trong trường hợp các ứng dụng muốn đọc nhiều dữ liệu hơn, CTLT sẽ chặn yêu cầu và kiểm tra xem dữ liệu đó có trong bộ nhớ đệm hay không bằng cách khảo sát các bộ nhớ đệm của chúng. Nếu có dữ liệu, chương trình sẽ chuyển chúng trở lại từ bộ nhớ đệm cho các ứng dụng mà không cần thao tác trên ổ cứng. Phương pháp này giúp tăng tốc độ truy cập và có thể ảnh hưởng đáng kể đến hiệu suất ổ đĩa.
3. Kiến trúc mã hóa
Kiến trúc mã hoá là một khuôn mẫu 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 chính: bộ mã hoá và bộ giải mã. Bộ mã hoá có nhiệm vụ mã hoá đầu vào thành trạng thái tensor. Trạng thái này sẽ được truyền vào bộ giải mã để sinh ra đầu ra. Cụ thể:
- 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 như ví dụ dưới đây:
from mxnet.gluon import nn
# Saved in the d2l package for later use
class Encoder(nn.Block):
"""The base encoder interface for the encoder-decoder architecture."""
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 kết quả trả về từ bộ mã hoá. Quá trình này đảm bảo rằng thông tin về độ dài hợp lệ của đầu vào được bổ sung để tạo ra trạng thái cần thiết. Vì vậy, bộ giải mã nhận hai đầu vào: câu đích và trạng thái. Dưới đây là ví dụ về mô hình bộ giải mã:
# Saved in the d2l package for later use
class Decoder(nn.Block):
"""The base decoder interface for the encoder-decoder architecture."""
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 vào các loại toán hạng cơ bản như sau:
4.1. Toán hạng thanh ghi (Register Operands)
Khác với các chương trình được xây dựng trên ngôn ngữ cao cấp, toán hạng của các lệnh số học thường bị hạn chế. Chúng phải được đặt ở các vị trí đặc biệt và được xây dựng trực tiếp trong phần cứng, được gọi là thanh ghi (thường giới hạn ở mức 32 thanh ghi trên các máy tính hiện nay).
Các thanh ghi trong MIPS
4.2. Toán hạng bộ nhớ (Memory Operands)
Trong các thanh ghi, vi xử lý chỉ có thể lưu giữ một lượng nhỏ dữ liệu. Trong khi đó, bộ nhớ máy tính có thể chứa hàng triệu dữ liệu. Đặc biệt, với lệnh MIPS, các phép tính số học chỉ diễn ra trên thanh ghi. Do đó, MIPS cần lệnh để chuyển dữ liệu giữa bộ nhớ và thanh ghi. Lệnh này được gọi là lệnh chuyển dữ liệu và có hai định dạng như sau:
- Lệnh chuyển dữ liệu từ bộ nhớ vào thanh ghi được gọi là lệnh nạp (load word) với định dạng:
lw $s1,20($s2)
. - Lệnh chuyển dữ liệu từ thanh ghi ra bộ nhớ được gọi là lệnh lưu (store word) với định dạng:
sw $s1,20($s2)
.
Lưu ý: Để truy cập vào bộ nhớ, các lệnh phải cung cấp địa chỉ bộ nhớ. Địa chỉ là giá trị dùng để xác định vị trí của một phần tử dữ liệu trong một 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 một số tức thời (constant/immediate number) đượ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 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 này, bạn đọc đã hiểu rõ về các khái niệm này và có thể xây dựng các chương trình hiệu quả hơn.
Phạm Hoài Thương là tác giả chính của website Trường Mầm Non Tuổi Hoa Ba Đình, một người có tâm huyết và đam mê với giáo dục mầm non. Với kinh nghiệm nhiều năm trong lĩnh vực giáo dục và kỹ năng viết lách xuất sắc, cô Thương đã xây dựng nên một trang web hữu ích và thân thiện, mang đến cho phụ huynh những thông tin giá trị về ngôi trường này. Đọc tiếp