Bộ lập lịch, sắp xếp lại bộ đệm, thiết bị thực thi. Tác động của việc đảo ngược mức độ ưu tiên

Chúng tôi dịch... Dịch Tiếng Trung (Giản thể) Tiếng Trung (Phồn thể) Tiếng Anh Tiếng Pháp Tiếng Ý Tiếng Bồ Đào Nha Tiếng Nga Tiếng Tây Ban Nha Tiếng Thổ Nhĩ Kỳ

Rất tiếc, chúng tôi không thể dịch thông tin này ngay bây giờ - vui lòng thử lại sau.

Giới thiệu

Phần mềm được thiết kế để liên lạc và truyền dữ liệu đòi hỏi hiệu năng rất cao khi nó truyền lượng lớn gói dữ liệu nhỏ. Một trong những thách thức của việc phát triển các ứng dụng ảo hóa chức năng mạng (NFV) là bạn cần sử dụng ảo hóa ở mức độ lớn nhất có thể, đồng thời tối ưu hóa ứng dụng cho phần cứng bạn đang sử dụng khi thích hợp.

Trong bài viết này, tôi sẽ nêu bật ba tính năng của bộ xử lý Intel® hữu ích để tối ưu hóa hiệu suất của các ứng dụng NFV: Công nghệ phân bổ bộ đệm (CAT), Intel® Advanced Vector Extensions 2 (Intel® AVX2) để xử lý vectơ và Intel® Tiện ích mở rộng đồng bộ hóa giao dịch (Intel® TSX).

Giải quyết vấn đề đảo ngược ưu tiên bằng CAT

Khi một chức năng có mức độ ưu tiên thấp lấy cắp tài nguyên từ một chức năng có mức độ ưu tiên cao, chúng tôi gọi đây là “đảo ngược mức độ ưu tiên”.

Không phải tất cả hàm ảo quan trọng như nhau. Ví dụ: chức năng định tuyến rất quan trọng đối với thời gian và hiệu suất xử lý, trong khi chức năng mã hóa phương tiện không quan trọng bằng. Tính năng này rất có thể được phép loại bỏ các gói theo định kỳ mà không ảnh hưởng đến trải nghiệm người dùng, vì dù sao đi nữa, sẽ không ai nhận thấy tốc độ khung hình video giảm từ 20 xuống 19 khung hình mỗi giây.

Bộ đệm mặc định được thiết kế theo cách mà người tiêu dùng tích cực nhất sẽ nhận được nó phần lớn nhất. Nhưng người tiêu dùng tích cực nhất không phải lúc nào cũng là ứng dụng quan trọng nhất. Trên thực tế, điều ngược lại thường đúng. Các ứng dụng có mức độ ưu tiên cao được tối ưu hóa, khối lượng dữ liệu của chúng giảm xuống mức nhỏ nhất có thể. Các ứng dụng có mức độ ưu tiên thấp không có nhiều nỗ lực để tối ưu hóa chúng, vì vậy chúng có xu hướng tiêu tốn thêm bộ nhớ. Một số chức năng này tiêu tốn rất nhiều bộ nhớ. Ví dụ: chức năng xem gói cho Phân tích thống kê có mức độ ưu tiên thấp nhưng tiêu tốn nhiều bộ nhớ và sử dụng nhiều bộ đệm.

Các nhà phát triển thường cho rằng nếu họ đặt một ứng dụng có mức độ ưu tiên cao vào một kernel cụ thể thì ứng dụng đó sẽ an toàn ở đó và không bị ảnh hưởng bởi các ứng dụng có mức độ ưu tiên thấp. Thật không may, nó không phải vậy. Mỗi lõi có bộ đệm cấp một riêng (L1, bộ đệm nhanh nhất, nhưng nhanh nhất kích thước nhỏ) và bộ đệm cấp hai (L2, kích thước lớn hơn một chút nhưng chậm hơn). Có các vùng bộ đệm L1 riêng biệt cho dữ liệu (L1D) và mã chương trình (L1I, "I" là viết tắt của hướng dẫn). Bộ đệm cấp ba (chậm nhất) là chung cho tất cả các lõi bộ xử lý. Trên các kiến ​​trúc bộ xử lý Intel® lên đến và bao gồm cả dòng Broadwell, bộ đệm L3 được bao gồm đầy đủ, nghĩa là nó chứa mọi thứ có trong bộ đệm L1 và L2. Do cách thức hoạt động của bộ đệm ẩn, nếu có nội dung nào đó bị xóa khỏi bộ đệm cấp ba thì nội dung đó cũng sẽ bị xóa khỏi bộ đệm cấp một và bộ đệm cấp hai tương ứng. Điều này có nghĩa là ứng dụng có mức độ ưu tiên thấp cần dung lượng trong bộ đệm L3 có thể thay thế dữ liệu từ bộ đệm L1 và L2 của ứng dụng có mức độ ưu tiên cao, ngay cả khi ứng dụng đó đang chạy trên lõi khác.

Trước đây, có một cách tiếp cận để giải quyết vấn đề này được gọi là “khởi động”. Khi cuộc cạnh tranh truy cập vào bộ đệm L3, “người chiến thắng” là ứng dụng truy cập bộ nhớ thường xuyên nhất. Do đó, giải pháp là có chức năng ưu tiên cao liên tục truy cập vào bộ đệm, ngay cả khi không hoạt động. Đây không phải là một giải pháp quá hay, nhưng nó thường được chấp nhận khá tốt và cho đến gần đây vẫn chưa có giải pháp thay thế nào. Nhưng giờ đây có một giải pháp thay thế: dòng bộ xử lý Intel® Xeon® E5 v3 giới thiệu Công nghệ phân bổ bộ đệm (CAT), mang đến cho bạn khả năng phân bổ bộ đệm dựa trên các ứng dụng và loại dịch vụ.

Tác động của việc đảo ngược mức độ ưu tiên

