Bài đăng nổi bật

Redo log, undo log và binary log

Đây là ba loại log mà bạn đã từng nghe khi tiếp cận mysql. Trong các cơ sở dữ liệu quan hệ (RDBMS) khác, cũng sẽ có các thành phần có vai tr...

Thứ Sáu, 15 tháng 1, 2016

Intel Smart Cache

Như đã nói trong bài viết về x86, x64 thì bên trong CPU được thiết kế cache để giảm việc truy xuất data từ CPU vào memory. Công nghệ cache trong CPU được phát triển bởi Intel có tên là smart cache. Cache trong CPU có nhiều level, thông thường sẽ có ba level. Smart cache sẽ là lớp cache cuối cùng của CPU đóng vai trò một sharing cache.

Cache level 1

Cache level 1, thường là lớp cache có dung lượng bé nhất 32KB đến 64KB nhưng cũng là lớp cache có tốc độ nhanh nhất. Và đây là private cache có nghĩa là lớp cache này sẽ được dành riêng cho mỗi core của CPU. Sở dĩ cache level 1 có dung lượng bé bởi vì dung lượng lớn thì tốc độ của nó lại giảm. Tìm kiếm đồ vật trong một căn phòng nhỏ sẽ luôn dễ hơn tìm trong một căn phòng lớn. Tất nhiên khi lượng data cần phải cache lớn hơn thì dung lượng cache nhỏ không chứa đủ sẽ khiến hit rate giảm, kéo theo performance cũng giảm theo. Nhưng mục đích của cache level 1 là tốc độ chứ không phải hit rate. Để tăng hit rate, chúng ta có cache level 2.

Cache level 2

Cache level 2, lớp cache này có dung lượng  từ 256KB đến 1MB, lớp cache này sẽ chậm hơn so với cache level1 nhưng vẫn nhanh hơn rất nhiều so với main memory. Đây cũng là private cache. Lớp cache này có dung lượng lớn hơn cho phép cache được nhiều data hơn do đó tăng hit rate.

Cache level 3

Cache level 3, lớp cache này có dung lượng từ 10MB đến 20MB, lớp cache này chậm hơn so với cache level 2 nhưng vẫn nhanh hơn nhiều so với main memory. Khác với các cache level 1 và 2, cache level 3 là share cache, cũng là lớp cache cuối cùng. Trong Intel CPU, lớp cache cuối cùng thường được biểu thị trong bảng đặc tả dưới cái tên là smart cache.


Hình vẽ trên là ví dụ CPU có hai lớp cache, khi đó lớp cache cuối cùng L2 cache đóng vai trò smart cache - sharing cache.

Ưu điểm của sharing cache so với private cache
  • Tối ưu hóa hiệu suất sử dụng cache. Khi các core còn lại idle thì một core sẽ toàn quyền sử dụng sharing cache. Trong khi đó với private cache, khi một core idle, các core còn lại cũng không thể sử dụng data trong private cache của core đó.
  • Sharing cache cũng là một phương thức trao đổi data giữa các core của CPU
  • Cùng một data mà phải dùng bởi các core chỉ cần lưu tại một nơi thay vì phân bố trên toàn bộ các private cache của các core
  • Một core có thể xử lý data hộ cho core khác qua sharing cache
  • Thêm một lớp cache sẽ tăng hit rate, giảm tần xuất truy xuất đến memory hơn, Front side bus traffic do đó cũng giảm.
Tại sao không tăng cường dung lượng CPU cache hơn nữa ?
  • Việc tăng cường dung lượng cache sẽ đánh đổi bởi tốc độ cho dù khi đó hit rate của cache sẽ cao hơn. Trong thiết kế CPU, các kỹ sư đã phải tính toán để cân bằng tốc độ và hit rate.
  • Thêm nữa các cache này nằm trong CPU, diện tích sử dụng rất nhỏ hẹp không đủ không gian để thiết kế tăng dung lượng
Theo wikipedia, trong một số thiết kế, cache level 1 là dedicate cho mỗi core, cache level 2 thì dedicate cho từng core pair, còn cache level 3 thì share giữa tất cả các core.

Thông tin sharing cache này của CPU có thể tìm thấy qua thông số Intel smart cache.

Ví dụ:
http://ark.intel.com/products/64597/Intel-Xeon-Processor-E5-2665-20M-Cache-2_40-GHz-8_00-GTs-Intel-QPI

Intel smart cache là 20MB, chứng tỏ 8 cores của CPU này dùng chung 20MB sharing cache.

Tham khảo:

https://en.wikipedia.org/wiki/CPU_cache

https://www.quora.com/Why-is-the-L1-cache-relatively-small-compared-to-higher-levels-of-cache-like-L2-and-L3

https://software.intel.com/en-us/articles/software-techniques-for-shared-cache-multi-core-systems/?wapkw=smart+cache

https://www.pugetsystems.com/labs/articles/Specs-Explained-CPU-137/

Không có nhận xét nào:

Đăng nhận xét