Giới thiệu bộ vi xử lý/cpu core i3-8100 Tray(3.6.GHz, 6M)Bộ vi xử lý Intel Core i3-8100Bộ Vi Xử Lý CPU Intel Core i3-8100 (3.6GHz/6M/Coffee Lake) bộ vi xử lí Intel Core i3 thế hệ 8 chạy trên mainboard 300 series chipset, được cấu tạo bởi 4 lõi vi xử lý với 4 phân luồng, với tốc độ 3.6GHz và nguồn điện tiêu thụ 65 watt, giúp mang đến hiệu quả sử dụng rất cao cho người dùng. Show
Hỗ trợ Ram DDR4 Bus 2400MhzCPU Intel Core i3-8100 sử dụng socket 1151, hỗ trợ Ram DDR4 Bus 2400Mhz, sẽ giúp bạn giảm tối đa độ trễ các tác vụ chơi Game cũng như làm việc. Đáp ứng tốt nhu cầu chơi Game lẫn công việc với hiệu suất ổn định trong suốt quá trình sử dụng. Dòng vi xử lý hiệu năng sử dụng công nghệ 14nm tiên tiếnThiết bị hướng tới công nghệ tiết kiệm điện hơn, mang lại năng lực tính toán mạnh mẽ hơn. Đa nhiệm tốt hơn trên dây truyền công nghệ 14nm và hướng tới những nền tảng vi kiến trúc tương lai mạnh mẽ hơn. những tác vụ game đặc biệt là game VR và xử lý thông tin đồ họa trung cấp, cận cao cấp. Nên sản phẩm CPU Intel core i3 8100 đã mang đến hiệu quả sử dụng rất cao cho người dùng. Hầu như mọi người tiêu dùng khi lựa chọn sản phẩm này đều rất hài lòng với những gì mà nó mang lại. Ưu điểm cpu core i3 8100Theo đánh giá của nhiều người tiêu dùng thì mặc dù giá của CPU core i3 8100 và core i5 ngang nhau nhưng hiệu quả sử dụng của CPU này được đánh giá là mạnh gấp rưỡi thế hệ trước. Nó có thể vượt mặt core i5 với nhiều tính năng rất hiện đại. Hơn thế nữa thì thiết kế của CPU core i3 8100 được xem là hướng đến người dùng phổ thông. Vì thế cho nên nó không chỉ có thiết kế đơn giản mà giá thành cũng rất phải chăng. Đặc biệt là hiệu quả sử dụng lại vô cùng mạnh mẽ. Đặc biệt, với nhiều cải tiến mới mẻ thì người dùng sẽ được trải nghiệm những tính năng hoàn toàn mới với việc sử dụng dễ dàng hơn. Chắc chắn là sản phẩm này sẽ không làm bất cứ ai phải thất vọng khi đã lựa chọn. Chất lượng của sản phẩm này có khả năng đánh bại AMD R3 và nó được rất nhiều người dùng đánh giá là tính năng của sản phẩm này gần bằng R5. Thông số chi tiếtHãng sản xuất: Intel Chủng loại: Core i3-8100 – Coffee Lake (Box Chính Hãng) Socket: 1151 V2 (Yêu cầu sử dụng mainboard 300 Series chipset) Tốc độ: 3.6 GHz Bus Ram hỗ trợ: DDR4 – 2400 MHz Nhân CPU: 4 Luồng CPU: 4 Bộ nhớ đệm: 6 MB L3 cache Tập lệnh: MMX instructions SSE / Streaming SIMD Extensions SSE2 / Streaming SIMD Extensions 2 SSE3 / Streaming SIMD Extensions 3 SSSE3 / Supplemental Streaming SIMD Extensions 3 SSE4 / SSE4.1 + SSE4.2 / Streaming SIMD Extensions 4 AES / Advanced Encryption Standard instructions AVX / Advanced Vector Extensions AVX2 / Advanced Vector Extensions 2.0 BMI / BMI1 + BMI2 / Bit Manipulation instructions F16C / 16-bit Floating-Point conversion instructions FMA3 / 3-operand Fused Multiply-Add instructions EM64T / Extended Memory 64 technology / Intel 64 NX / XD / Execute disable bit VT-x / Virtualization technology VT-d / Virtualization for directed I/O MPX / Memory Protection Extensions SGX / Software Guard Extensions Đồ họa tích hợp: Intel® UHD Graphics 630 Dây truyền công nghệ: 14nm Điện áp tiêu thụ tối đa: 65W Phụ kiện đi kèm: Hộp, quạt tản nhiệt Các thiết bị Android khác nhau sử dụng CPU khác nhau, do đó sẽ hỗ trợ tập lệnh khác nhau. Mỗi sự kết hợp của CPU và tập lệnh sẽ có Giao diện nhị phân của ứng dụng (ABI) riêng. ABI bao gồm các thông tin sau:
Trang này liệt kê các ABI mà NDK hỗ trợ đồng thời cung cấp thông tin về cách hoạt động của mỗi ABI. ABI cũng có thể chỉ API gốc mà nền tảng hỗ trợ. Để biết danh sách các loại vấn đề về ABI ảnh hưởng đến hệ thống 32 bit, hãy xem các lỗi ABI 32 bit. ABI được hỗ trợBảng 1. ABI và tập lệnh được hỗ trợ.
Lưu ý: Trước đây, NDK hỗ trợ ARMv5 (armeabi) và MIPS 32 bit và 64 bit. Tuy nhiên, chúng tôi không còn hỗ trợ các ABI này trong NDK r17. armeabi-v7aABI này dành cho CPU dựa trên ARM 32 bit. Biến thể Android bao gồm Thumb-2 và hướng dẫn dấu phẩy động phần cứng VFP, cụ thể là VFPv3-D16, bao gồm 16 thanh ghi dấu phẩy động 64 bit chuyên dụng. Để biết thông tin về các phần của ABI không dành riêng cho Android, hãy xem Giao diện nhị phân của ứng dụng (ABI) dành cho Kiến trúc ARM Theo mặc định, hệ thống xây dựng của NDK tạo mã Thumb-2 trừ khi bạn sử dụng Các phần mở rộng khác, trong đó có Advanced SIMD (Neon) và VFPv3-D32, là không bắt buộc. Để biết thêm thông tin, hãy xem phần Hỗ trợ Neon. ABI arm64-v8aABI này dành cho các CPU dựa trên ARMv8-A, hỗ trợ kiến trúc AArch64 64 bit. ABI này có cả phần mở rộng kiến trúc Advanced SIMD (Neon). Bạn có thể sử dụng hàm nội tại Neon trong mã C và C++ để tận dụng phần mở rộng Advanced SIMD. Hướng dẫn lập trình Neon cho kiến trúc Armv8-A cung cấp thêm thông tin về các hàm nội tại Neon và cách lập trình Neon nói chung. Hãy xem phần Tìm hiểu kiến trúc của Arm để biết toàn bộ thông tin chi tiết về những phần của ABI không dành riêng cho Android. Arm cũng đưa ra một số lời khuyên về quy trình chuyển đổi trong Phát triển Android 64 bit. Trên Android, thanh ghi x18 dành riêng cho nền tảng là dành riêng cho ShadowCallStack và mã của bạn không được chạm tới. Các phiên bản Clang hiện tại mặc định sử dụng tùy chọn x86ABI này dành cho các CPU hỗ trợ tập lệnh thường gọi là "x86", "i386" hoặc "IA-32". Các đặc điểm của ABI này bao gồm:
ABI không bao gồm bất kỳ phần mở rộng tập lệnh IA-32 tuỳ chọn nào khác, chẳng hạn như:
Bạn vẫn có thể sử dụng những phần mở rộng này, miễn là bạn sử dụng kỹ thuật thăm dò tính năng thời gian chạy để bật phần mở rộng và cung cấp tính năng dự phòng cho các thiết bị không hỗ trợ các phần mở rộng này. Chuỗi công cụ NDK giả định cách căn chỉnh ngăn xếp 16 byte trước lệnh gọi hàm. Các công cụ và tuỳ chọn mặc định sẽ thực thi quy tắc này. Nếu đang viết mã tập hợp, bạn phải đảm bảo duy trì cách căn chỉnh ngăn xếp, và đảm bảo rằng các trình biên dịch khác cũng tuân thủ quy tắc này. Hãy tham khảo các tài liệu sau để biết thêm chi tiết:
x86_64ABI này dành cho các CPU hỗ trợ tập lệnh thường gọi là "x86-64". ABI này hỗ trợ hướng dẫn mà GCC thường tạo với các cờ trình biên dịch sau đây: -march=x86-64 -msse4.2 -mpopcnt -m64 -mtune=intel Các cờ này nhắm mục tiêu đến tập lệnh x86-64, theo tài liệu về GCC, cùng với phần mở rộng tập lệnh MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, và POPCNT. Mã được tạo là sự tối ưu hoá cân bằng giữa các CPU Intel 64 bit hàng đầu. Để biết thêm thông tin về cờ của trình biên dịch, đặc biệt là liên quan đến việc tối ưu hoá hiệu suất, hãy tham khảo Gợi ý về hiệu suất GCC x86. ABI này không bao gồm bất kỳ phần mở rộng tập lệnh x86-64 tuỳ chọn nào khác, chẳng hạn như:
Bạn vẫn có thể sử dụng những phần mở rộng này, miễn là bạn sử dụng kỹ thuật thăm dò tính năng thời gian chạy để bật phần mở rộng và cung cấp tính năng dự phòng cho các thiết bị không hỗ trợ các phần mở rộng này. Hãy tham khảo các tài liệu sau để biết thêm chi tiết:
Tạo mã cho một ABI cụ thểTheo mặc định, Gradle (bất kể được sử dụng qua Android Studio hay từ
dòng lệnh) xây dựng cho tất cả ABI không còn được dùng nữa. Để hạn chế tập hợp ABI mà ứng dụng hỗ trợ, hãy sử dụng Theo mặc định, ndk-build xây dựng cho tất cả các ABI không được dùng nữa. Bạn có thể nhắm mục tiêu đến ABI cụ thể bằng cách đặt Để biết thêm thông tin về các giá trị mà bạn có thể chỉ định cho Với CMake, bạn tạo mỗi lần một ABI và phải chỉ định ABI
một cách rõ ràng. Bạn thực hiện việc này bằng biến Đối với các cờ khác phải được truyền đến CMake để xây dựng bằng NDK, hãy xem Hướng dẫn về CMake. Hành vi mặc định của hệ thống xây dựng là đưa tệp nhị phân cho mỗi ABI vào một APK duy nhất, còn gọi là APK lớn (fat APK). APK lớn sẽ lớn hơn đáng kể so với một APK chỉ chứa các tệp nhị phân của một ABI; bạn sẽ có được khả năng tương thích rộng hơn, nhưng đổi lại là APK lớn hơn. Bạn nên tận dụng Gói ứng dụng hoặc Phần phân tách APK để giảm kích thước tệp APK mà vẫn duy trì khả năng tương thích tối đa của thiết bị. Tại thời điểm cài đặt, trình quản lý gói chỉ giải nén mã máy thích hợp nhất cho thiết bị mục tiêu. Để biết thông tin chi tiết, hãy xem phần Tự động trích xuất mã gốc tại thời điểm cài đặt. Quản lý ABI trên nền tảng AndroidPhần này cung cấp thông tin chi tiết về cách nền tảng Android quản lý mã gốc trong APK. Mã gốc trong gói ứng dụngCả Cửa hàng Play và Trình quản lý gói đều muốn tìm thư viện do NDK tạo trên các đường dẫn tệp trong APK khớp với mẫu sau: /lib/<abi>/lib<name>.so Ở đây, Nếu không tìm thấy các thư viện dùng chung gốc tại vị trí dự kiến, thì hệ thống sẽ không thể sử dụng các thư viện đó. Trong trường hợp như vậy, ứng dụng phải tự sao chép các thư viện sang rồi thực hiện Trong một APK lớn, mỗi thư viện nằm trong một thư mục có tên khớp với ABI tương ứng. Ví dụ: Một APK lớn có thể chứa: /lib/armeabi/libfoo.so /lib/armeabi-v7a/libfoo.so /lib/arm64-v8a/libfoo.so /lib/x86/libfoo.so /lib/x86_64/libfoo.so Lưu ý: Các thiết bị Android dựa trên ARMv7 chạy phiên bản 4.0.3 trở xuống cài đặt thư viện gốc từ thư mục Hỗ trợ ABI trên nền tảng AndroidTrong thời gian chạy, hệ thống Android biết được ABI nào hệ thống hỗ trợ vì thuộc tính hệ thống dành riêng cho bản dựng cho biết:
Cơ chế này đảm bảo rằng hệ thống trích xuất mã máy tốt nhất từ gói tại thời điểm cài đặt. Để có hiệu suất tốt nhất, bạn nên biên dịch trực
tiếp cho ABI chính. Ví dụ: Một thiết bị dựa trên ARMv5TE thông thường sẽ chỉ xác định ABI chính: Thiết bị 64 bit cũng hỗ trợ biến thể 32 bit. Lấy thiết bị arm64-v8a làm ví dụ, thiết bị cũng có thể chạy mã armeabi và armeabi-v7a. Tuy nhiên, hãy lưu ý rằng ứng dụng sẽ hoạt động hiệu quả hơn nhiều trên thiết bị 64 bit nếu ứng dụng đó nhắm mục tiêu đến arm64-v8a thay vì dựa vào thiết bị chạy phiên bản armeabi-v7a của ứng dụng. Nhiều thiết bị dựa trên x86 cũng có thể chạy tệp nhị phân NDK Bạn có thể buộc cài đặt một tệp apk cho một ABI cụ thể. Điều này rất hữu ích khi kiểm thử. Hãy sử dụng lệnh sau: adb install --abi abi-identifier path_to_apk Trích xuất tự động mã gốc tại thời điểm cài đặtKhi cài đặt một ứng dụng, dịch vụ trình quản lý gói sẽ quét APK và tìm bất kỳ thư viện dùng chung nào có dạng: lib/<primary-abi>/lib<name>.so Nếu không tìm thấy thư viện nào như vậy và bạn đã xác định ABI phụ, thì dịch vụ sẽ quét các thư viện dùng chung có dạng: lib/<secondary-abi>/lib<name>.so Khi tìm thấy các thư viện cần tìm, trình quản lý gói sẽ sao chép các thư viện đó vào
Nếu hoàn toàn không có tệp đối tượng dùng chung, thì ứng dụng sẽ tạo và cài đặt nhưng sẽ gặp sự cố vào thời gian chạy. ARMv9: Bật PAC và BTI cho C/C++Việc bật PAC/BTI sẽ cung cấp khả năng bảo vệ chống lại một số vectơ tấn công. PAC bảo vệ các địa chỉ trả về bằng cách ký mã hóa các địa chỉ này trong prolog của một hàm và kiểm tra để đảm bảo địa chỉ trả về vẫn được ký chính xác trong epilog. BTI ngăn chuyển đến các vị trí tùy ý trong mã bằng cách yêu cầu mỗi mục tiêu nhánh là một hướng dẫn đặc biệt không làm gì ngoài việc báo cho bộ xử lý biết là bạn có thể truy cập vào đó. Android sử dụng hướng dẫn PAC/BTI mà không thực hiện được gì trên các bộ xử lý cũ hơn không hỗ trợ hướng dẫn mới. Chỉ các thiết bị ARMv9 mới có biện pháp bảo vệ PAC/BTI, nhưng bạn cũng có thể chạy cùng một mã trên các thiết bị ARMv8: không cần nhiều biến thể của thư viện. Ngay cả trên các thiết bị ARMv9, PAC/BTI chỉ áp dụng cho mã 64 bit. Việc bật PAC/BTI sẽ làm tăng kích thước mã một chút, thường là 1%. Hãy xem hướng dẫn của Arm trong phần Tìm hiểu kiến trúc - Cung cấp biện pháp bảo vệ cho phần mềm phức tạp (PDF) để biết nội dung giải thích chi tiết về mục tiêu PAC/BTI của các vectơ tấn công, cũng như cách hoạt động của các biện pháp bảo vệ. Xây dựng các thay đổiĐặt Sử dụng Biên dịch mã bằng Khắc phục sự cốChúng tôi không thấy có vấn đề nào liên quan đến việc hỗ trợ Trình biên dịch cho PAC/BTI, nhưng:
$ llvm-readelf --notes LIBRARY.so [...] Displaying notes found in: .note.gnu.property Owner Data size Description GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0 (property note) Properties: aarch64 feature: BTI, PAC [...] $
|