Dung sai độ trễ
Tốc độ của bộ vi xử lý đã tăng hơn 10 lần mỗi thập kỷ, nhưng tốc độ của bộ nhớ hàng hóa (DRAM) chỉ tăng gấp đôi, tức là thời gian truy cập giảm một nửa. Do đó, độ trễ của truy cập bộ nhớ tính theo chu kỳ xung nhịp của bộ xử lý tăng lên 6 trong 10 năm. Các bộ xử lý đa xử lý đã làm tăng thêm vấn đề.
Trong các hệ thống dựa trên bus, việc thiết lập bus băng thông cao giữa bộ xử lý và bộ nhớ có xu hướng làm tăng độ trễ lấy dữ liệu từ bộ nhớ. Khi bộ nhớ được phân phối vật lý, độ trễ của mạng và giao diện mạng được thêm vào độ trễ của việc truy cập bộ nhớ cục bộ trên nút.
Độ trễ thường tăng theo kích thước của máy, vì nhiều nút hơn ngụ ý nhiều giao tiếp hơn liên quan đến tính toán, nhiều bước nhảy hơn trong mạng để giao tiếp chung và có nhiều khả năng tranh chấp hơn. Mục tiêu chính của thiết kế phần cứng là giảm độ trễ của truy cập dữ liệu trong khi duy trì băng thông cao, có thể mở rộng.
Tổng quan về Dung sai độ trễ
Cách xử lý dung sai độ trễ được hiểu rõ nhất bằng cách xem xét các tài nguyên trong máy và cách chúng được sử dụng. Theo quan điểm của bộ xử lý, kiến trúc truyền thông từ nút này sang nút khác có thể được xem như một đường ống. Các giai đoạn của đường ống bao gồm các giao diện mạng tại nguồn và đích, cũng như các liên kết và chuyển mạch mạng trên đường đi. Ngoài ra còn có các giai đoạn trong hỗ trợ giao tiếp, hệ thống bộ nhớ / bộ đệm cục bộ và bộ xử lý chính, tùy thuộc vào cách kiến trúc quản lý giao tiếp.
Vấn đề sử dụng trong cấu trúc giao tiếp cơ sở là bộ xử lý hoặc kiến trúc truyền thông đang bận tại một thời điểm nhất định và trong đường ống truyền thông chỉ có một giai đoạn bận tại một thời điểm khi một từ được truyền đi từ nguồn đến đích. Mục đích của khả năng chịu độ trễ là chồng chéo việc sử dụng các tài nguyên này càng nhiều càng tốt.
Dung sai độ trễ khi truyền thông báo rõ ràng
Quá trình truyền dữ liệu thực tế trong quá trình chuyển thư thường do người gửi khởi tạo, sử dụng thao tác gửi. Bản thân hoạt động nhận không thúc đẩy dữ liệu được giao tiếp mà là sao chép dữ liệu từ bộ đệm đến vào không gian địa chỉ ứng dụng. Giao tiếp do người nhận khởi tạo được thực hiện bằng cách đưa ra thông báo yêu cầu tới quá trình là nguồn dữ liệu. Sau đó, quá trình sẽ gửi dữ liệu trở lại thông qua một lần gửi khác.
Hoạt động gửi đồng bộ có độ trễ giao tiếp bằng với thời gian cần thiết để truyền tải tất cả dữ liệu trong thông báo đến đích, thời gian xử lý nhận và thời gian trả lại báo nhận. Độ trễ của hoạt động nhận đồng bộ là chi phí xử lý của nó; trong đó bao gồm sao chép dữ liệu vào ứng dụng và độ trễ bổ sung nếu dữ liệu chưa đến. Chúng tôi muốn ẩn những độ trễ này, bao gồm cả chi phí nếu có thể, ở cả hai đầu.
Dung sai độ trễ trong không gian địa chỉ dùng chung
Giao tiếp cơ bản thông qua việc đọc và ghi trong một không gian địa chỉ dùng chung. Để thuận tiện, nó được gọi là giao tiếp đọc-ghi. Giao tiếp do máy thu khởi tạo được thực hiện với các hoạt động đọc dẫn đến dữ liệu từ bộ nhớ hoặc bộ đệm của bộ xử lý khác được truy cập. Nếu không có bộ nhớ đệm của dữ liệu được chia sẻ, giao tiếp do người gửi khởi tạo có thể được thực hiện thông qua việc ghi vào dữ liệu được cấp phát trong bộ nhớ từ xa.
Với tính liên kết của bộ đệm, ảnh hưởng của việc ghi phức tạp hơn: việc ghi dẫn đến giao tiếp do người gửi hoặc người nhận khởi xướng phụ thuộc vào giao thức liên kết bộ đệm. Dù do người nhận khởi tạo hoặc do người gửi khởi tạo, giao tiếp trong không gian địa chỉ chia sẻ được hỗ trợ đọc ghi được hỗ trợ phần cứng một cách tự nhiên, điều này làm cho độ trễ dung sai trở nên rất quan trọng.
Chặn truyền dữ liệu trong không gian địa chỉ dùng chung
Trong không gian địa chỉ dùng chung, bằng phần cứng hoặc phần mềm, việc kết hợp dữ liệu và bắt đầu chuyển khối có thể được thực hiện một cách rõ ràng trong chương trình người dùng hoặc hệ thống một cách minh bạch. Chuyển khối rõ ràng được bắt đầu bằng cách thực hiện một lệnh tương tự như gửi trong chương trình người dùng. Lệnh gửi được giải thích bởi bộ phận hỗ trợ truyền thông, nó truyền dữ liệu theo cách thức tổng hợp từ nút nguồn đến đích. Tại điểm đến, bộ phận hỗ trợ giao tiếp kéo các từ dữ liệu vào từ giao diện mạng và lưu trữ chúng ở các vị trí được chỉ định.
Có hai điểm khác biệt cơ bản so với việc truyền thông điệp gửi-nhận, cả hai đều phát sinh từ thực tế là quá trình gửi có thể chỉ định trực tiếp cấu trúc dữ liệu chương trình nơi dữ liệu sẽ được đặt tại đích, vì các vị trí này nằm trong không gian địa chỉ chia sẻ .
Tiếp tục các sự kiện có độ trễ dài trong quá khứ trong không gian địa chỉ dùng chung
Nếu hoạt động bộ nhớ được thực hiện không bị chặn, bộ xử lý có thể tiếp tục hoạt động bộ nhớ qua các lệnh khác. Đối với việc ghi, điều này thường khá đơn giản để thực hiện nếu quá trình ghi được đặt trong bộ đệm ghi, và bộ xử lý tiếp tục trong khi bộ đệm đảm nhiệm việc cấp lệnh ghi vào hệ thống bộ nhớ và theo dõi quá trình hoàn thành theo yêu cầu. Sự khác biệt là không giống như một lần ghi, một lần đọc thường được theo sau rất sớm bởi một lệnh cần giá trị được trả về bởi lần đọc.
Giao tiếp trước trong Không gian địa chỉ dùng chung
Giao tiếp trước là một kỹ thuật đã được áp dụng rộng rãi trong các bộ vi xử lý thương mại và tầm quan trọng của nó có thể sẽ tăng lên trong tương lai. Một lệnh tìm nạp trước không thay thế việc đọc thực tế của mục dữ liệu và bản thân lệnh tìm nạp trước phải không bị chặn, nếu nó đạt được mục tiêu là ẩn độ trễ thông qua chồng chéo.
Trong trường hợp này, vì dữ liệu được chia sẻ không được lưu vào bộ nhớ đệm, nên dữ liệu đã tìm nạp trước được đưa vào một cấu trúc phần cứng đặc biệt được gọi là bộ đệm tìm nạp trước. Khi từ thực sự được đọc vào một thanh ghi trong lần lặp tiếp theo, nó được đọc từ phần đầu của bộ đệm tìm nạp trước chứ không phải từ bộ nhớ. Nếu độ trễ cần ẩn lớn hơn nhiều so với thời gian tính toán lặp lại vòng lặp đơn, chúng tôi sẽ tìm nạp trước một số lần lặp trước và có khả năng sẽ có một số từ trong bộ đệm tìm nạp trước tại một thời điểm.
Đa luồng trong không gian địa chỉ dùng chung
Về mặt ẩn các loại độ trễ khác nhau, đa luồng hỗ trợ phần cứng có lẽ là kỹ thuật linh hoạt. Nó có những ưu điểm khái niệm sau so với các cách tiếp cận khác:
Nó không yêu cầu phân tích hoặc hỗ trợ phần mềm đặc biệt.
Vì nó được gọi động, nó có thể xử lý các tình huống không thể đoán trước, chẳng hạn như xung đột bộ nhớ cache, v.v. cũng như những tình huống có thể dự đoán được.
Giống như tìm nạp trước, nó không thay đổi mô hình nhất quán bộ nhớ vì nó không sắp xếp lại các truy cập trong một luồng.
Trong khi các kỹ thuật trước đây được nhắm mục tiêu vào việc ẩn độ trễ truy cập bộ nhớ, đa luồng có thể có khả năng ẩn độ trễ của bất kỳ sự kiện có độ trễ dài nào một cách dễ dàng, miễn là sự kiện có thể được phát hiện trong thời gian chạy. Điều này bao gồm đồng bộ hóa và độ trễ hướng dẫn.
Xu hướng này có thể thay đổi trong tương lai, vì độ trễ ngày càng trở nên dài hơn so với tốc độ của bộ xử lý. Ngoài ra, với các bộ vi xử lý phức tạp hơn đã cung cấp các phương thức có thể mở rộng cho đa luồng và với các kỹ thuật đa luồng mới đang được phát triển để kết hợp đa luồng với song song mức chỉ lệnh, xu hướng này chắc chắn sẽ có một số thay đổi trong tương lai.