Để chứng minh tác động của việc đảo ngược mức độ ưu tiên, tôi đã viết một microbench đơn giản chạy định kỳ việc duyệt danh sách liên kết trên một luồng có mức độ ưu tiên cao, trong khi luồng có mức độ ưu tiên thấp liên tục chạy chức năng sao chép bộ nhớ. Các luồng này được gán cho các lõi khác nhau của cùng một bộ xử lý. Điều này mô phỏng trường hợp xấu nhất về tranh chấp tài nguyên: thao tác sao chép yêu cầu nhiều bộ nhớ, do đó có khả năng làm gián đoạn luồng quan trọng hơn đang truy cập vào danh sách.

Đây là mã trong C.

// Xây dựng danh sách liên kết có kích thước N với mẫu giả ngẫu nhiên void init_pool(list_item *head, int N, int A, int B) ( int C = B; list_item *current = head; for (int i = 0; i< N - 1; i++) { current->đánh dấu = 0; C = (A*C + B) %N; current->next = (list_item*)&(head[C]); hiện tại = hiện tại-> tiếp theo; ) ) // Chạm vào N phần tử đầu tiên trong danh sách liên kết void Warmup_list(list_item* current, int N) ( bool write = (N > POOL_SIZE_L2_LINES) ? true: false; for(int i = 0; i< N - 1; i++) { current = current->Kế tiếp; if (viết) hiện tại->đánh dấu ++; ) ) void Measure(list_item* head, int N) ( unsigned __long long i1, i2, avg = 0; for (int j = 0; j< 50; j++) { list_item* current = head; #if WARMUP_ON while(in_copy) warmup_list(head, N); #else while(in_copy) spin_sleep(1); #endif i1 = __rdtsc(); for(int i = 0; i < N; i++) { current->đánh dấu++; hiện tại = hiện tại-> tiếp theo; ) i2 = __rdtsc(); trung bình += (i2-i1)/50; in_copy = đúng; ) kết quả=trung bình/N )

Nó chứa ba chức năng.

  • Hàm init_pool() khởi tạo một danh sách liên kết trong vùng bộ nhớ trống được phân bổ lớn bằng cách sử dụng máy phát điện đơn giản giả Số ngẫu nhiên. Điều này ngăn không cho các mục trong danh sách ở gần nhau trong bộ nhớ, điều này sẽ tạo ra vị trí không gian, điều này sẽ ảnh hưởng đến các phép đo của chúng tôi vì một số mục sẽ tự động được tìm nạp trước. Mỗi phần tử danh sách chính xác là một dòng bộ đệm.
  • Hàm Warmup() liên tục lặp lại danh sách đã xây dựng. Có dữ liệu cụ thể cần được truy cập nên có trong bộ đệm, vì vậy chức năng này ngăn các luồng khác xóa danh sách đã soạn khỏi bộ đệm L3.
  • Hàm Measure() đo mức độ truyền tải của một phần tử danh sách, sau đó ngủ trong 1 mili giây hoặc gọi hàm Warmup() tùy thuộc vào thử nghiệm mà chúng tôi đang chạy. Hàm đo () sau đó tính trung bình các kết quả.

Kết quả điểm chuẩn vi mô trên bộ xử lý Intel® Core™ i7 thế hệ thứ 5 được hiển thị trong biểu đồ bên dưới, trong đó trục X là tổng số dòng bộ đệm trong danh sách được liên kết và trục Y là số chu kỳ CPU trung bình trên mỗi truy cập danh sách liên kết. Khi kích thước của danh sách liên kết tăng lên, nó sẽ di chuyển từ bộ nhớ đệm dữ liệu cấp một sang bộ nhớ đệm cấp hai và sau đó là bộ nhớ đệm cấp ba, rồi vào bộ nhớ chính.

Chỉ báo cơ bản là đường màu nâu đỏ, nó tương ứng với một chương trình không có luồng sao chép trong bộ nhớ, nghĩa là không có tranh chấp. Đường màu xanh lam thể hiện hậu quả của việc đảo ngược mức ưu tiên: do chức năng sao chép bộ nhớ nên việc truy cập danh sách mất nhiều thời gian hơn đáng kể. Tác động đặc biệt lớn nếu danh sách phù hợp với bộ đệm L1 hoặc L2 tốc độ cao. Nếu danh sách quá lớn đến mức không vừa với bộ đệm cấp ba thì tác động là không đáng kể.

Đường màu xanh lá cây hiển thị hiệu ứng khởi động khi chức năng sao chép bộ nhớ đang chạy: thời gian truy cập giảm mạnh và tiến gần đến giá trị cơ bản.

Nếu bạn bật CAT và phân bổ các phần của bộ đệm cấp ba trong sử dụng độc quyền mỗi lõi, kết quả sẽ rất gần với đường cơ sở (quá gần để hiển thị trên sơ đồ), đó là mục tiêu của chúng tôi.

Bao gồmCON MÈO

Trước hết, hãy đảm bảo rằng nền tảng này hỗ trợ CAT. Bạn có thể sử dụng lệnh CPUID bằng cách kiểm tra lá địa chỉ 7, lá con 0 được thêm vào để cho biết tính khả dụng của CAT.

Nếu công nghệ CAT được bật và hỗ trợ, sẽ có các thanh ghi MSR có thể được lập trình để phân bổ các bộ phận khác nhau bộ đệm cấp ba cho các lõi khác nhau.

Mỗi socket bộ xử lý có các thanh ghi MSR IA32_L3_MASKn (ví dụ: 0xc90, 0xc91, 0xc92, 0xc93). Các thanh ghi này lưu trữ một mặt nạ bit cho biết mức độ phân bổ bộ đệm L3 cho mỗi loại dịch vụ (COS). 0xc90 lưu trữ phân bổ bộ đệm cho COS0, 0xc91 cho COS1, v.v.

Ví dụ: sơ đồ này hiển thị một số mặt nạ bit có thể có cho các lớp khác nhau dịch vụ để minh họa cách phân chia bộ đệm: COS0 nhận một nửa, COS1 nhận một phần tư và COS2 và COS3 mỗi bên nhận được một phần tám. Ví dụ: 0xc90 sẽ chứa 11110000 và 0xc93 sẽ chứa 00000001.

