6. Cấu trúc của luận án
1.2.2. Kiến trúc chip đa xử lý, đa luồng đồng thời
Luồng là một trình tự một số lệnh thực hiện bởi tài nguyên của lõi xử lý. Kỹ
thuật đa luồng đồng thời (SMT) là tên do Intel đặt cho công nghệ siêu luồng [30]. Kỹ thuật này cho phép một CMP có thể thực sự xử lý song song các luồng do các ứng dụng (phần mềm) tạo ra, bằng cách trang bị thêm một số thành phần của CMP, khiến hệ điều hành nghĩ rằng nó đang làm việc với nhiều CMP. Hệ điều hành sẽ sắp xếp để nhiều luồng được gửi đến các bộ xử lý “ảo” đó [57].
Trong kỹ thuật SMT, mỗi CPU logic sở hữu một tập các thanh ghi riêng kể cả thanh ghi bộ đếm chương trình PC. CPU vật lý sẽ luân phiên các giai đoạn tìm/giải mã giữa các CPU logic và cố gắng thực thi những thao tác từ các chuỗi lệnh đồng thời theo cách hướng tới những đơn vị thực thi ít được sử dụng [1, 2, 4, 16].
Đặc điểm kiến trúc đa luồng đồng thời (SMT) đưa vào CMP có thể làm tăng
tốc độ xử lý của CMP. Chẳng hạn, mỗi lõi xử lý 2-luồng thì tốc độ xử lý của CMP tăng lên gấp đôi. Nếu các luồng độc lập với nhau và sử dụng tài nguyên khác nhau của lõi xử lý thì một lõi có thể thực hiện đồng thời nhiều luồng. Ví dụ, lõi xử lý 2- luồng thì một luồng đang chờ đợi thực hiện các lệnh dấu phẩy động (sử dụng đường ống dấu phẩy động của FPU). Khi đó, một luồng khác thực hiện các lệnh số nguyên có thể sử dụng đường ống lệnh nguyên (IU) của lõi xử lý. Như vậy, nếu một CMP- SMT có 4-lõi và mỗi lõi xử lý 2-luồng thì có thể coi CMP có tới 8-lõi xử lý ảo [16, 37]. Đối với người dùng, hiệu suất lớn nhất của đặc tính kiến trúc CMP-SMT đạt được khi lựa chọn một máy tính sử dụng CMP-SMT đó là tính đa nhiệm của bộ xử
lý phải được cải thiện. Ví dụ, khi xem DVD trong lúc máy vẫn đang được quét virus
mà tốc độ không bị ảnh hưởng, bởi vì từng ứng dụng sẽ được gán trên các lõi khác nhau. Hay trên màn hình máy tính có thể đồng thời chạy các ứng dụng khác nhau
được thể hiện các cửa sổ ứng dụng tương ứng trên màn hình máy tính, hay trên điện
thoại di động thông minh cũng thực hiện tương tự. Nếu CMP không có SMT, thì chỉ
một luồng có thể chạy trên một lõi ở một thời điểmthì hiệu suất sử dụng không cao. Việc phát triển một ứng dụng đa luồng đã đáp ứng được yêu cầu thực hiện rất nhiều
công việc phức tạp.