Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 21 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
21
Dung lượng
2,65 MB
Nội dung
ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRUNG TÂM NGHIÊN CỨU VÀ ĐÀO TẠO THIẾT KẾ VI MẠCH -oOo BÁO CÁO ĐỊNH KỲ DỰ ÁN CHUYỂN GIAO CÔNG NGHỆ SẢN XUẤT CÁC THIẾT BỊ MẬT MÃ CHUYÊN DỤNG GIAI ĐOẠN I Gói thầu: NGHIÊN CỨU VÀ THIẾT KẾ CHIP VI XỬ LÝ 32 BIT VÀ CHUYỂN GIAO TỒN BỘ CƠNG NGHỆ Nhiệm vụ 1: CHUYỂN GIAO CÔNG NGHỆ THIẾT KẾ CHIP VI XỬ LÝ 32 BIT Nội Dung 1: MƠ HÌNH HĨA HIỆU NĂNG VXL Công việc 1: PORTING GNU GCC CHO VI XỬ LÝ 32 BIT Công việc 2: PORTING GNU ASSEMBLER CHO VI XỬ LÝ 32 BIT Công việc 3: PORTING GNU LINKER CHO VI XỬ LÝ 32 BIT Công việc 4: THƯ VIỆN CHO VI XỬ LÝ 32 BIT TP.HCM - 2015 i MỤC LỤC CHƯƠNG TỔNG QUAN CHƯƠNG PHÁT TRIỂN TRÌNH BIÊN DỊCH CHO CHÍP VI XỬ LÝ 32 BIT 2.1 Porting GNU GCC cho vi xử lý 32 bit .2 2.1.1 2.1.2 2.1.3 bit 2.1.4 2.1.5 Các tính xây dựng cho trình biên dịch vi xử lý 32 bit Phương thức kiểm tra tính trình biên dịch vi xử lý 32 bit Yêu cầu tài nguyên để kiểm tra tính trình biên dịch vi xử lý 32 Q trình kiểm tra tính trình biên dịch vi xử lý 32 bit Kết kiểm tra tính trình biên dịch vi xử lý 32 bit 2.2 Porting GNU Assembler cho VXL 32-bit .5 2.3 2.2.1 Các tính xây dựng cho assembler vi xử lý 32 bit 2.2.2 Phương thức kiểm tra tính assembler vi xử lý 32 bit .6 2.2.3 Yêu cầu tài nguyên để kiểm tra tính assembler vi xử lý 32 bit 2.2.4 Quá trình kiểm tra tính assembler vi xử lý 32 bit 2.2.5 Kết kiểm tra tính trình assembler xử lý 32 bit Porting GNU Linker cho vi xử lý 32 bit .8 2.4 2.3.1 Các tính xây dựng cho Linker vi xử lý 32 bit .8 2.3.2 Phương thức kiểm tra tính Linker vi xử lý 32 bit 2.3.3 Yêu cầu tài nguyên cho việc kiểm tra tính Linker vi xử lý 32 bit 2.3.4 Quá trình kiểm tra tính Linker vi xử lý 32 bit 2.3.5 Kết kiểm tra tính Linker vi xử lý 32 bit 11 Thư viện cho vi xử lý 32 bit 12 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 CHƯƠNG Các tính xây dựng cho thư viện vi xử lý 32 bit 12 Phương thức kiểm tra tính thư viện vi xử lý 32 bit 12 Yêu cầu tài nguyên để kiểm tra tính thư viện vi xử lý 32 bit .12 Quá trình kiểm tra tính thư viện vi xử lý 32 bit 12 Kết kiểm tra tính trình thư viện xử lý 32 bit 14 TỔNG KẾT 15 Tài liệu đính kèm .16 Tài Liệu Tham Khảo 17 ii MỤC LỤC HÌNH Hình 2-1 Thực thi shell script chạy Compile Testsuite .3 Hình 2-2 Quá trình thực thi Compile Testsuite Hình 2-3 Thực thi cơng cụ phân tích, tổng hợp kết chạy Compile Testsuite Hình 2-4 Thực thi shell script chạy Execute Testsuite Hình 2-5 Quá trình thực thi Execute Testsuite Hình 2-6 Thực thi cơng cụ phân tích, tổng hợp kết chạy Execute Testsuite .7 Hình 2-7 Cài đặt tùy chọn cho thư viện Hình 2-8 Lựa chọn kiến trúc cho target .9 Hình 2-9 Thực biên dịch file thư viện thành file đối tượng .10 Hình 2-10 Liên kết file đối tượng thành thư viện tĩnh dạng *.a 10 Hình 2-11 Liên kết file đối tượng thành thư viện động dạng *.so 11 Hình 2-12 Các thư viện tĩnh thư viện động biên dịch liên kết compiler toolchain vi xử lý 32 bit 11 Hình 2-13 Thực thi Testsuite kiểm tra tính thư viện vi xử lý 32 bit 13 Hình 2-14 Q trình thực thi Testsuite kiểm tra tính thư viện vi xử lý 32 bit .13 Hình 2-15 Thực thi cơng cụ phân tích, tổng hợp kết kiểm tra tính thư viện vi xử lý 32 bit 14 iii MỤC LỤC BẢNG Bảng 2-1 Bảng mơ tả phân loại test-case kiểm tra tính thư viên vi xử lý 32 bit 14 iv CHƯƠNG TỔNG QUAN Bộ trình dịch GNU (tiếng Anh: GNU Compiler Collection - thường viết tắt thành GCC) tập hợp trình dịch thiết kế cho nhiều ngơn ngữ lập trình khác GCC trình dịch thức hệ thống GNU, hầu hết hệ điều hành giống Unix, bao gồm Linux, dòng hệ điều hành BSD, Mac OS X chọn làm trình dịch tiêu chuẩn GCC tương thích với nhiều tảng kiến trúc máy tính đa dạng, sử dụng rộng rãi công cụ làm môi trường phát triển phần mềm thương mại, có quyền nguồn đóng GCC dùng hầu hết tảng nhúng, Symbian, AMCC Freescale Power Architecture-trên chip, Playstation Sega Dreamcast Những công ty CodeSourcery kinh doanh cách hỗ trợ phát triển tính tương thích GCC với đa dạng tảng, nhà sản xuất chip ngày cho kiến trúc thành cơng phải có yếu tố cần thiết tương thích với GCC GCC thường lựa chọn làm trình dịch để phát triển sản phẩm phần mềm yêu cầu phải chạy nhiều tảng phần cứng đa dạng Sự khác biệt trình dịch địa phương (chỉ dùng cho tảng đó) dẫn đến việc phát triển đoạn mã để dịch xác tất trình dịch hay xây dựng lệnh chạy tất tảng khó khăn Trong dùng GCC, cú pháp dùng cho tảng, đoạn mã dịch xác tảng, hội dịch xác tảng khác cao nhiều GCC bảo trì nhiều nhóm phát triển khắp giới Nó trở nên tương thích với nhiều loại CPU hệ điều hành trình dịch khác CHƯƠNG PHÁT TRIỂN TRÌNH BIÊN DỊCH CHO CHÍP VI XỬ LÝ 32 BIT 2.1 2.1.1 Porting GNU GCC cho vi xử lý 32 bit Các tính xây dựng cho trình biên dịch vi xử lý 32 bit Các tính xây dựng cho trình viên dịch vi xử lý 32 bit bao gồm nội dung sau đây: Tạo đối tượng vi xử lý 32 bit cho GNU GCC Định nghĩa kiểu kích thước liệu hỗ trợ Xây dựng Machine Descriptions cho vi xử lý dựa vào tập lệnh Xây dựng macro function cho phần Back-end GCC Xây dựng biểu diễn kiểu liệu (char, int, long, pointer, struct, union ) Xây dựng cách quản lí ghi CPU Xây dựng chế quản lí Stack Xây dựng quy luật gọi hàm chuẩn Xây dựng chế truyền tham số Thực giá trị trả gọi hàm Porting code phần đối tượng vi xử lý 32 bit Thực tối ưu hóa cho riêng vi xử lý 32 bit 2.1.2 Phương thức kiểm tra tính trình biên dịch vi xử lý 32 bit Phương thức kiểm tra hoạt động tính xây dựng cho trình biên dịch vi xử lý 32 bit: thực chạy compile test-suite số test-suite khác GNU cho trình biên dịch Sử dụng trình biên dịch 32 bit biên dịch file test-case đánh giá kết nhận 2.1.3 Yêu cầu tài nguyên để kiểm tra tính trình biên dịch vi xử lý 32 bit Tài nguyên cần thiết để thực kiểm tra hoạt động cho tính Compiler C vi xử lý 32 bit : Bộ test-case GNU cho compiler C Công cụ DejaGnu thực thi test-case Shell Script thực thi test-suite cho compiler vi xử lý 32 bit Compiler C dành cho vi xử lý 32 bit Công cụ tổng hợp kết thực thi test-suite 2.1.4 Q trình kiểm tra tính trình biên dịch vi xử lý 32 bit Quá trình kiểm tra tính trình biên dịch vi xử lý 32 bit bao gồm bước sau: Thực thi shell script chạy test-suite cho trình biên dịch vi xử lý 32 bit Hình 2-1 Thực thi shell script chạy Compile Testsuite Hình 2-2 Quá trình thực thi Compile Testsuite Thực thi cơng cụ phân tích tổng hợp kết chạy test-suite cho trình biên dịch vi xử lý 32 bit (cơng cụ đính kèm thư mục run-testsuite-shell) Hình 2-3 Thực thi cơng cụ phân tích, tổng hợp kết chạy Compile Testsuite 2.1.5 Kết kiểm tra tính trình biên dịch vi xử lý 32 bit Kết kiểm tra hoạt động tính trình biên dịch cho vi xử lý 32 bit tổng hợp lại file excel File đính kèm thư mục Trong nội dung bao gồm: Sheet “Cpp Testsuite” Số lượng file test-case: 356 Số lượng ngữ cảnh PASS/ tổng số ngữ cảnh thực thi kiểm tra: 1768/1768 Nội dung kiểm tra: kiểm tra hoạt động C preprocessor Sheet “Trad Testsuite” Số lượng file test-case: 55 Số lượng ngữ cảnh PASS/ tổng số ngữ cảnh thực thi kiểm tra: 182/183 (1 ngữ cảnh không hỗ trợ) Nội dung kiểm tra: compiler loại bỏ thành phần không biên dịch mã nguồn chương trình Sheet “Debug Testsuite” Số lượng file test-case: 65 Số lượng ngữ cảnh PASS/ tổng số ngữ cảnh thực thi kiểm tra: 1990/1990 Nội dung kiểm tra: tính biên dịch thơng tin debug kèm theo mã nguồn compiler Sheet “Stackalign Testsuite” Số lượng file test-case: 86 Số lượng ngữ cảnh PASS/ tổng số ngữ cảnh thực thi kiểm tra: 1056/1236 (180 ngữ cảnh không hỗ trợ từ kiến trúc vi xử lý 32 bit) Nội dung kiểm tra: chế quản lý stack Sheet “Format Testsuite” Số lượng file test-case: 98 Số lượng ngữ cảnh PASS/ tổng số ngữ cảnh thực thi kiểm tra: 2984/2984 Nội dung kiểm tra: định dạng kiểu liệu, kiểu thủ tục chuẩn Sheet “Noncompile Testsuite” Số lượng file test-case: 64 Số lượng ngữ cảnh PASS/ tổng số ngữ cảnh thực thi kiểm tra: 2228/2228 Nội dung kiểm tra: compiler không biên dịch đoạn code không quy cách, sai cú pháp (VD: biến chưa khai báo, đối số truyền vào hàm khơng kiểu, câu lệnh chưa hồn thành ) Sheet “Compile Torture Testsuite”: Số lượng file test-case: 1169 Số lượng ngữ cảnh PASS/ tổng số ngữ cảnh thực thi kiểm tra: 10120/10120 Nội dung kiểm tra test-case cho: If (then) expression Switch expression For expression (Do) while expression char operand int, short, long, llong operand Float, double (floating point) operand Union, struct, array data Pointer Basic function, function pointer, function arguments Sheet “Special Testsuite” Số lượng file test-case: Số lượng ngữ cảnh PASS/ tổng số ngữ cảnh thực thi kiểm tra: 14/14 Nội dung kiểm tra: biên dịch số đối tượng đặc biệt ngôn ngữ C Sheet “Unsorted Testsuite” Số lượng file test-case: 1784 Số lượng ngữ cảnh PASS/ tổng số ngữ cảnh thực thi kiểm tra: 3803/3803 Nội dung kiểm tra: biên dịch test-case ngôn ngữ C GNU chưa xếp phân loại 2.2 2.2.1 Porting GNU Assembler cho VXL 32-bit Các tính xây dựng cho assembler vi xử lý 32 bit Các tính xây dựng cho assembler vi xử lý 32 bit bao gồm nội dung sau: Xây dựng lớp mô tả tập lệnh cho 32-bit Xây dựng định dạng file mã nguồn Assembly Porting mã nguồn Lexer Parser GNU Assembler Tối ưu hóa mã nguồn Assembly Xây dựng định dạng ELF cho vi xử lý 32 bit Xây dựng linker Shell Script Xây dựng kiểu relocation cho vi xử lý Xây dựng tối ưu cho vi xử lý 2.2.2 Phương thức kiểm tra tính assembler vi xử lý 32 bit Phương thức kiểm tra hoạt động tính assembler xây dựng cho vi xử lý 32 bit dựa vào kết thực thi GNU SIM Model Tiến hành biên dịch execute test-case trình biên dịch, assembler toolchain vi xử lý 32 bit Thực thi chúng SIM Model phân tích, tổng hợp đánh giá kết đạt 2.2.3 Yêu cầu tài nguyên để kiểm tra tính assembler vi xử lý 32 bit Tài nguyên yêu cầu để thực kiểm tra tính assembler xây dựng cho vi xử lý 32 bit bao gồm : Bộ test-case GNU cho compiler C Công cụ DejaGnu thực thi test-case Shell Script thực thi test-suite cho compiler vi xử lý 32 bit Compiler C dành cho vi xử lý 32 bit Assembler dành cho vi xử lý 32 bit Các toolchain khác cho vi xử lý 32 bit Sim C model port theo kiến trúc tập lệnh vi xử lý 32 bit Công cụ tổng hợp kết thực thi test-suite 2.2.4 Quá trình kiểm tra tính assembler vi xử lý 32 bit Quá trình kiểm tra hoạt động tính assember xây dựng cho vi xử lý 32 bit bao gồm bước sau: Thực thi shell-script chạy execute test-suite: Hình 2-4 Thực thi shell script chạy Execute Testsuite Hình 2-5 Quá trình thực thi Execute Testsuite Thực thi cơng cụ phân tích, tổng hợp kết chạy test-suite: Hình 2-6 Thực thi cơng cụ phân tích, tổng hợp kết chạy Execute Testsuite 2.2.5 Kết kiểm tra tính trình assembler xử lý 32 bit Kết kiểm tra hoạt động tính Assembler cho vi xử lý 32 bit tổng hợp lại file excel Trong nội dung bao gồm sheet “Execute Torture Testsuite”: Số lượng file test-case: 1176 Số lượng ngữ cảnh PASS/ tổng số ngữ cảnh thực thi kiểm tra: 20180/20180 Nội dung kiểm tra test-case cho: If (then) expression Switch expression For expression (Do) while expression char operand int, short, long, llong operand Float, double (floating point) operand Union, struct, array data Pointer Basic function, function pointer, function arguments 2.3 2.3.1 Porting GNU Linker cho vi xử lý 32 bit Các tính xây dựng cho Linker vi xử lý 32 bit Các tính xây dựng cho Linker vi xử lý 32 bit bao gồm nội dung sau: Xây dựng linker Shell Script Xây dựng kiểu relocation cho vi xử lý 32 bit Xây dựng tối ưu cho vi xử lý 32 bit 2.3.2 Phương thức kiểm tra tính Linker vi xử lý 32 bit Phương thức kiểm tra hoạt động Linker vi xử lý 32 bit thực theo công việc sau: Thực liên kết thành File đối tượng thư viện tĩnh (định dạng *.a) Thực liên kết thành File đối tượng thư viện động (định dạng *.so) 2.3.3 Yêu cầu tài nguyên cho việc kiểm tra tính Linker vi xử lý 32 bit Tài nguyên trình kiểm tra hoạt động tính Linker vi xử lý 32 bit : Mã nguồn thư viện uClibc Trình biên dịch xây dựng dành cho vi xử lý 32 bit Các toolchain xây dựng cho vi xử lý 32 bit 2.3.4 Quá trình kiểm tra tính Linker vi xử lý 32 bit Q trình thực kiểm tra tính liên kết file đối tượng tạo thư viện tĩnh thư viện động vi xử lý 32 bit bao gồm bước sau: Cài đặt tùy chọn configure cho thư viện Hình 2-7 Cài đặt tùy chọn cho thư viện Lựa chọn kiến trúc target vi xử lý 32 bit Hình 2-8 Lựa chọn kiến trúc cho target Tiến hành biên dịch liên kết file đối tượng thành thư viện tĩnh thư viện động trình biên dịch toolchain vi xử lý 32 bit Hình 2-9 Thực biên dịch file thư viện thành file đối tượng Liên kết file đối tượng thành thư viện tĩnh dạng *.a Hình 2-10 Liên kết file đối tượng thành thư viện tĩnh dạng *.a Liên kết file đối tượng thành thư viện động dạng *.so 10 Hình 2-11 Liên kết file đối tượng thành thư viện động dạng *.so 2.3.5 Kết kiểm tra tính Linker vi xử lý 32 bit Kết kiểm tra tính liên kết file đối tượng tạo thư viện tĩnh thư viện động vi xử lý 32 bit: Hình 2-12 Các thư viện tĩnh thư viện động biên dịch liên kết compiler toolchain vi xử lý 32 bit 11 2.4 2.4.1 Thư viện cho vi xử lý 32 bit Các tính xây dựng cho thư viện vi xử lý 32 bit Các tính xây dựng cho thư viện vi xử lý 32 bit bao gồm nội dung sau: Xây dựng File khởi động cho vi xử lý 32-bit Porting thư viện runtime low level GCC Các thư viện xử lí chuỗi Thư viện kiểu số động float: cộng, trừ, nhân, chia Thư viện toán học: sin, cos, … 2.4.2 Phương thức kiểm tra tính thư viện vi xử lý 32 bit Phương thức kiểm tra hoạt động cho tính thư viện xây dựng cho vi xử lý 32 bit biên dịch mã nguồn test-case sau thực thi SIM Model tổng hợp đánh giá kết nhận 2.4.3 Yêu cầu tài nguyên để kiểm tra tính thư viện vi xử lý 32 bit Tài nguyên trình kiểm tra hoạt động tính thư viện xây dựng cho vi xử lý 32 bit : Bộ test-case GNU cho trình biên dịch C với test-case liên quan đến thư viện Công cụ DejaGnu thực thi test-case Compiler C dành cho vi xử lý 32 bit Shell Script thực thi test-suite cho compiler vi xử lý 32 bit Assembler dành cho vi xử lý 32 bit Các toolchain khác cho vi xử lý 32 bit Sim C model port theo kiến trúc tập lệnh vi xử lý 32 bit Công cụ tổng hợp kết thực thi test-suite 2.4.4 Q trình kiểm tra tính thư viện vi xử lý 32 bit Quá trình kiểm tra hoạt động cho tính thư viện xây dựng cho vi xử lý 32 bit bao gồm bước sau: Thực thi shell-cript chạy test-suite GNU cho trình biên dịch vi xử lý 32 bit thực thi chúng SIM C Model: 12 Hình 2-13 Thực thi Testsuite kiểm tra tính thư viện vi xử lý 32 bit Hình 2-14 Quá trình thực thi Testsuite kiểm tra tính thư viện vi xử lý 32 bit Thực thi công cụ phân tích tổng hợp kết đạt chạy test-suite: 13 Hình 2-15 Thực thi cơng cụ phân tích, tổng hợp kết kiểm tra tính thư viện vi xử lý 32 bit 2.4.5 Kết kiểm tra tính trình thư viện xử lý 32 bit Kết kiểm tra hoạt động tính thư viện xây dựng cho vi xử lý 32 bit tổng hợp nằm file Các test-case liên quan đến thư viện nằm sheet “Execute Torture Testsuite” phân loại bảng đây: Bảng 2-1 Bảng mơ tả phân loại test-case kiểm tra tính thư viên vi xử lý 32 bit KÝ HIỆU MÔ TẢ Test-case biên dịch thực thi kiểm tra cho biểu thức IF Test-case biên dịch thực thi kiểm tra cho biểu thức SWITCH FOR EXPR Test-case biên dịch thực thi kiểm tra cho biểu thức FOR WHILE EXPR Test-case biên dịch thực thi kiểm tra cho biểu thức DOWHILE biểu thức WHILE CHAR OP, STRING EXPR Test-case biên dịch thực thi kiểm tra xử lý cho ký tự, chuỗi, trỏ chuỗi INT OP, SHORT OP, Test-case biên dịch kiểm tra xử lý cho kiểu liệu có LONG, LLONG OP dấu không dấu integer, short, long, long long FLOAT OP, DOUBLE OP Test-case biên dịch kiểm tra xử lý cho kiểu liệu floating point (float, double) UNION DATA, STRUCT Test-case biên dịch kiểm tra xử lý cho loại cấu trúc dự DATA, ARRAY DATA, liệu union, struct, arraym, pointer POINTER DATA BASIC FUNCTION, ARGS Test-case biên dịch kiểm tra xử lý gọi hàm xử lý đối số FUNTION truyền qua hàm IF EXPR SWITCH EXPR 14 CHƯƠNG TỔNG KẾT Trình biên dịch cho vi xử lý 32 bit tổ chức xây dựng theo quy cách đề GNU Kiến trúc vi xử lý 32 bit mơ tả tối ưu trình biên dịch Trải qua kiểm tra hoạt động tính dựa test case chuẩn GNU GCC cho thấy trình biên dịch vi xử lý 32 bit đáp ứng tốt yêu cầu trình biên dịch hoạt động ổn đinh Đồng thời GNU toolchain xây dựng lại kiến trúc vi xử lý 32 bit, đảm bảo đồng thống với trình biên dịch Tất tạo nên công cụ biên dịch ổn định quy chuẩn cho chíp vi xử lý 32 bit 15 Tài liệu đính kèm Tài liệu file đính kèm tổng hợp thư mục testsutie-resource Trong bao gồm: Thư mục testsuite: chứa mã nguồn testsuite đùng để kiểm tra tính hoạt động cho compiler, assembler, linker, thư viện xây dựng riêng cho vi xử lý 32 bit Thư mục run-testsuite-log: chứa file log file tóm tắt kết thực thi testsuite kiểm tra tính hoạt động cho compiler, assembler, linker, thư viện xây dựng riêng cho vi xử lý 32 bit File Testsuite_Report.xls: Tập tin tổng hợp kết thực thi testsuite kiểm tra tính hoạt động cho compiler, assembler, linker, thư viện xây dựng riêng cho vi xử lý 32 bit File vn32_testsuite.sh: shell script thực thi testsuite kiểm tra tính hoạt động cho compiler, assembler, linker, thư viện xây dựng riêng cho vi xử lý 32 bit File testsuite_xls_maker: Công cụ tổng hợp kết thực thi testsuite kiểm tra tính hoạt động cho compiler, assembler, linker, thư viện xây dựng riêng cho vi xử lý 32 bit 16 Tài Liệu Tham Khảo https://en.wikipedia.org/wiki/GNU_Compiler_Collection https://en.wikipedia.org/wiki/GNU_toolchain https://gcc.gnu.org/ https://gcc.gnu.org/faq.html https://gcc.gnu.org/install/ https://gcc.gnu.org/install/test.html 17 ... BIÊN DỊCH CHO CHÍP VI XỬ LÝ 32 BIT 2.1 2.1.1 Porting GNU GCC cho vi xử lý 32 bit Các tính xây dựng cho trình biên dịch vi xử lý 32 bit Các tính xây dựng cho trình vi? ?n dịch vi xử lý 32 bit bao... compiler vi xử lý 32 bit Compiler C dành cho vi xử lý 32 bit Assembler dành cho vi xử lý 32 bit Các toolchain khác cho vi xử lý 32 bit Sim C model port theo kiến trúc tập lệnh vi xử lý 32 bit Công... kiểm tra tính trình biên dịch vi xử lý 32 bit Yêu cầu tài nguyên để kiểm tra tính trình biên dịch vi xử lý 32 Quá trình kiểm tra tính trình biên dịch vi xử lý 32 bit Kết kiểm