Thuật toán Nhập/Xuất Dữ liệu Trực tiếp (DDIO) có mặt nạ bit ẩn riêng cho phép luồng dữ liệu từ các thiết bị PCIe tốc độ cao như bộ điều hợp mạng được truyền đến các khu vực cụ thể của bộ nhớ đệm L3. Tuy nhiên, có khả năng xảy ra xung đột với các lớp dịch vụ đã xác định, vì vậy bạn cần tính đến điều này khi tạo các ứng dụng NFV chất lượng cao. băng thông. Để kiểm tra xung đột, hãy sử dụng để phát hiện lỗi bộ đệm. Một số BIOS có cài đặt cho phép bạn xem và thay đổi mặt nạ DDIO.

Mỗi lõi có một thanh ghi MSR IA32_PQR_ASSOC (0xc8f) cho biết loại dịch vụ nào áp dụng cho lõi đó. Lớp dịch vụ mặc định là 0, có nghĩa là bitmask trong MSR 0xc90 được sử dụng. (Theo mặc định, bitmask 0xc90 được đặt thành 1 để đảm bảo tính khả dụng của bộ nhớ đệm tối đa.)

nhất mô hình đơn giản Sử dụng CAT trong NFV là phân bổ các khối bộ đệm L3 cho các lõi khác nhau bằng cách sử dụng mặt nạ bit biệt lập, sau đó gán các luồng hoặc máy ảo cho các lõi. Nếu các máy ảo cần chia sẻ lõi để thực thi, bạn cũng có thể thực hiện một sửa chữa đơn giản đối với bộ lập lịch của hệ điều hành, thêm mặt nạ bộ đệm vào các luồng mà máy ảo đang chạy và tự động kích hoạt nó trong mọi sự kiện lập lịch.

Có một cái khác cách khác thường sử dụng CAT để khóa dữ liệu trong bộ đệm. Đầu tiên, tạo mặt nạ bộ đệm đang hoạt động và truy cập dữ liệu trong bộ nhớ để tải vào bộ đệm L3. Sau đó vô hiệu hóa các bit đại diện cho phần này của bộ đệm L3 trong bất kỳ mặt nạ bit CAT nào được sử dụng trong tương lai. Dữ liệu sẽ bị khóa trong bộ đệm cấp ba, vì hiện tại không thể xóa nó khỏi đó (ngoài DDIO). Trong ứng dụng NFV, cơ chế này cho phép khóa các bảng tra cứu cỡ trung bình để định tuyến và phân tích gói trong bộ đệm L3 để đảm bảo quyền truy cập liên tục.

Sử dụng Intel AVX2 để xử lý vectơ

Lệnh SIMD (một lệnh - nhiều dữ liệu) cho phép bạn thực hiện đồng thời thao tác tương tự với trong các mảnh khác nhau dữ liệu. Các lệnh này thường được sử dụng để tăng tốc độ tính toán dấu phẩy động, nhưng các phiên bản số nguyên, boolean và dữ liệu của lệnh cũng có sẵn.

Tùy thuộc vào bộ xử lý bạn đang sử dụng, bạn sẽ có sẵn các nhóm hướng dẫn SIMD khác nhau. Kích thước của vectơ được xử lý bởi các lệnh cũng sẽ khác nhau:

  • SSE hỗ trợ vectơ 128 bit.
  • Intel AVX2 hỗ trợ các lệnh số nguyên cho vectơ 256-bit và triển khai các lệnh cho các hoạt động thu thập.
  • Trong phần mở rộng AVX3 trong tương lai Kiến trúc Intel® vectơ 512-bit sẽ được hỗ trợ.

Một vectơ 128 bit có thể được sử dụng cho hai biến 64 bit, bốn biến 32 bit hoặc tám biến 16 bit (tùy thuộc vào hướng dẫn SIMD được sử dụng). Các vectơ lớn hơn sẽ chứa được nhiều phần tử dữ liệu hơn. Do nhu cầu thông lượng cao của các ứng dụng NFV, bạn phải luôn sử dụng các lệnh SIMD mạnh nhất (và phần cứng liên quan), hiện tại là Intel AVX2.

Các lệnh SIMD thường được sử dụng để thực hiện cùng một thao tác trên một vectơ giá trị, như trong hình. Ở đây, thao tác tạo X1opY1 đến X4opY4 là một lệnh đơn, xử lý đồng thời các mục dữ liệu X1 đến X4 và Y1 đến Y4. Trong ví dụ này, tốc độ tăng tốc sẽ nhanh hơn bốn lần so với thực thi (vô hướng) thông thường vì bốn thao tác được xử lý đồng thời. Tốc độ tăng tốc có thể lớn bằng vectơ SIMD lớn. Các ứng dụng NFV thường xử lý nhiều luồng gói theo cùng một cách, do đó các lệnh SIMD cung cấp một cách tự nhiên để tối ưu hóa hiệu suất.

Đối với các vòng lặp đơn giản, trình biên dịch thường sẽ tự động vector hóa các hoạt động bằng cách sử dụng các hướng dẫn SIMD mới nhất có sẵn cho một CPU nhất định (nếu bạn sử dụng đúng cờ trình biên dịch). Bạn có thể tối ưu hóa mã của mình để sử dụng tập lệnh hiện đại nhất được phần cứng hỗ trợ trong thời gian chạy hoặc bạn có thể biên dịch mã cho một kiến ​​trúc đích cụ thể.

Hoạt động của SIMD cũng hỗ trợ tải bộ nhớ, sao chép tối đa 32 byte (256 bit) từ bộ nhớ sang thanh ghi. Điều này cho phép dữ liệu được truyền giữa bộ nhớ và các thanh ghi, bỏ qua bộ đệm và thu thập dữ liệu từ các vị trí khác nhau trong bộ nhớ. Bạn cũng có thể làm hoạt động khác nhau với vectơ (thay đổi dữ liệu trong một thanh ghi) và vectơ lưu (ghi tối đa 32 byte từ thanh ghi vào bộ nhớ).

