Kiến trúc tập lệnh

Một **tập lệnh**, hoặc **kiến trúc tập lệnh** (tiếng Anh: instruction set architecture, viết tắt *ISA*), là một phần của kiến trúc máy tính liên quan đến lập trình, bao gồm các bản địa các loại dữ liệu, hướng dẫn, đăng ký, giải quyết chế độ, kiến trúc bộ nhớ, làm gián đoạn và xử lý ngoại lệ, và bên ngoài I / O. An ISA bao gồm một đặc điểm kỹ thuật của các thiết lập của opcode (ngôn ngữ máy), và các lệnh bản địa thực hiện bởi một bộ xử lý cụ thể.

## Tổng quan
Kiến trúc tập lệnh được phân biệt với các vi kiến trúc, mà là tập hợp các kỹ thuật thiết kế bộ vi xử lý được sử dụng để thực hiện các tập lệnh. Máy vi tính với microarchitectures khác nhau có thể chia sẻ một tập lệnh phổ biến. Ví dụ, Intel Pentium và AMD Athlon thực hiện các phiên bản gần như giống hệt nhau của x86 tập lệnh, nhưng có thiết kế nội bộ hoàn toàn khác nhau.

Một số máy ảo có hỗ trợ bytecode như ISA của họ như Smalltalk, các máy ảo Java, và của Microsoft Common Language Runtime, thực hiện điều này bằng cách dịch các bytecode cho thường sử dụng mã đường dẫn vào mã máy.

## Phân loại các kiến trúc tập lệnh
Một máy tính tập lệnh phức tạp (CISC) có nhiều hướng dẫn chuyên môn, một số trong đó chỉ có thể hiếm khi được sử dụng trong các chương trình thực tế. Một máy tính giảm tập lệnh (RISC) đơn giản hoá bộ vi xử lý bằng cách thực hiện hiệu quả các chỉ dẫn được sử dụng thường xuyên trong các chương trình, trong khi hoạt động ít phổ biến được thực hiện như thủ tục con, có kết quả của họ thêm thời gian thực hiện xử lý bù đắp bằng cách sử dụng không thường xuyên.

Về mặt lý thuyết loại quan trọng là những máy tính kiến trúc tập lệnh  tối thiểu và các máy tính tập lệnh một lệnh, nhưng những điều này không được thực hiện trong chế biến thương mại. Biến thể khác là từ lệnh rất dài (VLIW), nơi các bộ xử lý nhận được nhiều hướng dẫn mã hóa và lấy ra trong một lời hướng dẫn.

## Ngôn ngữ máy
Ngôn ngữ máy được xây dựng lên từ rời rạc *các câu lệnh* hoặc *chỉ* dẫn. Về kiến trúc xử lý, một lệnh có thể chỉ định:
* Cụ thể đăng ký cho số học, giải quyết, hoặc chức năng điều khiển
* Bộ nhớ vị trí cụ thể hoặc offset
* Đặc biệt chế độ địa chỉ được sử dụng để giải thích các toán hạng
Hoạt động phức tạp được xây dựng bằng cách kết hợp những hướng dẫn đơn giản, được thực hiện tuần tự, hoặc theo chỉ dẫn của dòng điều khiển hướng dẫn.

## Quá trình kiến trúc tập lệnh
Bất kỳ tập lệnh được đưa ra có thể được thực hiện trong nhiều cách khác nhau. Tất cả các cách để thực hiện một bộ hướng dẫn cụ thể cung cấp cùng một mô hình lập trình, và tất cả hiện thực đó tập lệnh có thể chạy các file thực thi nhị phân. Các cách khác nhau để thực hiện một lệnh đặt cho cân bằng khác nhau giữa chi phí, hiệu suất, điện năng tiêu thụ, kích thước, vv

Khi thiết kế các vi cấu trúc của một bộ xử lý, các kỹ sư sử dụng các khối "cứng có dây" mạch điện tử (thường được thiết kế riêng) như hổ, ghép kênh, đếm, thanh ghi, ALU vv Một số loại ngôn ngữ chuyển đăng ký sau đó thường được sử dụng để mô tả giải mã và trình tự của mỗi chỉ dẫn của một ISA sử dụng vi kiến trúc vật lý này. Có hai cách cơ bản để xây dựng một bộ điều khiển để thực hiện các mô tả này (mặc dù rất nhiều mẫu thiết kế sử dụng những cách giữa hoặc thỏa hiệp):
* Một số mẫu thiết kế máy tính "buộc cố định" hoàn thành việc giải mã tập lệnh và trình tự (giống như phần còn lại của vi kiến trúc).
* Thiết kế khác sử dụng vi thói quen hoặc bảng (hoặc cả hai) để làm điều này, điển hình như trên-chip ROM hoặc PLAs hoặc cả hai (mặc dù RAMS và riêng biệt ROM đã được sử dụng trong lịch sử).
Một số mẫu thiết kế sử dụng một sự kết hợp của thiết kế mạch điện điện và vi cho các đơn vị điều khiển.

Một số thiết kế CPU biên soạn các hướng dẫn thiết lập để một khả năng ghi nhớ RAM hoặc đèn flash bên trong CPU (như Rekursiv bộ xử lý và các Imsys Cjip), hoặc một FPGA(máy tính cấu hình lại). The Western Digital MCP-1600 là một ví dụ cũ, bằng cách sử dụng một chuyên dụng, ROM riêng cho vi.

An ISA cũng có thể được mô phỏng trong phần mềm của một thông dịch viên. Đương nhiên, do các nguyên cần giải thích, đây là chậm hơn so với trực tiếp chương trình đang chạy trên phần cứng mô phỏng, trừ khi các phần cứng đang chạy giả lập là một đơn đặt hàng của các cường độ nhanh hơn. Hôm nay, nó là thực tế phổ biến cho các nhà cung cấp của ISA mới hoặc microarchitectures để giả lập phần mềm có sẵn cho các nhà phát triển phần mềm trước khi thực hiện phần cứng đã sẵn sàng.

Thường thì các chi tiết của việc thực hiện có một ảnh hưởng mạnh mẽ trên các hướng dẫn cụ thể được lựa chọn cho các tập lệnh. Ví dụ, nhiều cài đặt của đường ống dẫn chỉ cho phép một bộ nhớ tải đơn hoặc bộ nhớ lưu trữ theo hướng dẫn, dẫn đến một kiến trúc load-store (RISC). Ví dụ khác, một số cách đầu thực hiện các đường ống dẫn dẫn đến một khe chậm trễ.

Những yêu cầu của tốc độ cao xử lý tín hiệu kỹ thuật số đã bị đẩy vào các hướng dẫn hướng-buộc ngược lại được thực hiện trong một cách đặc biệt. Ví dụ, để thực hiện các bộ lọc kỹ thuật số đủ nhanh, hướng dẫn MAC trong một điển hình bộ xử lý tín hiệu số (DSP) phải sử dụng một loại kiến trúc Harvard có thể nạp một lệnh và hai từ dữ liệu cùng một lúc, và nó đòi hỏi một chu trình đơn nhân-tích lũy nhân.

## Tham khảo