Memcpy và memmov - rộng rãi ví dụ nổi tiếng các quy trình cốt lõi đã được triển khai bằng lệnh SIMD ngay từ đầu vì lệnh REP MOV quá chậm. Mã memcpy được cập nhật thường xuyên trong thư viện hệ thống để sử dụng nhiều nhất hướng dẫn mới nhất SIMD. Bảng quản lý CPUID được sử dụng để lấy thông tin về phiên bản mới nhất nào có sẵn để sử dụng. Đồng thời, việc triển khai các hướng dẫn SIMD thế hệ mới trong thư viện thường bị chậm trễ.

Ví dụ: quy trình memcpy sau đây, sử dụng một vòng lặp đơn giản, dựa trên các hàm dựng sẵn (thay vì mã thư viện) để trình biên dịch có thể tối ưu hóa nó cho phiên bản mới nhất của lệnh SIMD.

Mm256_store_si256((__m256i*) (dest++), (__m256i*) (src++))

Nó biên dịch theo mã hợp ngữ sau và có hiệu suất gấp đôi so với các thư viện gần đây.

C5 fd 6f 04 04 vmovdqa (%rsp,%rax,1),%ymm0 c5 fd 7f 84 04 00 00 vmovdqa %ymm0.0x10000(%rsp,%rax,1)

Mã hội từ một hàm nội tuyến sẽ sao chép 32 byte (256 bit) bằng cách sử dụng các lệnh SIMD mới nhất hiện có, trong khi mã thư viện sử dụng SSE sẽ chỉ sao chép 16 byte (128 bit).

Các ứng dụng NFV thường cần thực hiện thao tác thu thập bằng cách tải dữ liệu từ nhiều vị trí vào Những nơi khác nhau ký ức không liên tiếp Ví dụ, bộ điều hợp mạng có thể lưu trữ các gói đến bằng DDIO. Ứng dụng NFV có thể chỉ cần truy cập vào phần IP đích của tiêu đề mạng. Với thao tác thu thập, ứng dụng có thể thu thập dữ liệu cho 8 gói cùng lúc.

Không cần sử dụng các hàm nội tuyến hoặc mã hợp ngữ cho hoạt động thu thập vì trình biên dịch có thể vector hóa mã, như đối với chương trình hiển thị bên dưới, dựa trên phép thử tổng hợp các số từ các vị trí giả ngẫu nhiên trong bộ nhớ.

Int một; int b; với (i = 0; tôi< 1024; i++) a[i] = i; for (i = 0; i < 64; i++) b[i] = (i*1051) % 1024; for (i = 0; i < 64; i++) sum += a]; // This line is vectorized using gather.

Dòng cuối cùngđược biên dịch thành mã lắp ráp sau đây.

C5 fe 6f 40 80 vmovdqu -0x80(%rax),%ymm0 c5 ed fe f3 vpaddd %ymm3,%ymm2,%ymm6 c5 e5 ef db vpxor %ymm3,%ymm3,%ymm3 c5 d5 76 ed vpcmpeqd %ymm5,% ymm5,%ymm5 c4 e2 55 90 3c a0 vpgatherdd %ymm5,(%rax,%ymm4,4),%ymm7

Một thao tác thu thập đơn lẻ nhanh hơn đáng kể so với một chuỗi tải xuống nhưng điều này chỉ có ý nghĩa nếu dữ liệu đã có trong bộ đệm. Nếu không, dữ liệu sẽ phải được tìm nạp từ bộ nhớ, việc này đòi hỏi hàng trăm hoặc hàng nghìn chu kỳ CPU. Nếu dữ liệu nằm trong bộ đệm, có thể tăng tốc gấp 10 lần
(tức là 1000%). Nếu dữ liệu không có trong bộ đệm, tốc độ tăng tốc chỉ là 5%.

Khi sử dụng các kỹ thuật như thế này, điều quan trọng là phải phân tích ứng dụng để xác định các điểm nghẽn và hiểu liệu ứng dụng có đang dành quá nhiều thời gian để sao chép hoặc thu thập dữ liệu hay không. Bạn có thể dùng .

Một tính năng hữu ích khác cho NFV trong Intel AVX2 và các hoạt động SIMD khác là các hoạt động bit và logic. Chúng được sử dụng để tăng tốc độ mã hóa không chuẩn và việc kiểm tra bit rất thuận tiện cho các nhà phát triển ASN.1 và thường được sử dụng cho dữ liệu trong viễn thông. Intel AVX2 có thể được sử dụng để so sánh chuỗi nhanh hơn bằng các thuật toán nâng cao như MPSSEF.

Tiện ích mở rộng Intel AVX2 hoạt động tốt trên máy ảo. Hiệu suất là như nhau và không có lỗi thoát máy ảo nào.

Sử dụng Intel TSX để có khả năng mở rộng cao hơn

Một trong những vấn đề chương trình song song là để tránh xung đột dữ liệu, điều này có thể xảy ra khi nhiều luồng cố gắng sử dụng cùng một mục dữ liệu và ít nhất một luồng cố gắng thay đổi dữ liệu. Để tránh các kết quả tần suất không thể đoán trước, khóa được sử dụng: luồng đầu tiên sử dụng mục dữ liệu sẽ chặn nó khỏi các luồng khác cho đến khi công việc của nó hoàn thành. Nhưng cách tiếp cận này có thể không hiệu quả nếu thường xuyên có các khóa cạnh tranh hoặc nếu các khóa kiểm soát vùng bộ nhớ lớn hơn mức thực sự cần thiết.

Tiện ích mở rộng đồng bộ hóa giao dịch Intel (TSX) cung cấp hướng dẫn của bộ xử lý để vượt qua các khóa giao dịch trong bộ nhớ phần cứng. Điều này giúp đạt được khả năng mở rộng cao hơn. Cách thức hoạt động là khi một chương trình đi vào một phần sử dụng Intel TSX để bảo vệ các vị trí bộ nhớ, tất cả các nỗ lực truy cập bộ nhớ đều được ghi lại và khi kết thúc phiên được bảo vệ, chúng sẽ tự động được cam kết hoặc tự động được khôi phục. Việc khôi phục được thực hiện nếu trong khi thực thi từ một luồng khác, có xung đột truy cập bộ nhớ có thể gây ra tình trạng dồn đuổi (ví dụ: ghi vào vị trí mà giao dịch khác đang đọc dữ liệu). Quá trình khôi phục cũng có thể xảy ra nếu bản ghi truy cập bộ nhớ trở nên quá lớn để triển khai Intel TSX, nếu có lệnh I/O hoặc lệnh gọi hệ thống hoặc nếu ngoại lệ bị ném ra hoặc máy ảo bị tắt. Các cuộc gọi I/O bị khôi phục khi chúng không thể được thực hiện theo suy đoán do sự can thiệp từ bên ngoài. Lệnh gọi hệ thống là một thao tác rất phức tạp nhằm sửa đổi các vòng và bộ điều khiển bộ nhớ và rất khó khôi phục.

Trường hợp sử dụng phổ biến của Intel TSX là kiểm soát quyền truy cập trên bảng băm. Thông thường, khóa bảng bộ đệm được sử dụng để đảm bảo quyền truy cập vào bảng bộ đệm, nhưng điều này làm tăng độ trễ cho các luồng cạnh tranh quyền truy cập. Khóa thường quá thô: toàn bộ bảng bị khóa, mặc dù rất hiếm khi các luồng cố gắng truy cập vào cùng các phần tử. Khi số lượng lõi (và luồng) tăng lên, khóa thô sẽ cản trở khả năng mở rộng.

Như được hiển thị trong sơ đồ bên dưới, việc chặn thô có thể khiến một luồng phải đợi một luồng khác giải phóng bảng băm, mặc dù các luồng đang sử dụng các phần tử khác nhau. Việc sử dụng Intel TSX cho phép cả hai luồng hoạt động, kết quả của chúng được ghi lại sau khi kết thúc giao dịch thành công. Phần cứng phát hiện xung đột một cách nhanh chóng và hủy bỏ các giao dịch vi phạm. Khi sử dụng Intel TSX, luồng 2 không phải đợi, cả hai luồng đều thực thi sớm hơn nhiều. Khóa trên bảng băm được chuyển đổi thành khóa tinh chỉnh, giúp cải thiện hiệu suất. Intel TSX hỗ trợ độ chính xác theo dõi tranh chấp ở cấp độ của một dòng bộ đệm đơn (64 byte).

Intel TSX sử dụng hai giao diện lập trình để chỉ định các phần mã thực hiện giao dịch.

  • Bỏ qua khóa phần cứng (HLE) tương thích ngược và có thể dễ dàng sử dụng để cải thiện khả năng mở rộng mà không cần thực hiện các thay đổi lớn đối với thư viện khóa. HLE hiện có tiền tố cho các hướng dẫn bị chặn. Tiền tố lệnh HLE báo hiệu cho phần cứng giám sát trạng thái khóa mà không cần lấy nó. Trong ví dụ trên, việc thực hiện các bước được mô tả sẽ đảm bảo rằng quyền truy cập vào các mục trong bảng băm khác sẽ không còn bị khóa trừ khi có quyền truy cập ghi xung đột vào một giá trị được lưu trữ trong bảng băm. Kết quả là quyền truy cập sẽ được song song hóa, do đó khả năng mở rộng sẽ được tăng lên trên cả bốn luồng.
  • Giao diện RTM bao gồm các hướng dẫn rõ ràng để bắt đầu (XBEGIN), cam kết (XEND), hủy (XABORT) và kiểm tra trạng thái (XTEST) của giao dịch. Những hướng dẫn này cung cấp cho các thư viện khóa một cách linh hoạt hơn để triển khai bỏ qua khóa. Giao diện RTM cho phép các thư viện sử dụng thuật toán hủy giao dịch linh hoạt. Tính năng này có thể được sử dụng để cải thiện Hiệu suất Intel TSX sử dụng khởi động lại giao dịch lạc quan, khôi phục giao dịch và các kỹ thuật nâng cao khác. Bằng cách sử dụng lệnh CPUID, thư viện có thể quay lại triển khai các khóa không phải RTM cũ hơn trong khi vẫn duy trì khả năng tương thích ngược với mã cấp người dùng.
  • Để biết thêm thông tin về HLE và RTM, tôi khuyên bạn nên xem các bài viết sau đây của Intel Developer Zone.

Giống như việc tối ưu hóa các nguyên tắc đồng bộ hóa cơ bản bằng cách sử dụng HLE hoặc RTM, các tính năng của gói dữ liệu NFV có thể được hưởng lợi từ Intel TSX khi sử dụng Bộ công cụ phát triển mặt phẳng dữ liệu (DPDK).

Khi sử dụng Intel TSX, thách thức chính không phải là triển khai các phần mở rộng này mà là đánh giá và xác định hiệu suất của chúng. Có các bộ đếm hiệu suất có thể được sử dụng trong chương trình Linux* hoàn hảo và để đánh giá mức độ thành công của việc thực thi Intel TSX (số chu kỳ đã hoàn thành và số chu kỳ bị hủy).

Nên sử dụng Intel TSX một cách thận trọng và kiểm tra cẩn thận trong các ứng dụng NFV vì các hoạt động I/O trong khu vực được Intel TSX bảo vệ luôn liên quan đến việc khôi phục và nhiều tính năng NFV sử dụng nhiều thao tác I/O. Nên tránh khóa đồng thời trong các ứng dụng NFV. Nếu cần phải khóa thì thuật toán bỏ qua khóa sẽ giúp cải thiện khả năng mở rộng.

Giới thiệu về tác giả

Alexander Komarov làm kỹ sư phát triển ứng dụng trong Nhóm Dịch vụ và Phần mềm của Tập đoàn Intel. Trong 10 năm qua, công việc chính của Alexander là tối ưu hóa mã để đạt hiệu suất cao nhất trên nền tảng máy chủ Intel hiện tại và tương lai. Công việc như vậy bao gồm việc sử dụng các công cụ phát triển của Intel phần mềm: Chúng bao gồm trình biên dịch, trình biên dịch, thư viện, bộ hướng dẫn mới nhất, kiến ​​trúc nano và các cải tiến kiến ​​trúc cho bộ xử lý và chipset x86 mới nhất.

thông tin thêm

Để biết thêm thông tin về NFV, hãy xem các video sau.

Ngày: 2014-08-13 22:26

Trở lại năm 2007, AMD đã phát hành thế hệ bộ xử lý Phenom mới. Những bộ xử lý này, sau này được phát hiện, có lỗi trong khối TLB (bộ đệm dịch sang một bên, bộ đệm để chuyển đổi nhanh địa chỉ ảo sang địa chỉ vật lý). Công ty không có lựa chọn nào khác ngoài việc giải quyết vấn đề này thông qua một bản vá dưới dạng bản vá BIOS, nhưng điều này đã làm giảm hiệu suất bộ xử lý khoảng 15%.

Điều gì đó tương tự hiện đã xảy ra với Intel. Trong các bộ xử lý thế hệ Haswell, công ty đã triển khai hỗ trợ cho các hướng dẫn TSX (Mở rộng đồng bộ hóa giao dịch). Chúng được thiết kế để tăng tốc các ứng dụng đa luồng và lẽ ra phải được sử dụng chủ yếu trong phân khúc máy chủ. Mặc dù thực tế là CPU Haswell đã có mặt trên thị trường khá lâu, nhưng bộ này Thực tế không có hướng dẫn nào được sử dụng. Rõ ràng, nó sẽ không xảy ra trong tương lai gần.

Thực tế là Intel đã mắc một “lỗi đánh máy”, như chính công ty gọi nó, trong hướng dẫn TSX. Nhân tiện, lỗi này không được các chuyên gia của gã khổng lồ vi xử lý phát hiện ra. Nó có thể dẫn đến sự mất ổn định của hệ thống. Công ty chỉ có thể giải quyết vấn đề này bằng một cách là cập nhật BIOS, cách này sẽ vô hiệu hóa bộ hướng dẫn này.

Nhân tiện, TSX không chỉ được triển khai trong bộ xử lý Haswell mà còn trong các mẫu CPU Broadwell đầu tiên, sẽ xuất hiện dưới tên Core M. Đại diện công ty xác nhận rằng Intel dự định triển khai phiên bản hướng dẫn TSX “không có lỗi” trong các sản phẩm tiếp theo của mình trong tương lai.

Thẻ: Bình luận

Tin tức trước đó

2014-08-13 22:23
Sony Xperia Z2 “sống sót” sau 6 tuần nằm dưới đáy ao mặn

Điện thoại thông minh thường trở thành anh hùng của những câu chuyện đáng kinh ngạc, trong đó chúng cố gắng đảm nhận vai trò áo giáp bỏ túi, chặn một viên đạn và cứu mạng.

2014-08-13 21:46
iPhone 6 đã bước vào giai đoạn thử nghiệm cuối cùng

Theo số liệu mới nhất từ ​​hãng tin Gforgames, iPhone 6 đã xuất hiện Giai đoạn cuối cùng thử nghiệm trước khi đưa điện thoại thông minh mới vào sản xuất hàng loạt. Hãy để chúng tôi nhắc bạn rằng iPhone 6 sẽ được lắp ráp tại các nhà máy ở Trung Quốc...

2014-08-12 16:38
Máy tính bảng iRU M720G lõi tám hỗ trợ hai thẻ SIM

Máy tính bảng có RAM 2 GB và bộ nhớ flash tích hợp 16 GB. Có hai camera trên máy: camera chính 8 megapixel và camera trước 2 megapixel. iRU M720G được trang bị các mô-đun 3G, GPS, Wi-Fi, Bluetooth, đài FM cũng như khe cắm hai thẻ SIM, cho phép nó thực hiện...

2014-08-10 18:57
LG đã phát hành điện thoại thông minh giá rẻ L60 ở Nga

Không hề phô trương và phô trương, LG Electronics đã giới thiệu tại Nga mẫu L Series III mới - LG L60. Cái này điện thoại thông minh rẻ tiềnđược trình bày trong phạm vi giá từ 4 đến 5 nghìn rúp từ...

Với mỗi thế hệ mới, bộ xử lý Intel ngày càng kết hợp nhiều công nghệ và chức năng hơn. Một số người trong số họ rất nổi tiếng (chẳng hạn như ai không biết về siêu phân luồng?), trong khi hầu hết những người không chuyên thậm chí còn không biết về sự tồn tại của những người khác. Hãy mở cơ sở kiến ​​thức nổi tiếng về các sản phẩm Cơ sở tri thức quan hệ tự động (ARK) của Intel và chọn bộ xử lý ở đó. Chúng ta sẽ thấy một danh sách khổng lồ các tính năng và công nghệ - điều gì đằng sau những cái tên tiếp thị bí ẩn của chúng? Mời các bạn tìm hiểu sâu hơn về vấn đề Đặc biệt chú ý về những công nghệ ít được biết đến - chắc chắn sẽ có rất nhiều điều thú vị ở đó.

Chuyển đổi dựa trên nhu cầu của Intel

Cùng với Công nghệ Intel SpeedStep nâng cao, công nghệ Chuyển mạch dựa trên nhu cầu của Intel chịu trách nhiệm đảm bảo rằng tại bất kỳ thời điểm nào trong quá trình tải hiện tại, bộ xử lý hoạt động ở tần số tối ưu và nhận đủ tín hiệu. Nguồn cấp: không nhiều hơn và không ít hơn yêu cầu. Điều này làm giảm tiêu thụ năng lượng và sinh nhiệt, điều này không chỉ quan trọng đối với thiết bị cầm tay, mà còn dành cho máy chủ - đó là nơi sử dụng Chuyển đổi dựa trên nhu cầu.

Truy cập bộ nhớ nhanh Intel

Chức năng điều khiển bộ nhớ để tối ưu hóa hiệu suất RAM. Nó là sự kết hợp của các công nghệ cho phép, thông qua phân tích chuyên sâu về hàng đợi lệnh, xác định các lệnh “chồng chéo” (ví dụ: đọc từ cùng một trang bộ nhớ), sau đó sắp xếp lại việc thực thi thực tế sao cho các lệnh “chồng chéo” được lần lượt được thực hiện. Ngoài ra, các lệnh ghi bộ nhớ có mức độ ưu tiên thấp hơn được lên lịch cho những thời điểm mà hàng đợi đọc được dự đoán là trống, khiến quá trình ghi bộ nhớ thậm chí còn ít bị hạn chế hơn về tốc độ đọc.

Truy cập bộ nhớ linh hoạt Intel

Một chức năng khác của bộ điều khiển bộ nhớ, xuất hiện từ thời nó còn là một con chip riêng biệt, vào năm 2004. Cung cấp khả năng hoạt động ở chế độ đồng bộ với hai mô-đun bộ nhớ cùng một lúc và không giống như chế độ kênh đôi đơn giản tồn tại trước đó, các mô-đun bộ nhớ có thể có kích thước khác nhau. Bằng cách này, tính linh hoạt đã đạt được trong việc trang bị bộ nhớ cho máy tính, điều này được phản ánh qua tên gọi.

Phát lại hướng dẫn Intel

Một công nghệ rất sâu lần đầu tiên xuất hiện trong bộ xử lý Intel Itani. Trong quá trình vận hành các đường dẫn bộ xử lý, có thể xảy ra tình huống khi các lệnh đã được thực thi nhưng vẫn chưa có dữ liệu cần thiết. Sau đó, hướng dẫn cần phải được “phát lại”: loại bỏ khỏi băng tải và chạy từ đầu. Đó chính xác là những gì đang xảy ra. Một cái khác chức năng quan trọng IRT – sửa lỗi ngẫu nhiên trên đường ống bộ xử lý. Đọc thêm về tính năng rất thú vị này.

Công nghệ WiFi của tôi Intel

Công nghệ ảo hóa cho phép bạn thêm Wi-Fi ảo bộ chuyển đổi vật lý hiện có; do đó, ultrabook hoặc máy tính xách tay của bạn có thể trở thành một điểm truy cập hoặc bộ lặp chính thức. Các thành phần phần mềm WiFi của tôi được bao gồm trong trình điều khiển Phần mềm Không dây Intel PROSet phiên bản 13.2 trở lên; phải lưu ý rằng chỉ một số công nghệ tương thích Bộ điều hợp Wi-Fi. Bạn có thể tìm thấy hướng dẫn cài đặt cũng như danh sách khả năng tương thích phần mềm và phần cứng trên trang web của Intel.

Công nghệ nhàn rỗi thông minh Intel

Một công nghệ tiết kiệm năng lượng khác. Cho phép bạn vô hiệu hóa các khối bộ xử lý hiện không sử dụng hoặc giảm tần suất của chúng. Một thứ không thể thiếu đối với CPU điện thoại thông minh, chính xác là nơi nó xuất hiện - trong bộ xử lý Intel Atom.

Nền tảng hình ảnh ổn định của Intel

Một thuật ngữ đề cập đến quy trình kinh doanh hơn là công nghệ. chương trình Intel SIPP đảm bảo tính ổn định của phần mềm bằng cách đảm bảo rằng các thành phần và trình điều khiển nền tảng cốt lõi không thay đổi trong ít nhất 15 tháng. Như vậy, khách hàng doanh nghiệp có cơ hội sử dụng các hình ảnh hệ thống đã triển khai tương tự trong giai đoạn này.

Hỗ trợ nhanh Intel

Đặt bằng phần cứng chức năng thực hiện, đòi hỏi số lượng tính toán lớn, ví dụ: mã hóa, nén, nhận dạng mẫu. Mục đích của QuickAssist là giúp mọi việc trở nên dễ dàng hơn đối với các nhà phát triển bằng cách cung cấp cho họ các khối xây dựng chức năng và tăng tốc ứng dụng của họ. Mặt khác, công nghệ cho phép bạn giao phó những công việc “nặng” cho những việc không quan trọng nhất. bộ vi xử lý mạnh mẽ, điều này đặc biệt có giá trị trong các hệ thống nhúng bị hạn chế nghiêm trọng cả về hiệu suất và mức tiêu thụ điện năng.

Tiếp tục nhanh Intel

Công nghệ được phát triển cho máy tính dựa trên Nền tảng Intel Viiv, cho phép chúng bật và tắt gần như ngay lập tức, giống như đầu thu TV hoặc đầu DVD; đồng thời, ở trạng thái “tắt”, máy tính có thể tiếp tục thực hiện một số tác vụ mà không cần sự can thiệp của người dùng. Và mặc dù bản thân nền tảng này đã chuyển đổi suôn sẻ sang các hình thức khác cùng với những phát triển đi kèm với nó, dòng này vẫn hiện diện trong ARK, bởi vì nó cách đây không lâu.

Khóa bảo mật Intel

Tên chung cho các lệnh RDRAND 32 và 64 bit sử dụng triển khai phần cứng của Bộ tạo số ngẫu nhiên kỹ thuật số (DRNG). Hướng dẫn này được sử dụng cho mục đích mã hóa để tạo ra các khóa ngẫu nhiên đẹp và chất lượng cao.

Intel TSX-NI

Công nghệ có tên phức tạp Tiện ích mở rộng đồng bộ hóa giao dịch Intel - Hướng dẫn mới ngụ ý một tiện ích bổ sung cho hệ thống bộ đệm của bộ xử lý nhằm tối ưu hóa môi trường thực thi của các ứng dụng đa luồng, nhưng tất nhiên chỉ khi các ứng dụng này sử dụng giao diện phần mềm TSX-NI. Từ phía người dùng công nghệ này không hiển thị trực tiếp nhưng bất kỳ ai cũng có thể đọc mô tả của nó ngôn ngữ có thể truy cập trên blog của Stepan Koltsov.

Tóm lại, chúng tôi muốn nhắc bạn một lần nữa rằng Intel ARK không chỉ tồn tại dưới dạng trang web mà còn tồn tại dưới dạng ứng dụng ngoại tuyến dành cho iOS và Android. Ở lại chủ đề!

#Xeon

Khá thường xuyên khi chọn một máy chủ bộ xử lý đơn hoặc trạm làm việc Câu hỏi đặt ra là nên sử dụng bộ xử lý nào - Xeon máy chủ hay Core ix thông thường. Xem xét rằng các bộ xử lý này được xây dựng trên cùng một lõi, sự lựa chọn thường rơi vào các bộ xử lý máy tính để bàn, thường có chi phí thấp hơn với hiệu suất tương tự. Tại sao Intel lại phát hành bộ xử lý Xeon E3? Hãy tìm ra nó.

Thông số kỹ thuật

Để bắt đầu, chúng ta hãy lấy mô hình cơ sở của bộ xử lý Xeon trong phạm vi mô hình hiện tại - Xeon E3-1220 V3. Đối thủ sẽ Bộ xử lý lõi i5-4440. Cả hai bộ xử lý đều dựa trên lõi Haswell và có cùng cơ bản tần số đồng hồ và giá tương tự. Sự khác biệt giữa hai bộ xử lý này được trình bày trong bảng:

Sự sẵn có của đồ họa tích hợp. Thoạt nhìn thì Core i5 có lợi thế nhưng tất cả các máy chủ đều bo mạch chủ có card màn hình tích hợp không cần thiết chip đồ họa trong bộ xử lý và các máy trạm thường không sử dụng đồ họa tích hợp do hiệu suất tương đối thấp.

Hỗ trợ ECC. Tốc độ cao và dung lượng RAM lớn làm tăng khả năng xảy ra lỗi phần mềm. Thông thường, những lỗi như vậy là vô hình, nhưng mặc dù vậy, chúng có thể dẫn đến thay đổi dữ liệu hoặc sự cố hệ thống. Nếu những lỗi như vậy không gây nguy hiểm cho máy tính để bàn do hiếm khi xảy ra, thì chúng không thể chấp nhận được trong các máy chủ hoạt động suốt ngày đêm trong vài năm. Để sửa chúng, công nghệ ECC (mã sửa lỗi) được sử dụng, hiệu suất của công nghệ này là 99,988%.

Công suất thiết kế nhiệt (TDP). Về cơ bản, mức tiêu thụ điện năng của bộ xử lý ở mức tải tối đa. Xeon thường có đường bao nhiệt nhỏ hơn và thuật toán tiết kiệm điện thông minh hơn, cuối cùng giúp giảm hóa đơn tiền điện và làm mát hiệu quả hơn.

Bộ đệm L3. Bộ nhớ đệm là một loại lớp giữa bộ xử lý và RAM, có vai trò rất tốc độ cao. Kích thước bộ đệm càng lớn thì bộ xử lý chạy càng nhanh, vì RAM thậm chí rất nhanh cũng chậm hơn đáng kể so với bộ nhớ đệm. Bộ xử lý Xeon thường có kích thước bộ đệm lớn hơn, khiến chúng thích hợp hơn cho các ứng dụng sử dụng nhiều tài nguyên.

Tần số / Tần số trong Chế độ tăng tốc Tăng. Ở đây mọi thứ đều đơn giản - tần số càng cao, bộ xử lý hoạt động càng nhanh, tất cả những thứ khác đều như nhau. Tần số cơ bản, nghĩa là tần số mà bộ xử lý hoạt động ở chế độ đầy tải là như nhau, nhưng trong Tăng tốc Turbo, tức là khi làm việc với các ứng dụng không được thiết kế cho bộ xử lý đa lõi, Xeon sẽ nhanh hơn.

Hỗ trợ Intel TSX-NI. Hướng dẫn mới của Tiện ích mở rộng đồng bộ hóa giao dịch Intel (Intel TSX-NI) là một tiện ích bổ sung cho hệ thống bộ nhớ đệm của bộ xử lý giúp tối ưu hóa môi trường thực thi của các ứng dụng đa luồng, nhưng tất nhiên chỉ khi các ứng dụng này sử dụng giao diện lập trình TSX-NI. Bộ hướng dẫn TSX-NI cho phép bạn thực hiện công việc hiệu quả hơn với Dữ liệu lớn và cơ sở dữ liệu - trong trường hợp nhiều luồng truy cập vào cùng một dữ liệu và phát sinh tình huống chặn luồng. Truy cập dữ liệu suy đoán, được triển khai trong TSX, cho phép bạn xây dựng các ứng dụng như vậy hiệu quả hơn và mở rộng hiệu suất linh hoạt hơn khi tăng số lượng luồng được thực thi đồng thời bằng cách giải quyết xung đột khi truy cập dữ liệu được chia sẻ.


Hỗ trợ thực thi đáng tin cậy. Công nghệ thực thi tin cậy Intel tăng cường thực thi lệnh an toàn thông qua các cải tiến phần cứng cho bộ xử lý và chipset Intel. Công nghệ này cung cấp cho nền tảng văn phòng kỹ thuật số các tính năng bảo mật như khởi chạy ứng dụng được đo lường và thực thi lệnh an toàn. Điều này đạt được bằng cách tạo ra một môi trường nơi các ứng dụng chạy tách biệt với các ứng dụng khác trên hệ thống.

Đến lợi ích Bộ xử lý Xeon các mẫu cũ hơn có thể bổ sung thêm dung lượng L3 nhiều hơn, lên tới 45 MB, nhiều lõi hơn, lên tới 18 và nhiều RAM được hỗ trợ hơn, lên tới 768 GB cho mỗi bộ xử lý. Đồng thời, mức tiêu thụ không vượt quá 160 W. Thoạt nhìn, đây là một giá trị rất lớn, tuy nhiên, vì hiệu suất của những bộ xử lý như vậy cao hơn nhiều lần so với hiệu suất của cùng một Xeon E3-1220 V3 với TDP là 80 W, nên việc tiết kiệm trở nên rõ ràng. Cũng cần lưu ý rằng không có bộ xử lý nào trong họ Core hỗ trợ đa xử lý, nghĩa là không thể cài đặt nhiều bộ xử lý trong một máy tính. Hầu hết các ứng dụng dành cho máy chủ và máy trạm đều có quy mô tốt trên các lõi, luồng và bộ xử lý vật lý, do đó, việc cài đặt hai bộ xử lý sẽ giúp hiệu suất tăng gần gấp đôi.