CHƯƠNG MỞ ĐẦU
Cơ sở sinh học
Các phân tử sinh học như axit deoxyribonucleic acid (DNA), ribonucleic acid(RNA), protein, carbohydrate và lipid là nền tảng của các tổ chức tế bào và sự tương tác phức tạp giữa chúng quyết định các đặc tính khác nhau của sinh vật sống Những phân tử sinh học này cho phép nhiều quá trình sinh học diễn ra theo các cách xác định trước để duy trì sự sống ở cấp độ tế bào (Kitano, 2002; Noble, 2002) Các vật liệu di truyền (như DNA và RNA) được quy định chặt chẽ trong mỗi thực thể sinh học Cùng với hoạt động sống, các sinh vật phải tiếp xúc với các tác nhân sinh hóa khác nhau (bên trong hoặc bên ngoài) gây ra đột biến lên cấu trúc di truyền Ngoài ra, sự thay đổi điều kiện sống trong thời gian dài cũng co thể dẫn đến các biến dị khởi nguồn cho sự tiến hóa của sinh vật Các biến dị này, có thể được điều chỉnh hoặc không có khả năng điều chỉnh bởi các cơ chế sinh học, truyền lại cho các thế tiếp theo thông qua gen Do sự điều tiết ở cấp độ phân tử là điều cần thiết để duy trì sự sống ở cấp độ tế bào, các vấn đề ở cấp độ phân tử thường dẫn đến thay đổi sinh lý cũng như sự hình thành các cấu trúc sinh học của cơ thể, từ đó ảnh hưởng đến cân bằng giữa sinh vật và điều kiện sống của chúng.
Cuộc sống của một sinh vật được ánh xạ trong bộ gen của nó, gen là một chuỗi axit nucleic, đại diện cho một đặc điểm chức năng của toàn bộ gen Mỗi mã gen cho mã hóa cho một bộ protein xác định Các quá trình tế bào như nhân bản hoặc cái chết của tế bào đều được lập trình và mã hóa trong bộ gen của các sinh vật Với sự phát triển gần đầy của ngành công nghệ sinh với thành tự lớn lao nhất là sự mã hóa hoàn chỉnh bản đồ của bộ gen người, lần đầu tiên, con người có cơ hội mở ra các phát kiến liên quan đến gen trong chuỗi các tiến trình dẫn đến sự phát triển của một sinh vật cũng như nguyên nhân của các bệnh khác nhau RNA là sản phẩm của quá trình phiên mã DNA và sau đó được dịch thành polypeptide, được gấp lại thành một dạng đại phân tử chức năng gọi là protein tham gia thực hiện nhiều chức năng trong sinh vật (Wikipedia) Bất kỳ đột biến nào trong DNA, nếu không được sửa chữa bởi các polymerase (có thể được hiểu như chất xúc tác hay cơ chế điều tiết quá trình sửa chữa và nhân bản DNA) khác nhau, có thể dẫn đến sự phiên mã của RNA bị lỗi dẫn đến một protein bị dịch sai so với hoạt động ban đầu của nó Điều này có thể gây ra các vấn đề lớn như tập hợp protein và protein bị sai lệch, không thể phân hủy và dẫn đến các bệnh gây tử vong.
Từ những cơ sở thực tiễn trên, ngành tin sinh học (bioinformatic) ra đời với vai trò phát triển khả năng phân tích và đánh giá các diễn biến sinh học dựa trên các các dữ liệu thực tế mà so trùng chuỗi được xem như một trong những lĩnh vực quan trọng nhất của ngành Lĩnh vực này cung cấp các kỹ thuật và công cụ để đánh giá sự sai lệch giữa hai hay nhiều chuỗi DNA, RNA kết hợp với các kỹ thuật phân tích để đưa ra các kết luận hoặc nghiên cứu về biến dị và tiến hóa sinh học Thời kỳ đầu trong lịch sử sinh học, các bộ dữ liệu rất nhỏ và có thể quản lý được Hầu hết các nhà sinh học có thể phân tích dữ liệu của riêng họ sau khi tham gia khóa học thống kê, sử dụng Microsoft Excel trên máy tính để bàn cá nhân Tuy nhiên, khi ngày càng nhiều bộ gen của sinh vật bậc cao được giải mã (đặc biệt là bộ gen người), các bộ dữ liệu lớn được cung cấp rộng rãi và ngày càng trở nên phổ biến hơn trong các nghiên cứu về sinh học trong tương lai Phân tích dữ liệu này cần các công cụ khác nhau, các kỹ năng mới và nhiều máy tính có dung lượng bộ nhớ, sức mạnh tính toán cũng như là dung lượng ổ đĩa lớn.
Tác động của ngành máy tính đối với nghiên cứu sinh học
Những tiến bộ công nghệ, đặc biệt là sự phát triển của các kỹ thuật và thiết bị tính toán, đã giúp làm sáng tỏ trình tự và cấu trúc của các đại phân tử sin học. Năm 1977, Gilbert và Sanger đã phát triển một phương pháp giải trình tự DNA, quy trình chấm dứt chuỗi enzyme và báo cáo trình tự bộ gen hoàn chỉnh của vi khuẩn fX174 (Sanger et al., 1977) Năm 1986, Leroy Hood và các đồng nghiệp đã thiết kế bộ tách chuỗi DNA bán tự động đầu tiên bằng phương pháp của Sanger cho phép khả năng giải mã trình tự DNA nhanh chóng Năm 1990, dự án giải mã bộ gen của con người song song với các dự án giải mã bộ gen của nhiều sinh vật khác nhằm mục đích sắp xếp xây dựng ngân hàng gen (GenBank) của tất cả các loài sinh vật được triển khai (Cantor, 1990; Watson, 1990) Tính đến tháng 8 năm 2005, GenBank chứa khoảng 47 triệu chuỗi DNA khác nhau(Benson et al., 2005) và vẫn còn nhiều bộ gen đang tiếp tục được giả mã Sơ lượng trình tự bộ gen đã và đang được giả mã dẫn đến một lượng lớn dữ liệu cần được xử lý Xử lý và đánh giá được các dữ liệu này ảnh hưởng đến việc tìm hiểu cấu trúc và chức năng sinh học, sự tương tác và điều hòa của protein là điều cần thiết để hiểu được các quá trình của tế bào Trong thế kỷ này, sự phát triển công nghệ và thiết bị tính toán đã cho phép các nhà khoa học có các công cụ cần thiết để nghiên cứu các hệ thống và quy trình sinh học phức tạp Những nghiên cứu như vậy sẽ làm sáng tỏ hơn quá trình phức tạp bên dưới mọi sinh vật sống.
Ngoài các tác động tích cực trong việc cải thiện lưu lượng và tốc độ tính toán, từ đó mở ra triển vọng nghiên cứu sâu rộng các bộ gen phức tạp, sự phát triển của các thiết bị và kĩ thuật tính toán cũng góp phần giảm chi phí tính toán trên mỗi đơn vị Ở giai đoạn đầu, việc giải mã trình tự gen có tốc độ rất thấp với chi phí cực kỳ tốn kém Toàn bộ nỗ lực giải trình tự bộ gen rất tốn kém (chi phí cần cho việc giải mã bộ gen của con người vào khoảng 2,7 tỷ USD) và chỉ có thể thực hiện được thông qua những nỗ lực hợp tác giữa nhiều quốc gia Kể từ khi hoàn thành bộ gen người, chi phí giải trình tự đã giảm theo cấp số nhân cho đến khoảng năm 2008 Với sự ra đời của các công nghệ giải trình tự thế hệ tiếp theo , chi phí giải mã trình tự các bộ DNA lớn thậm chí còn giảm nhanh hơn. Tại thời điểm hiện tại, đã nhiều kỹ thuật tính toán phù hợp được cung cấp để giải mã trình tự các tổ hợp gen lớn với giá thành hợp lý (mặc dù vẫn còn khá cao cho các nhà nghiên cứu sinh học độc lập hay phòng thí nghiệm nhỏ) có thể chấp nhận bởi các công ty hay phòng nghiên cứu lớn Tuy nhiên, chi phí này đang và sẽ tiếp tục giảm nhanh chóng Gordon Moore (một đồng sáng lập của Intel) đã quan sát thấy rằng số lượng bóng bán dẫn trong chip máy tính tăng gấp đôi sau mỗi hai năm Nhiều bóng bán dẫn trên mỗi chip cung cấp tốc độ tính toán nhanh hơn trong bộ xử lý máy tính cùng với việc mật độ phần tử trong bộ nhớ ngày càng dày đặc hơn và nhanh hơn trong máy tính, điều này dẫn đến các máy tính có khả năng tính toán mạnh hơn Sức mạnh tính toán tăng trên mỗi đơn vị tính toán cũng như giá thành làm giảm nhanh chóng chi phí tính toán cho các bài toán so trùng chuỗi sinh học Hình 1.1 cho thấy giai đoạn trước năm
2007, đường chi phí tính toán giảm tiệm cận với định luật Moore Sự phát triển này còn khả quan hơn sau năm 2008 khi NGS ra đời Cùng với việc công bố hàng loạt giải thuật thuộc NGS, chi phí cần cho việc tính toán so trùng chuỗi giảm rất mạnh so với định luật Moore như được minh hoạ trong Hình 1.1, hứa hẹn cung cấp một chi phí thấp cho các nhà nghiên cứu độc lập hay các phòng thí nghiệm nhỏ đến từ bất kỳ quốc gia nào mong muốn phát triển các kỹ thuật di truyền.
Phân tích sinh học và hạn chế của bộ xử lý đa dụng
Sự ra đời của các giải thuật NGS cùng với sự phát triển nhanh chóng sức mạnh tính toán của các bộ xử lý đã mở rộng phạm vi các đối tượng tham gia vào lãnh vực nghiên cứu tính toán sinh học Hệ quả là cơ sở dữ liệu sinh học phát triển nhanh chóng Nếu thời gian cần thiết để tăng gấp đôi số lượng bóng bán dẫn trên một con chip xử lý là hai năm thì thời gian cần cho kích thước của các cơ sở dữ liệu sinh học tăng một lượng tương ứng chỉ bằng một nửa Mặc dù sự phát triển không ngừng của các giải thuật so trùng chuỗi cũng hạn chế phần nào sự chênh lệch này, nhưng không may là để có thể tăng (hoặc giữ nguyên) hiệu suất tính toán trên các tập dữ liệu ngày càng lớn (trong bối cảnh định luật Moore ngày càng không chính xác) các giải thuật mới ra đời đều dựa trên các heuristic (kinh nghiệm) khác nhau Vì cải tiến các giải thuật dựa vào heuristic giúp giảm khối lượng tính toán cũng như khối lượng bộ nhớ cần lưu trữ dữ liệu, nhưng cũng bộc lộ nhiều hạn chế:
- Áp dụng heuristic có thể đánh đổi tính chính xác với hiệu suất xử lý so với các giải thuật chất phác Trong hầu hết các trường hợp, các nhà nghiên cứu phải chấp nhận sai số trong giới hạn cho phép.
- Heuristic có thể chỉ áp dụng tốt cho các bộ DNA có các đặc trưng riêng biệt Hay nói các khác, giải thuật có thể được áp dụng tốt khi phân bộDNA của loài (hay nhóm loài) này, nhưng lại không dùng được cho loài(hay nhóm loài) khác.
Những hạn chế trên có thể được khắc phục một phần bởi các giải pháp sau:
- Các nhà nghiên cứu sinh học ngoài các kiến thức về sinh học còn cần hiểu một lượng kiến thức nhất định về lập trình, toán tin để có thể đánh giá nhược điểm của giải thuật.
- Khi một giải thuật mới ra đời, cần thiết có các nghiên cứu sâu rộng về ưu và nhược điểm của giải thuật này so với các giải thuật đã tồn tại Từ đó đưa ra các đánh giá (hay khuyến cáo) cho việc sử dụng và áp dụng giải thuật.
Trong hầu hết các nghiên cứu sinh học, nhà nghiên cứu sinh học thường bỏ qua (hoặc không nhận thức đầy đủ các vấn đề) đến từ giải thuật mà họ sử dụng Do đó mà các giải pháp được nêu không được áp dụng (hoặc không được áp dụng triệt để do tính phức tạp của giải pháp) Từ đó đặt ra một hướng tiếp cận mới và hiệu quả cho các giải thuật: Xây dựng giải thuật mới giữ nguyên triết lý của các giải thuật trước đó hoặc cải tiến các giải thuật cũ để có thể hoạt động trên các nền tảng xử lý chuyên biệt, đặc biệt là các nền tảng hỗ trợ tính toán song song.
Nền tảng tăng tốc phần cứng và FPGAs
Các hệ thống máy tính hiện tại bao gồm máy tính để bàn, máy tính xách tay và điện thoại di động có chip xử lý nhiều lõi Để kết hợp với phương pháp này, các bộ xử lý đa năng thường được tăng cường với các bộ tăng tốc phần cứng để tính toán các ứng dụng chuyên sâu để giảm thời gian tính toán Các thiết bị tăng tốc phần cứng điển hình bao gồm một số lượng lớn các đơn vị thực thi nhỏ tạo điều kiện cho việc thực hiện song song Thông thường, các thiết bị này được thiết kế dựa trên triết lý chuyển đổi các vòng lặp trong một chương trình tuần tự (lặp theo thời gian) thành không gian của vòng lặp (lặp không gian) để giảm thời gian tính toán thông qua thực hiện đồng thời Một số kiến trúc tăng tốc phần cứng phổ biến hiện nay có thể kể đến như ASIC, GPU hay FPGA Mặc dù đã có nhiều giải thuật so trùng chuỗi được cải tiến để thực thi song song trên GPU và mang lại kết quả tốt, hạn chế cố hữu của nền tảng này là tiêu tốn năng lượng nhiều trong khi vẫn có mất rất nhiều thời gian (vài ngày đến vài tháng) để thực hiện bài toán do phụ thuộc nặng vào việc sử dụng bộ nhớ chia sẽ giữa hàng nghìn đơn vị tính toán ASIC cung cấp giải pháp với sử dụng năng lượng hiệu quả với tốc độ xử lý cao (các đơn vị cấu thành nên chip ASIC có tốc độ cao hơn so với GPU hay FPGA) nhưng tính linh hoạt rất thấp (như Hình 1.2) và chi phí triển khai cao.
Hình 1.2 Biểu đồ tương quan hiệu suất và tính linh hoạt giữa GPP, CPU,
GPU và ASIC Các phần cứng tăng tốc dựa trên nền tảng FPGA đặc biệt hiệu quả trong việc tăng tốc một số loại ứng dụng cụ thể khi so sánh với GPU Vì các chip FPGA có thể cấu hình lại được, chúng có thể được tùy chỉnh để thực hiện nhiều yếu tố xử lý khác nhau đồng thời loại bỏ các thành phần dư thừa, nhờ vào đó mà có thể sử dụng hiệu quả các tài nguyên của chip Hơn nữa mức độ song song cao khi hiện thực trên FPGA cùng với việc triển khai cơ chế tính toán ống với giao tiếp cục bộ và các kết nối ngắn có thể mang lại tốc độ rất cao so với các giải pháp phần mềm Hạn chế của nền tảng FPGA so với GPU là lượng tài nguyên cung cấp thường không đủ để tạo ra số lượng hạt nhân tính toán bằng với các đơn vị tính toán trên GPU và tần số hoạt động thấp hơn Thêm vào đó, các bài toán thường bao gồm các phần tính toán tuần tự xen kẽ với tính toán song song, và nền tảng FPGA không được đánh giá cao về hiệu suất khi thực hiện tính toán tuần tự Tuy nhiên, may mắn là các hạn chế trên đã được khắc đáng kể ở các họ chip FPGA mới, cụ thể các các dòng chip FPGA của Xilinx từ thế hệ thứ 7 Việc bổ sung một lượng lớn các đơn vị DSP giúp tăng tốc tính toán và đặc biệt là sự tích hợp một bộ xử lý GPP với hiệu năng cao được kết nối với các phần tử FPGA thông qua bus tốc độ cao giúp việc tính toán càng trở nên linh hoạt hơn.
Tình hình nghiên cứu ngoài nước
Nền tảng GPU được sử dụng khá rộng rãi trong các đề tài tăng tốc giải thuật nhờ vào ưu điểm song song hóa của bản thân Một phiên bản tăng tốc giải thuật BWA-MEM trên nền tảng GPU được hiện thực ở bài báo [16] Mô hình hiện thực ở bài báo này tương tự như hiện thực giải thuật BWA-MEM trên FPGA ở bài báo [17] Các mảng systolic được hiện thực trên nền tảng GPU thay vì trên nền tảng FPGA Bên cạnh đó, vấn đề cân bằng trong quá trình thực thi giữa CPU và GPU được cân nhắc trong bài báo này, và một chiến lược cân bằng tải (workload) giữa CPU và GPU được hiện thực nhằm tối ưu hóa thời gian hiện thực của toàn bộ chương trình Giải thuật này sẽ tối ưu hóa thời gian rảnh rỗi giữa CPU và GPU Quá trình này được điều khiển bởi một tham số gọi là Hệ số cân bằng tải (Load Balancing Factor: LBF), sau mỗi quá trình đọc dữ liệu thì giá trị của LBF sẽ được tính toán lại Mỗi nhân CUDA thực hiện tính toán được ánh xạ như là mỗi phần tử xử lí (PEs) Các luồng CUDA (CUDA thread) thực thi các lệnh giống nhau sẽ được kết hợp lại thành một khối bao gồm 32 luồng (gọi là WARP) Các PEs sẽ chia sẻ, trao đổi dữ liệu với nhau thông qua bộ nhớ chia sẻ cache trên cùng chip (on-chip Shared Memory cache) Trong đề tài này, kernel thực thi trên GPU được thiết kế và hiện thực trên mỗi WARP đơn, với độ dài cột tối đa 32-kí tự và một bộ WARP ở đây cũng được hiểu như là một PASS Sự trao đổi dữ liệu giữa các PASS thông qua bộ nhớ chia sẻ (shared memory), còn giữa các core với nhau thì sử dụng xáo trộn các lệnh thực thi (shuffle instructions) để tránh sử dụng bộ nhớ chia sẻ (shared memory) Trong hiện thực này, ma trận tương tự Smith-Waterman không khởi tạo giá trị 0 ban đầu Extend kernel tạo ra nhiều output hơn và heuristic được áp dụng để giới hạn sự tính toán lại trong ma trận tương tự này (Hình 1.3 thể hiện mô hình hiện thực của bài báo trên).
Hình 1.3 Mô hình xử lý seed extension kernel trên GPU
1.5.2.Tăng tốc với tính toán song song
Ngày nay, các bộ vi xử lí được cải tiến trở nên mạnh mẽ với nhiều bộ xử lí trung tâm (CPU) tích hợp bên trong Với những đặc tính trên, nhóm tác giả bài báo [18] đã sử dụng lợi thế của những bộ vi xử lí này để hiện thuật tăng tốc giải thuật BWA-MEM Một mô hình ngăn xếp (stack model) phần mềm tính toán hiệu suất cao (High-performance computing) đã được sử dụng để đánh giá và tăng tốc giải thuật BWA-MEM, các quá trình thử nghiệm đều sử dụng mã nguồn BWA-MEM Hình 1.4 thể hiện mô hình thiết kế hệ thống ở bài báo này.
Hình 1.4 Mô hình xử lý seed extension kernel trên máy chủ phân tán 1.5.3.Tăng tốc với FPGA
Phiên bản đầu tiên được hiện thực bởi nhóm tác giả [1], nhóm tác giả đã phân tích chương trình giải thuật BWA-MEM ra làm ba phần kernel chính:SMEM Generation, Seed Extension and Output Generation tác giả đã tăng tốc phần seed extension trên FPGA dưới dạng một mảng các đơn vị xử lí(Processing Elements) và các mảng này hoạt động song song Bên cạnh đó, kĩ thuật lập trình động (Dynamic Pogramming) rất phù hợp cho hiện thực trên nền tảng FPGA, do đó Seed Extension kernel được chọn để hiện thực quá trình tăng tốc Trong bài báo này [1], Seed Extension được hiện thực và thực thi trên nền tảng FPGA, quá trình SMEM Generation được thực thi trên CPU Các giai đoạn thực thi của hai quá trình này sẽ chồng chéo với nhau nhằm tối ưu thời gian,cũng như quá trình thực thi Giai đoạn cuối cùng là Output Generation sẽ được thực thi sau khi hai quá trình Seed Extension và SMEM Generation đã được thực thi xong hoàn toàn Trong Seed Extension, giải thuật Smith-Waterman là một giải thuật lập trình động (Dynamic Programming) nổi tiếng trong việc tìm kiếm sự tối ưu trong việc sắp xếp giữa hai chuỗi với nhau và cho ra điểm kết quả của việc tính toán Một ma trận tương tự như trong giải thuật Smith- Waterman được sử dụng trong BWA-MEM để đánh dấu những điểm số tốt nhất của quá trình tính toán, bao gồm: khớp, không khớp và khoảng cách (matches, mismatches and gaps) Giải thuật lập trình động sẽ được hiện thực trên hệ thống phần cứng tái cấu hình như là một mảng systolic (systolic array) tuyến tính. Mảng systolic là mạng đồng nhất của các đơn vị xử lý dữ liệu được ghép chặt (DPUs: Data Processing Units) được gọi là các ô (cells) hoặc các nút (nodes). Mỗi nút hoặc DPU độc lập tính toán một phần kết quả như một hàm của dữ liệu nhận được từ các nút hoặc DPUs trước nó truyền vào, lưu trữ kết quả trong chính nó và truyền dữ liệu cho các nút hoặc DPUs tiếp theo mà đứng sau nó. Mỗi mảng systolic bao gồm nhiều phần tử xử lí (Processing Elements: PEs) thực thi song song, độc lập với nhau và mỗi phần tử xử lí sẽ đọc, xử lí từng kí tự một Hình 1.5 thể hiện mô hình hiện thực tăng tốc Seed Extension của [1].
Hình 1.5 Mô hình tăng tốc giải thuật BWA-MEM với FPGA
Có nhiều loại cấu hình PE-Module (Processing Element Module) trênFPGA như: mảng systolic chuẩn (standard systolic array), tùy biến độ dài vật lí(Variable Physical Length: VPL), tùy biến độ dài logic (Variable LogicalLength: VLL) hoặc là PE-đơn giống như cấu trúc của GPU Hình 1.6 thể hiện các loại cấu hình của PE-Module Dựa vào các ưu điểm và nhược điểm của cấu hình PE-Modules trên FPGA, sự kết hợp giữa tùy biến độ dài logic (VLL) và tùy biến độ dài vật lí (VPL) tạo thành Variable Logical and Physical Length(VLPL) đã được lựa chọn dựa trên hiệu suất tương đối của cấu hình PE-Module và các điểm tối ưu (được gọi là điểm thoát tối ưu hóa của cấu hình này) để hiện thực trong bài báo trên.
Nội dung và phương pháp nghiên cứu
Nội dung 1:Nghiên cứu xây dựng mô hình hệ thống kết hợp bộ xử lý đa dụng và phần cứng có cấu hình phù hợp để tăng tốc giải thuật BWA-MEM.
Mục tiêu nội dung 1:mục tiêu chính của nội dung này là nghiên cứu và xây dựng được một mô hình hoạt động kết hợp giữa nền tảng FPGA và bộ xử lý đa dụng phù hợp cho hiện thực tăng tốc giải thuật BWA-MEM Mô hình này phải xem xét đến việc tối ưu quá trình truyền nhận dữ liệu giữa bộ xứ lý đa dụng và các kernels trên phần cứng FPGA.
Phương pháp:phương pháp được sử dụng là phân tích và thiết kế, có thể sử dụng kết hợp thêm với các công cụ mô phỏng hành vi để kiểm tra.
Phân tích và diễn giải số liệu thu được:đánh giá tính khả thi và tính hiệu quả của thiết kế một cách định tính.
Nội dung 2:Thiết kế các kernel tính toán cho quá trình Seed Extension
Mục tiêu nội dung 2:mục tiêu chính của nội dung này là thiết kế và hiện thực được kernel tính toán cho quá trình Seed Extension Thiết kế kernel này là nội dung quan trọng nhất của đề tài vì nó đóng vai trò quyết định đến tốc độ xử lý cũng như là tính đúng đắn của giải thuật Thiết kế này phải khả hiện thực bằng ngôn ngữ đặc tả phần cứng và khả tổng hợp bởi vì mục tiêu cuối cùng là phải hiện thực được các kernels này trên phần cứng FPGA.
Phương pháp:phương pháp được sử dụng là phân tích mã nguồn của giai đoạn Seed Extension trong giải thuật BWA-MEM nguyên thủy và thiết kế, có thể sử dụng kết hợp thêm với các công cụ mô phỏng hành vi để kiểm tra.
Phân tích và diễn giải số liệu thu được:đánh giá tính khả hiện thực của thiết kế.
Nội dung 3:Hiện thực kernel tính toán cho quá trình Seed Extension đã thiết kế trong nội dung 2
Mục tiêu nội dung 3:mục tiêu chính của nội dung này là hiện thực được kernel tính toán cho quá trình Seed Extension Quá trình hiện thực các kernels này cũng nội dung quan trọng của đề tài vì nó đóng vai trò quyết định đến tốc độ xử lý cũng như là tính đúng đắn của giải thuật Các kernel này phải khả hiện thực bằng ngôn ngữ đặc tả phần cứng và khả tổng hợp bởi vì mục tiêu cuối cùng là phải hiện thực được các kernels này trên phần cứng FPGA mà yêu cầu cụ thể là phải hoạt động được ở tần số tối thiểu là 100Mhz.
Phương pháp: phương pháp được sử dụng là sử dụng ngôn ngữ đặc tả phần cứng kết hợp với các công cụ mô phỏng để hiện thực kernel Sau khi hiện thực thành công, các kernel phải được tổng hợp với các công cụ tổng hợp dùng cho phần cứng tái cấu hình để xác định được tần số hoạt động.
Phân tích và diễn giải số liệu thu được:đánh giá tính khả tổng hợp của hiện thực và tần số hoạt động của kernel.
Nội dung 4:Hiện thực hai quá trình seed và ghi kết quả trên máy chủ bằng ngôn ngữ C/C++.
Mục tiêu nội dung 4:mục tiêu chính của nội dung này là xây dựng được thư viện cho quá trình seed và đánh chỉ số cho các các seed tìm được Đồng thời lưu trữ lại dưới một cấu trúc dữ liệu hiệu quả về không gian lưu trữ mà không làm giảm thời gian truy xuất lại dữ liệu Ngoài ra, các hàm được xây dựng phải đáp ứng được khả năng thực hiện song song trên CPU một cách hợp lý và khả năng hoạt động trong thời gian dài.
Phương pháp:phương pháp được sử dụng là sử dụng ngôn ngữ lập trình C/C++ và các công cụ đánh giá hiệu suất được hỗ trợ Sau khi hiện thực thành công, chương trình được xây dựng phải được tổng hợp thành các thư viện và có khả năng tái sử dụng dễ dàng.
Phân tích và diễn giải số liệu thu được: đánh giá khả năng hoạt động của hai giai đoạn seed và ghi kết quả và tính tái sử dụng của hệ thống.
Nội dung 5:Hiện thực khung sườn hỗ trợ hệ thống.
Mục tiêu nội dung 5:mục tiêu chính của nội dung này là xây dựng được một khung sườn hỗ trợ người dùng dễ dàng thực hiện cấu hình hệ thống và đưa ra các quyết chính xác về cấu hình hệ thống mà không cần nhiều kiến thức liên quan đến lập trình cũng như thiết kế phần cứng.
Phương pháp:sử dụng các khung sườn hỗ trợ thiết kế giao diện phối hợp với thư viện được xây trong nội dung 4.
Nội dung 6:Tích hợp và hoàn chỉnh hệ thống
Mục tiêu nội dung 6:mục tiêu chính của nội dung này là tích hợp các hiện thực của các kernels trong nội dung 3 với kiến trúc hệ thống trong nội dung 1 để hoàn thiện toàn bộ hệ thống của đề tài.
Phương pháp: sử dụng công cụ hỗ trợ phát triển ứng dụng của các thiết bị phần cứng tái cấu hình để hiện thực toàn bộ hệ thống.
Phân tích và diễn giải số liệu thu được:đánh giá tính khả tổng hợp của hiện thực và tần số hoạt động của toàn bộ hệ thống.
Nội dung 7:Kiểm thử và đánh giá hiệu suất
Mục tiêu nội dung 7:mục tiêu chính của giai đoạn này là kiểm thử tính đúng đắn của hệ thống và so sánh các tham số như hiệu suất, năng lượng tiêu thụ với hiện thực chỉ dùng sử dụng bộ xử lý đa dụng.
Phương pháp:sử dụng các công cụ phân tích và đánh giá sau khi đã thực thi giải thuật Ngoài ra cần thực thi giải thuật trên cùng tập dữ liệu trên cả hệ thống hiện thực trong đề tài này và trên duy nhất bộ xử lý đa dụng với giải thuật BWA-MEM nguyên thủy để so sánh kết quả thu được.
Phân tích và diễn giải số liệu thu được:đánh giá toàn bộ hệ thống dựa trên các tham số kể trên.
Nội dung 8:hoàn chỉnh báo cáo tổng kết
Mục tiêu nội dung 8:mục tiêu chính của nội dung này hoàn thiện báo cáo tổng kết cuối cùng.
Mục tiêu của đề tài
Mục tiêu chính cần đạt được của đề tài nghiên cứu cụ thể như sau:
- Nghiên cứu và hiện thực giai đoạn mở rộng hạt (seed extension – sẽ được đề cập ở chương ) trên nền tảng FPGA Giai đoạn seed extension được lựa chọn để hiện thực trên FPGA vì thời gian thực thi so với tổng thời gian của quá trình chiếm tỷ lệ cao, do đó việc song song hóa quá trình sẽ mang lại hiệu quả đáng kể trong việc cải thiện tốc độ xử lý Kết quả phải đạt được là thời gian xử lý trên phần cứng FPGA phải nhanh hơn kết quả đạt được trên CPU với cùng một tập dữ liệu.
- Phát triển thư viện tích hợp và khung sườn hỗ trợ hướng đến việc khuyến khích người dung có thể dễ dàng tiếp cận và khai thác hiệu năng mà đề tài mang đến Kết quả hướng đến là một khung sườn hỗ trợ và một thư viện tích hợp có thể giao tiếp hiệu quả giữa máy chủ và phần cứng FPGA,góp phần tăng độ chính xác và cải thiện tốc độ thực thi của cả quá trình,giảm bớt sự trì hoãn trong việc giao tiếp giữa 2 phần cứng.
Kết quả đạt được
Kết thúc đề tài, tác giả đã xây dựng được hệ thống phần cứng tăng tốc giải thuật so trùng chuỗi BWA-MEM đạt hiệu suất cao Hệ thống được xây dựng có thiết kế hợp lý trên nền tảng phần cứng tái cấu hình FPGA Các cơ chế giao tiếp giữa các khối được kiểm chứng ở mức logic và hoạt động thực tế cho kết quả đúng đắn Kernel tính toán được tổng hợp và tích hợp hoàn chỉnh vào hệ thống, tần số hoạt động vượt yêu cầu đặt ra trên tất cả thử nghiệm tổng hợp trên các nền tảng khác nhau, đạt tối đa 621.118 Mhz Bên cạnh việc thiết kế kernel tính toán, một khung sườn hỗ trợ cũng được xây dựng song song, hỗ trợ người dùng có thể dễ dàng đưa ra các thiết lập cho hệ thống mà không cần nhiều kiến thức trong thiết kế phần cứng Quá trình kiểm thử cho thấy hệ thống đạt được các thông số tích cực về hiệu suất xử lý và năng lượng tiêu thụ.
Bố cục của báo cáo
Các phần vào nội dung của báo cáo được tổ chức như sau:
- Chương 2: Giải thuật so trùng chuỗi BWA-MEM
- Chương 3: Phân tích và điều chỉnh giải thuật
- Chương 4: Thiết kế và hiện thực lõi SEED Extension
- Chương 5: Tích hợp, kiểm thử và đánh giá hệ thống
- Phụ lục A: Các khái niệm sinh học
- Phụ lục B: Cơ sở giải thuật so trùng chuỗi – bài toán lập trình động
- Phụ lục C: Giải thuật Smith-Waterman
- Phụ lục D: Giải thuật Needleman-Wunsch
- Phụ lục E: So sánh các giải thuật so trùng chuỗi
GIẢI THUẬT SO TRÙNG CHUỖI BWA-MEM
Chỉ mục trong giải thuật so trùng chuỗi
Một chỉ mục về cơ bản là một danh sách các thuật ngữ chính và mỗi thuật ngữ chính được liên kết với một danh sách các vị trí của từ khoá trong cơ sở dữ liệu được đề cập Trên khía cạnh lập trình, chỉ mục có thể được xem như một loại cấu trúc dữ liệu để tổ chức chuỗi ban đầu thành chuỗi (hay nhiều chuỗi nhỏ hơn) có thứ tự Trong hoạt động truy xuất các khối dữ liệu lớn, việc tìm kiếm một thông tin bằng cách tìm kiếm tuần tự từng ô nhớ của bộ nhớ lữu trữ sẽ chiếm nhiều thời gian, từ đó làm giảm hiệu suất chung của quá trình xử lý Nhờ vào chỉ mục, chúng ta có thể tra cứu dễ dàng các thông tin của bố nhớ, do các thông tin được sắp xếp có thứ tự theo chỉ mục nên thời gian truy xuất dữ liệu sẽ giảm theo một hàm với thời gian (tuỳ thuộc vào giải thuật chỉ mục) Để có cái nhìn rõ ràng hơn về tác động của chỉ mục trong bài toán so trùng chuỗi, ta hãy xem xét ví dụ sau đây được áp dụng với giải thuật chỉ mục so trùng chuỗi chất phát.
2.1.2.Minh hoạ so trùng chuỗi sử dụng chỉ mục
Bài toán được xem xét là so trùng một chuỗi đầu vào có 4 ký tự trong chuỗi dài cho trước Hình 2.1 biểu diễn chuỗi đầu vào sẽ được lập chỉ mục.
Giả sử cần so trùng chuỗi đầu vào = dựa trên chuỗi gốc, việc so trùng sẽ hoạt động theo Hình 2.2 Dễ dàng thấy được với một chuỗi đầu vào có độ dài là và chuỗi cần so trùng có độ dài là , độ phức tạp của bài toán sẽ là ×
Hình 2.2 Hoạt động so trùng chuỗi
Cơ chế so trùng chất phát
Cũng với bài toán này, chúng ta sẽ tiến hành đánh số chỉ mục so trùng chuỗi sau khi đã tổ chức dữ liệu ban đầu thành các chỉ mục Cách đánh số chỉ mục được thực hiện theo các bước như Hình 2.3 Bước 1, bốn ký tự đầu tiên trong chuỗi T (ACGT) sẽ được điền vào bảng chỉ mục với vị trí là 0 Tiếp theo,bốn ký tự tiếp theo, bắt đầu từ vị trí 1, được điền vào bảng chỉ mục cùng với vị trí của nó (1) Trong trường hợp chuỗi tiếp theo trùng với chuỗi bất kỳ đã tồn tại trong bảng, ta chỉ cần điền vị trí mới vào chỉ mục đã có sẵn trong bảng mà không cần thiết phải tạo chỉ mục mới Điều này sẽ giúp hạn chế không gian lưu trữ cần thiết cho bảng chỉ mục Các bước tiếp theo được tiến hành tương tự cho đến khi chuỗi con cuối cùng được đánh chỉ mục Việc đánh chỉ mục dựa trên các chuỗi con có độ dài cố định là k được gọi là cách đánh chỉ mục k-mer.Phương pháp đánh chỉ mụck-mer được xem là phương pháp đánh chỉ mục chất phát, độ phức tạp cho quá trình đánh chỉ mục là (n – m)vớinlà độ dài của chuỗi đầu vào, vàmlà độ dài tương ứng vớik.
Hình 2.3 Quá trình tạo chỉ mục
Quá trình đánh chỉ mục được thực hiện một lần trong tất cả các quá trình so trùng, bảng chỉ mục sau khi được tạo ra sẽ được lưu trữ như một dữ liệu có cấu trúc và được tái sử dụng trong các lần so trùng tiếp theo nếu người dùng không có nhu cầu thay đổi đặc tính của bảng chỉ mục (Ví dụ: thay đổi k trong giải thuật k-mer) Việc so trùng sẽ được thực hiện thông qua các bước như Hình 2.4.
- Bước 1: bốn ký tự đầu tiên của chuỗi cần so trùng sẽ được đối chiếu với bảng chỉ mục (trong trường hợp dùng bảng 4-mer).
- Bước 2: áp dụng giải thuật chất phát để so trùng bốn ký tự được chọn với từng chỉ mục trong bảng.
- Bước 3: nếu tìm được chỉ mục trùng khớp với bốn ký đang xét, trả về giá trị chỉ mục là vị trí bắt đầu của chuỗi con trong chuỗi ban đầu.
- Bước 4: tiếp tục mở rộng so trùng từ vị trí tiếp theo chuỗi đã được chỉ mục ở cả chuỗi tham khảo và chuỗi cần so trùng Độ phức tạp của giai đoạn so trùng ở tình huống xấu nhất khi sử dụng chỉ mục là ( − +1) × + ( – ).
Hình 2.4 Các bước so trùng dựa trên chỉ mục
Trong ví dụ trên, việc sử dụng chỉ mục để so trùng chuỗi về lý thuyết sẽ có độ phức tạp thấp hơn là phương pháp so trùng chất phát trong trường hợp m rất lớn hơn so vớik Tuy nhiên, để thấy rõ hơn nữa ưu điểm của phương pháp này, chúng ta hãy thử thực hiện một thay đổi nhỏ trên bảng chỉ mục đã được tạo ra bằng cách sắp xếp các chỉ mục theo thứ tự alphabet của chuỗi và tiến hành tìm kiếm chuỗi Hình 2.5 mô tả phương pháp tìm kiếm chuỗi với bảng chỉ mục có thự tự Phương pháp so trùng tương tự, nhưng bảng chỉ mục sẽ được sắp xếp thứ tự trong quá trình chỉ mục để đưa ra cấu trúc dữ liệu có ‘tổ chức’ hơn Với cấu trúc dữ liệu mới này, bước so trùng chuỗi sẽ có độ phức tạp là ( ( −) × + ( − )) Một số cải tiến khác cũng có thể được áp dụng như thay đổi giải thuật sắp xếp khi xây dựng chỉ mục, áp dụng các cấu trúc dữ liệu khác nhau để lưu trữ bảng chỉ mục, …
Hình 2.5 Tái cấu trúc bảng chỉ mục và bước so trùng
Rõ ràng, việc sử dụng chỉ mục rất thuận tiện và dễ dàng để truy xuất dữ liệu vì dữ liệu đã được tổ chức, giúp quá trình truy xuất diễn ra nhanh chóng do tránh được việc phải quét qua toàn bộ các ký tự của chuỗi Bên cạnh đó, việc sử dụng bảng chỉ mục cũng tạo điều kiện cho nhà phát triển dễ dàng tích hợp các giải thuật khác nhau để cải thiện hiệu suất tính toán Việc sử dụng bảng chỉ mục cũng tồn tại một số hạn chế, việc sử dụng bảng chỉ mục đòi hỏi phát sinh thêm chi phí thời gian cho việc lập bảng chỉ mục, vì vậy mà không phù hợp khi chuỗi tham chiếu thay đổi thường xuyên Tuy nhiên, tính chất bài toán so trùng chuỗiDNA mà chúng tôi xem xét trong đề tài này là việc so trùng rất nhiều chuỗi đầu vào ngắn với một chuỗi tham khảo duy nhất, do vậy hạn chế thứ nhất này hầu như không ảnh hưởng đến bài toán so trùng chuỗi DNA Hạn chế thứ hai cần nhắc đến là việc tạo ra bảng chỉ mục đòi hỏi thêm chi phí về không gian lưu trữ,vấn đề này khá nghiêm trọng khi các bài toán có chuỗi tham khảo lớn (như bộ gen người có khoảng 3 tỷ ký tự), điều này sẽ gây áp lực không nhỏ đến yêu cầu tài nguyên của hệ thống xử lý Hiện nay, vấn đề lưu chỉ mục vẫn đang được nghiên cứu và cải tiến không ngừng với mục tiêu giảm không gian lưu trữ chỉ mục cân bằng với thời gian truy xuất chỉ mục.
Giải thuật chỉ mục Full-text Minute-space (FM-Index)
FM-index cho phép tìm kiếm chuỗi con trùng(substring matches) một cách hiệu quả bên trong dữ liệu text nén(Giảm bộ nhớ thực thi, thực hiện nhanh hơn)
FM-index: một index kết hợp kỹ thuật BWT với một số cấu trúc dữ liệu phụ trợ khác Đề hiểu được FM-index đầu tiên cần xem sét tìm hiểu giải thuật BWT 2.2.1.Burrows-Wheeler Transform (BWT)
BWT là giải thuật được sử dụng trong kỹ thuật nén dữ liệu theo ý tưởng sắp xếp lại các ký tự trong một chuỗi để tạo ra một chuỗi có nhiều các ký tự giống nhau dồn lại với nhau hơn chuỗi ban đầu và có thể chuyển đồi từ chuỗi này lại chuỗi ban đầu.
Vể tổng quan, thuật toán BWT có thể mô tả như Hình 2.6.
Hình 2.6 Quy trình tạo chuỗi BWT
Chúng tôi sẽ trình bày công tác chuyển đổi chuỗi đầu vào T là abaaba thành chuỗi BWT(T) để minh hoạ cho giải thuật Các bước chi tiết của giải thuật BWT có thể liệt kê như sau:
- Bước 1: Viết thêm cuối chuỗi đầu vào T một ký tự $ tạo thành chuỗi T’
Hình 2.7 Thêm ký tự $ vào chuỗi ban đầu
- Bước 2: Xây dựng ma trận n hoán vị vòng quanh dựa trên chuỗi T’ vừa xây dựng Tập hớn tất cả các hoán vị vòng quanh tạo thành ma trận M(T)
Hình 2.8 Tập hợp các hoán vị vòng quanh của một chuỗi
- Bước 3: Sắp xếp ma trận hoán vị vòng quanh M(T) theo thứ tự alphabet, ta gọi ma trận có thứ tự này là M’(T)
Hình 2.9 Sắp xếp thứ tự các hoán vị vòng quanh
- Bước 4: Rút trích các ký tự cuối cùng của ma trận M’(T), xâu chuỗi các ký tự theo thứ tự hàng trong ma trận tạo thành chuỗi BWT(T)
Hình 2.10 Rút trích ký tự cuối để tạo chuỗi BWT 2.2.2.Chuyển đổi chuỗi BWT về chuỗi gốc ban đầu (BWT-reversing)
Xét ma trận BWT (MT) cột đầu và cột cuối ký hiệu là F và L, đánh thứ tự cho các ký tự ở 2 cột này.T bwt là chuỗi BWT được tạo ra từ MT MT có tính chất “Last-to-First column mapping” (LF-mapping) nghĩa là sự xuất hiện thứ i của ký tự ở cột cuối cùng (L) tương ứng với sự xuất hiện thứ i của ký tự đó ở cột đầu tiên (F) Theo [20], LF-mapping có:
- (ã)biểu thị mảng chiều dài| |sao cho [ ]chứa tổng số lần xuất hiện của các ký tự trong dữ liệu text có thứ tự từ điển nhỏ hơn ký tự
- ( , ) biểu thị số lần xuất hiện của ký tự c trong tiền tố (prefix)
(ã)đại diện cho Last-to-First column mappingbởi vỡ ký tự [ ] ở cột cuốiLcủa ma trậnM T sẽ nằm ở cột đầuFtại vị trớ ( )và (ã)cũng cho phép dò ngược chuỗi Cụ thể, nếu [ ] = [ ] thì [ − 1] [ ( )] Ví dụ = " " Dựa vào Bảng 2.1 ta có T bwt = "abba$aa".
Bảng 2.1 Thứ tự của các ký tự trong T bwt
(5) = ($) + ($, 5) = 0 + 1 = 1 => (5) = (1) = $ Để chuyển về chuỗi gốc ban đầu, ta đảo ngược chuỗi bắt đầu từ phía phải của chuỗi gốc dò ngược về phía trái Cách thực hiện đảo ngược được trình bày như Hình 2.11 và Hình Hình 2.12 Kết quả thu được như sau: 3 1 1 2 0 0$.
Hình 2.12.Minh hoạ BWT Reversing trực quan 2.2.3.FM-Index
FM-index [20] cho phép tìm kiếm chuỗi con trùng một cách hiệu quả bên trong dữ liệu text FM-index kết hợp kỹ thuật BWT với một vài cấu trúc dữ liệu phụ trợ để nhằm giảm bộ nhớ thực thi và thực hiện nhanh hơn.
Thành phần chính của FM-index bao gồm L (có thể nén được) từ ma trận BWT (Hình 2.13) và F có thể dễ dàng suy ngược từ L FM-index có khả năng tiết kiệm không gian cần để lưu trữ.
Hình 2.13 Thành phần FM-Index
Chúng tôi sẽ làm rõ quá trình truy vấn với FM-Index bằng cách sử dụng LF-mapping được mô tả thông quả bài toán tìm chuỗi con = trong chuỗi
- Bước 1: Thêm kí tự $ vào đầu chuỗi P, chuỗi P trở thành = $
Hình 2.14 Định vị dòng ứng với ký tự ‘ab’
- Bước 2: Tìm tất cả các vị trí bắt đầu bằng‘ ’(trong mảng F) và đối chiếu và chọn vị trí tương ứng ở mảng L có kí tự tiếp theo (kí tự‘ ’) Trong trường hợp này, tìm đường phần tử thứ 2 và 3 ở L và F thoả mãn điều kiện trên.
Hình 2.15 Định vị các dòng ứng với ký tự ‘ba’
- Bước 3: Tìm phần tử tương ứng với phần tử thứ 2 và 3 của mảng L trong mảng F (b0và b1) Chọn các phần tử mà vị trí tương ứng của nó ở mảng
L có kí tự tiếp theo của chuỗi cần xét (‘a’) Trong trường hợp, cả hai phần tử b0và b1đều thoả điều kiện nên được chọn.
Hình 2.16 Định vị các dòng ứng với ký tự ‘$a’
- Bước 4: Lặp lại quá trình ở hai bước trên, ta tìm được kí tự kết thúc $ phù hợp với điều kiến truy vấn Ở bước truy vấn cuối cùng (khi các kí tự trong P đều đã được duyệt), có hai trường hợp xảy ra:
1 Không tìm được phần tử trong F mà vị trí tương ứng của nó trong L là kí tự $: kết luận chuỗi P không tồn tại trong chuỗi T tham khảo.
2 Tìm được phần tử trong F mà vị trí tương ứng của nó trong L là kí tự
$: kết luận chuỗi P tồn tại trong chuỗi T tham khảo.
2.2.4.Thuật toán cho FM-Index:
Xét chuỗi con trùng [1, ] trong dữ liệu text [1, ] Giá trị là số lượng của những lần xuất hiện của chuỗicon trùng [1, ]trong dữ liệu text nén Hai thủ tục chính để vận hành FM-index:
- Xác định số lượng của những lần xuất hiện của chuỗi con trùng P[1,p] trong dữ liệu nén T bwt sử dụng thuật toán get_row (Algorithm 1) Tham số First trỏ đến hàng đầu tiên của ma trận ( )chứa tiền tố [ , ] và tham số Last trỏ đến hàng cuối của chứa tiền tố [ , ] Thuật toán trả về giá trị = − + 1
- Xác định những vị trí của chuỗi con trùng [1, ]ở trong dữ liệu text sử dụng thuật toánget_position (Algorithm 2) trả về giá trị nguyên khác nhau trong khoảng[1, ].
Ví dụ: Truy vấn chuỗi P = aba trong dữ liệu text T = aabaaba
- Tìm T bwt Dựa vào giải thuật BWT đã trình bày ta có T bwt = abba$aa.
- Áp dụng tiến trình của FM-index.
Bước 1: Sử dụng thuật toán get_rows (Algorithm 1).
- Ký tự đầu tiên chúng ta cần truy vấn là a, ký tự cuối cùng trong chuỗi P. Khoảng [First,Last] ban đầu được thiết lập là:
- Ký tự kế tiếp cần truy vấn là b Khoảng [First,Last] mới là:
Với First bằng 2 là chỉ số bắt đầu và Last bằng 5 là chỉ số kết thúc của khoảng [First,Last] trước đó [2,5].
- Ký tự cuối cùng cần truy vấn là a Khoảng [First,Last] mới là:
= có trong các hàng[4,5]của ma trận BWT.
- Giá trị occ = Last - First + 1 = 8 - 7 + 1 = 2.
Bước 2: Sử dụng thuật toán get_position (Algorithm 2). ã i = Last = 5.
- Hàng r5 của MT được đánh dấu, lấy Pos(5) từ T: Pos(5) = 1. ã i = First = 4.
- r4 không được đánh dấu LF[4] = C(a) + Occ(a,4) = 1 + 2 = 3, t 1;
- r3 không được đánh dấu LF[3] = C(b) + Occ(b,3) = 5 + 2 = 7, t 2;
- r7 không được đánh dấu LF(7) = C(a) + Occ(a,7) = 1 + 4 = 5, t 3;
- r5 được đánh dấu Lấy Pos(5) từ T: Pos(5) = 1.
Vậy chuỗi aba sẽ nằm ở vị trí thứ 1 và vị trí thứ 4 trong T.
Burrows-wheeler aligner (BWA-MEM)
Là giải thuật so trùng và sắp hàng chuỗi dựa trên kỹ thuật BWT và luận thuyết seed-and-extend Luận thuyết này được trình bày cơ bản như sau: hầu hết những giải thuật so trùng và sắp hàng chuỗi DNA (bao gồm cả giải thuật BWA-MEM) hiện tại đều dựa trên giả thuyết rằng hai chuỗi DNA của cùng một loài thông thường sẽ chứa những chuỗi con trùng lắp nhau với tần suất cao.
Những giải thuật dựa trên luận thuyết này bao gồm hai bước chính:
- Seeding: sẽ tìm trong gen tham khảo một chuỗi con trùng lắp nhiều nhất với một chuỗi con trong chuỗi đọc được từ tập dữ liệu Chuỗi con này được gọi là seed Một chuỗi con có thể là một sự trùng lắp hoàn toàn hoặc trùng lắp không hoàn toàn với một tỉ lệ khác biệt cụ thể.
- Extension: phần còn lại trong chuỗi đọc từ tập dữ liệu sẽ được so trùng và sắp hàng với gen tham khảo dùng giải thuật Smith-Waterman hoặc giải thuật tương tự Smith-Waterman.
Giải thuật BWA-MEM chỉ tìm kiếm những chuỗi con trùng lắp hoàn toàn trong giai đoạn seeding.
2.3.2.Cấu trúc chương trình BWA-MEM
Giải thuật BWA-MEM bao gồm ba bước chính được thực thi tuần tự cho mỗi chuỗi đọc được từ tập dữ liệu:
Giải thuật BWA-MEM xử lý các chuỗi đọc từ tập dữ liệu theo kiến trúc bó [3], như Hình 4.4 Đầu tiên, hai giai đoạn SMEM Generation và Seed Extension được thực thi tuần tự liên tục cho mỗi chuỗi đọc được từ tập dữ liệu, khi hai quá trình này hoàn thành cho một bó dữ liệu, giai đoạn ghi kết quả được thực thi Quá trình xử lý cho các bó dữ liệu khác sẽ được tiếp tục Giải thuật BWA-MEM xử lý theo bó này thường được hiện thực theo mô hình xử lý đa nhiệm (multithreads).
Các khá niệm cơ bản
Trước khi tìm hiểu sâu hơn về giải thuật BWA-MEM ta cần hiểu một số khái niệm cơ bản sau:
- Chuỗi MEM là chuỗi con của chuỗi đọc được từ tập dữ liệu mà trùng lắp chính xác với chuỗi DNA tham khảo và không thể mở rộng theo bất kỳ chiều nào.
- Chuỗi SMEM [15] là một chuỗi MEM mà không thể được chứa trong một chuỗi lớn hơn nào khác có đặc tính tương tự.
- Chuỗi SMEM thường được tìm thấy ít hơn nhiều so với chuỗi MEM.
- Mỗi một chuỗi đọc được từ tập dữ liệu có thể không có chuỗi SMEM nào hoặc nhiều chuỗi SMEM.
- Mỗi một chuỗi đọc được từ tập dữ liệu có thể không có chuỗi SMEM nào hoặc nhiều chuỗi SMEM.
- Hit là số chuỗi MEM hoặc SMEM có trong bộ gen tham khảo.
Ví dụ: Chuỗi đọc từ tập dữ liệu R CTGACAGATCAGAGAGGAATCCGA và bộ gen tham khảo
- Ba chuỗi MEM R[1 6], R[4 16], R[8 21] có 1 hit trong gen tham khảo T
- Chuỗi MEM R[20 24] có 2 hit trong gen tham khảo T.
BWA-MEM xác định seed thông qua hai bước [3]:
- Xác định tất cả các chuỗi SMEM có trong chuỗi gen tham khảo dựa vào thuật toán tìm SMEMs [23] (Algorithm 5) Thuật toán tìm SMEMs sẽ sử dụng hai thuật toán Backward Extension (Algorithm 3) và giải thuậtForward Extension (Algorithm 4).
Ví dụ: Chuỗi gen được đọc từ tập dữ liệu: R = CCCCGTTTT và chuỗi gen tham khảo: T = CCCCATTTT CCCCG .GTTTT .
- Chuỗi con CCCCATTTT của T là 1-mismatch hit (hit có 1 ký tự không trùng) của R mà đó là true hit Chú ý rằng các MEM của R là CCCCG và GTTTT Bởi vì 1-mismatch hit (hit có 1 ký tự không trùng) của CCCCATTTT không chứa hai MEM của R, vì thế bước seeding bị thất bại trong việc tìm 1-mismatch hit này
- Để tránh xác định thiếu seed, re-seeding được tiến hành để tìm kiếm những seed có độ dài quá lớn (trên 28 bp) Giả sử một SMEM có độ dài l xuất hiện k lần trong bộ gen tham khảo Bước re-seeding sẽ tìm những chuỗi trùng lắp chính xác dài nhất (LEMs – longest exact matches) bao gồm phần giữa của SMEM và xuất hiện ít nhất k + 1 lần trong bộ gen tham khảo Ý tưởng này đảm bảo các seed được xác định từ bước seeding và bước re-seeding có thể bao gồm phần lớn tất cả những true hit của chuỗi đọc từ tập dữ liệu.
- Xét tất cả những seed thu được từ seeding và re-seeding, chúng ta có thể thực hiện seed extension cho tất cả chúng Tuy nhiên, ở đây có thể có nhiều seed và phần lớn trong số đó là dư thừa Để giảm seed extension dư thừa ở bước sau, bước chaining được thực hiện để gộp những nhóm seed thẳng hàng và nằm gần nhau (được gọi là chain) và sau đó lọc bỏ những chain ngắn mà phần lớn độ dài của chúng được chứa trong chain dài Chain được phát hiện trong bước này không cần chính xác.
Các seed là các chuỗi con của chuỗi đọc từ tập dữ liệu mà trùng lắp chính xác với gen tham khảo đã tìm được ở bước SMEM Generation Sau khi tìm được seed, seed sẽ được mở rộng theo cả hai chiều để thực hiện việc so trùng và sắp hàng chuỗi đọc từ tập dữ liệu với gen tham khảo Hình 2.17 là ví dụ của hai quá trình Seed Generation và Seed Extention.
Hình 2.17 Quá trình Seed Generation & Extension
Quy trình mở rộng chuỗi giai đoạn seed extension
Quá trình mở rộng này thường dùng phương pháp quy hoạch động (dynamic programming) dựa trên giải thuật Smith-Waterman và Needleman- Wunsch Quy hoạch động là một phương pháp giảm thời gian chạy của các thuật toán thể hiện các tính chất của các bài toán con gối nhau (overlapping subproblem) và cấu trúc con tối ưu (optimal substructure). Áp dụng vào giải thuật Smith-Waterman thì bài toán con ở đây chính là tính toán một điểm cho một phần tử của ma trận, các phần tử của ma trận này có cách tính điểm như nhau (cấu trúc con) và output của phần tử này là input của phần tử khác (gối đầu) Và điều này dẫn đến việc rất thích hợp để ứng dụng FPGA (FPGA-Based Systolic Array) vào kernel Seed-Extension để tăng tốc cho BWA-MEM.
Xác định và lựa chọn vùng ánh xạ:
- Việc so trùng và sắp hàng cục bộ với điểm phạt quãng cách, số điểm dương cho hai ký tự giống nhau thường nhỏ hơn điểm phạt cho hai ký tự khác nhau hoặc cho một gap.
- Độ dài của việc so trùng và sắp hàng cục bộ tối ưu của chuỗi đọc từ tập dữ liệu S tới bộ gen tham khảo T không thể lớn hơn 2 lần độ dài của chuỗi đọc từ tập dữ liệu (|S|) bởi vì việc so trùng và sắp hàng cục bộ yêu cầu một số điểm dương.
- Pmemlà vị trí bắt đầu của MEM trong tập dữ liệu, Tmemlà vị trí ánh xạ của MEM ở trong bộ gen tham khảo và Lmemlà độ dài của MEM Vùng ánh xạ nằm trong khoảng[ , ]:
- Tính toán điểm số sắp hàng cục bộ tối ưu cho tất cả những vùng ánh xạ đã xác định của tập dữ liệu S sử dụng thuật toán SW, sau đó xây dựng danh sách của tất cả những vùng ánh xạ theo thứ tự điểm giảm.
PHÂN TÍCH VÀ ĐIỀU CHỈNH GIẢI THUẬT
Đánh giá các nghiên cứu hiện có
Gói phần mềm BWA-MEM được phát triển bởi tiến sĩ Heng Li [3] được xem là giải thuật so trùng chuỗi hiệu quả nhất hiện nay đối với các chuỗi có độ dài 100-1000bp (xem chương 1, mục 4So sánh các giải thuật) Trên hết, giải thuật BWA-MEM được phát triển đặc biệt hướng tới các nền tảng tính toán song song là tính toán multithreading trên CPU hoặc trên GPU, vốn được xem là hướng tiếp cận đặc biệt hiệu quả để giải các bài toán với hiệu năng cao ngày nay Bên cạnh đó, nhiều nổ lực để hiện thực giải thuật BWA-MEM trên nền tảng FPGA cũng đã được tiến hành và mang lại nhiều kết quả tích cực.
3.1.1.Hướng tiếp cận thứ nhất
Phiên bản đầu tiên được hiện thực bởi nhóm tác giả [1], nhóm tác giả đã phân tích chương trình giải thuật BWA-MEM ra làm ba phần kernel chính: SMEM Generation, Seed Extension and Output Generation Để xác địnhkernel nào phù hợp nhất cho việc tăng tốc giải thuật này, nhóm tác giả đã dùng gprof và oprof Cả hai đều cho ra kết quả như nhau Bảng 3.1 thể hiện kết quả phân tích chương trình BWA-MEM.
Bảng 3.1 Phân tích gprof của giải thuật BWA-MEM
Kernel Thời gian thực thi
Vị trí chính gây nghẽn
Seed Extension 32% Các khối tính toán
Generation 9% Bộ nhớ Song song
Khác 3% Các cổng xuất nhập Tuần tự
Dựa vào kết quả chú thích trên, nhóm tác giả đã đưa ra nhận định rất chính xác và được áp dụng trong hầu hết các nghiên cứu cải tiến BWA-MEM là việc cải thiện chỉ mang lại hiệu quả đáng kể khi thực hiện các thay đổi trên kernelSeed Extension Hai kernel còn lại (SMEM Generation và Output Generation) mặc dù cũng có khả năng thực hiện tính toán song song, nhưng nguyên nhân dẫn đến hiện tướng thắt cổ chai chủ yếu gây ra bởi việc truy xuất bộ nhớ, nên việc cải thiện tốc độ cho hai kernel này chỉ thực sự hiệu quả khi cải tiến hoặc thay đổi công nghệ của bộ nhớ lưu trữ.
Cũng trong bài báo của mình [1], nhóm tác giả đã đề xuất mô hình sử dụng mảng systolic để hiện thực tính toán động Mảng systolic là mạng đồng nhất của các đơn vị xử lý dữ liệu được ghép chặt (DPUs: Data Processing Units) được gọi là các ô (cells) hoặc các nút (nodes) Mỗi nút hoặc DPU độc lập tính toán một phần kết quả như một hàm của dữ liệu nhận được từ các nút hoặc DPUs trước nó truyền vào, lưu trữ kết quả trong chính nó và truyền dữ liệu cho các nút hoặc DPUs tiếp theo mà đứng sau nó [23] Việc triển khai mảng systolic trên FPGA sẽ hình tành mạng các phần tử xử lý (Processing Elements: PEs) thực thi song song, độc lập với nhau và mỗi phần tử xử lí sẽ đọc, xử lí từng kí tự một Mạng tính toán này có thể được minh hoạ như Hình 3.1.
Hình 3.1 Mạng tính toán PEs
Mỗi phần tử xử lí sẽ lần lượt tính điểm cho một ô trên ma trận tính toán động, Hình 3.2 minh hoạ cách hệ thống tính toán ma trận động Theo đề xuất của nhóm tác giả này, mỗi PE sẽ phụ trách tính điểm cho một cột của ma trận và quá trình tính toán được thực hiện nối tiếp theo cơ chế đường ống Áp dụng cơ chế này, giả sử hệ thống bao gồm m đơn vị PE, khi một PE[n] đang tính toán ô của ma trận có địa chỉ [i, j] thì ô có địa chỉ [i-1, j-1] đã được tính toán trước đó bởi PE[n-1] ở (m + 1) chu kỳ trước đó, ô có địa chỉ [i, j-1] đã được tính toán bởi PE[n-1] ở 1 chu kỳ trước đó và ô có địa chỉ [i-1, j] đã được tính toán bởiPE[n] ở m chu kỳ trước đó.
Hình 3.2 Vai trò tính điểm của PE với ma trận Smith-Waterman
Với hướng tiếp cận này, nhóm tác giả đã đề xuất được một mô hình tính toán có độ phức tạp thấp ( ( + )với là chiều dài của chuỗi tham khảo, là chiều dài của chuỗi truy vấn) Ngoài ra, nhóm tác giả cũng nhận thức và chỉ ra được hạn chế của mô hình là với các chuỗi truy vấn có độ dài nhỏ hơn số lương phần tử xử lý, sẽ có một lượng chu kỳ bị lãng phí do quá trình tính toán không sử dụng đến Để khắc phục, nhóm tác giả đề xuất xử dụng các mạch cắt (short-circuit) để đưa kết quả đến bộ quyết định cuối dùng mà không chờ quá trình tính toán kết thúc Hình 3.3 minh hoạ phương pháp sử dụng mạch cắt mà nhóm tác giả đề xuất.
Hình 3.3 Sử dụng mạch cắt để giảm thời gian tính toán.
Hướng tiếp cận thứ nhất này có một số ưu điểm như sau:
- Nhờ vào việc áp dụng mảng systolic, thể hiện cụ thể thông qua việc hiện thực chuỗi các phần tử xử lý liên tục, các ô với vị trí hàng và cột khác nhau trên ma trận tính toán động được tính toán song song nên độ phức tạp tính toán nhỏ, cho thời gian tính toán nhanh.
- Ý tưởng tạo các vết cắt rút ngắn thời gian tính toán, làm cho mô hình tính toán mà nhóm tác giả đề xuất linh hoạt hơn.
Tuy nhiên, thiết kế mà nhóm tác giả đề xuất cũng tồn tại một số hạn chế:
- Việc sử dụng nhiều đơn vị tính toán cho cùng một chuỗi tham khảo/truy vấn yêu cầu nhiều tài nguyên hơn cho bài toán.
- Ý tưởng tạo các vết cắt một mặt tạo ra các đường dây dài làm tăng thời gian trễ chung của hệ thống, mặt khác tạo ra lượng lớn các kết nối làm cho quá trình tổng hợp và định tuyến cho FPGA tăng, đặc biệt nghiêm trọng khi số lượng PE lớn Hơn nữa, thời gian triển khai lớn lại là một hạn chế cố hữu đối với các dự án FPGA so với mô hình tính toán trên GPU hoặc multiCPU Điều này sẽ làm giảm tính ưu việc của hệ thống khi so sánh với các nền tảng tính toán khác.
- Tốn thời gian cho quá trình cài đặt số liệu ban đầu cho các PE.
3.1.2.Hướng tiếp cận thứ hai
Ngoài hướng tiếp cận trên, nhóm tác giả [24] đề xuất một hướng tiếp cận khác đáng lưu ý Nhóm tác giả bài báo [24] đã trình bày một mô hình tăng tốc BWA-MEM trên nền tảng FPGA khác mà trong đó các mảng PEs xử lí ma trận Smith-Waterman trên FPGA được kết nối với mộ bộ phân chia công việc (task distributor) Bộ phân chia công việc sẽ kết nối với bộ nhớ thông qua AXI (Advanced eXtensible Interface) bus Hình 3.4 minh hoạ mô hình mà nhóm tác giả [24] đề xuất Một điểm đáng lưu ý khác của bài báo [24] là nhóm tác giả đã sử dụng phương pháp tổng hợp ở bậc cao (high-level synthesis methodology) để mô tả các kiến trúc phần cứng Điều này giúp cho thời gian của hiện thực giảm đi đáng kể và nhanh hơn rất nhiều.
Hình 3.4 Mô hình hệ thống của hướng tiếp cận thứ 2
Hình 3.5 Kết hợp tính toán trên FPGA với host trong mô hình multithreading
Có ba thành phần chính trong một mảng PE:
1 Bộ phân chia công việc sẽ nhận dữ liệu từ DRAM vào BRAM (Block Random Access Memory) và phân chia dữ liệu vào các PE thông qua các FIFO.
2 Các PE sẽ nhận dữ liệu từ các FIFO Mỗi PE sẽ tính toán một ma trận Smith-Waterman để tối ưu hóa thông lượng (throughput)
3 Các bộ thu thập kết quả (result collector) sẽ nhận dữ liệu được đẩy ngược trở lại FIFO từ các PE và đóng gói các dữ liệu này cho máy chủ (ở đây PC sẽ là máy chủ, FPGA sẽ là thiết bị). Điểm khác biệt lớn nhất của hướng tiếp cận thứ hai này so với hướng tiếp cận thứ nhất là mỗi PE trong mô hình này chịu trách nhiệm xử lý cho toàn bộ ma trận Smith-Waterman Mô hình sử dụng Block RAM để cache cho quá trình trao đổi dữ liệu giữa host và device, cơ chế phân phối công việc cũng như thu thập kết quả làm cho mô hình có khả năng thích ứng cao khi kết hợp với cơ chế multithreading xử lý trên host Hình 3.5 minh hoạ việc kết hợp device và host trong mô hình multithreading.
Bảng 3.2 trình bày khả năng thực hiện song song của các quá trình trong mô hình tính toán được đề xuất.
Bảng 3.2 Khả năng thực thi các bước trong hướng tiếp cận thứ hai
QUÁ TRÌNH TÍN TOÁN KHẢ NĂNG THỰC THI Đọc dữ liệu Tuần tự
Truyền nhận dữ liệu Tuần tự/Song song theo số lượng thiết bị FPGA kết nối vào hệ thống
Phân công việc Tuần tự
Tính toán pe Song song
Ghi kết quả Song song
Thủ thập kết quả Tuần tự
Host đọc kết quả Tuần tự/Song song theo số lượng thiết bị FPGA kết nối vào hệ thống
Ghi kết quả Tuần tự
Hình 3.6 minh hoạ quá trình xử lý của PE trong hướng tiếp cận thứ hai. Điều này làm cho tài nguyên được sử dụng cho quá trình tính toán giảm Tuy nhiên, độ phức tạp của hướng tiếp cận này sẽ là O(n*m) Ngoài ra, việc sử dụng duy nhất một PE để tính toán điểm cho toàn bộ ma trận SW buộc thiết kế phải sử dụng block RAM để lưu trữ các điểm cho từng ô nhớ của ma trận mặc dù các điểm này không xuất hiện trong các kết quả trả về cuối cùng Vì vậy, mặc dù hướng tiếp cận thứ hai này giảm áp lực về tài nguyên sử dụng cho tính toán, nhưng độ phức tạp tăng đăng kể và tăng áp lực về tài nguyên bộ nhớ cần thiết. Ngoài ra, hiện thực bộ phân công việc trên nền tảng FPGA cũng không thật sự hợp lý vì kiến trúc sử dụng cho loại tác vụ này yêu cầu lượng tài nguyên lớn, trong khi thời gian thực thi cao hơn so với khi thực hiện trên các bộ xử lý mục đích chung do không thể thực hiện song song và tần số hoạt động của các chip FPGA cũng không cao.
Hình 3.6 Số chu kỳ thực hiện của hướng tiếp cận thứ hai
Tóm lại, hướng tiếp cận thứ hai được nhóm tác giả [24] đề xuất có một số điểm ưu việc như sau:
- Mô hình đơn PE giảm tài nguyên sử dụng cho tính toán.
- Sử dụng nhiều Block RAM và FIFO để cache giữa các khối, giúp giảm thời gian thực thi của qua trình trao đổi dữ liệu giữa host và device và đồng bộ việc thực hiện giữa các khối.
- Cung cấp các cơ chế phân công việc và thu thập dữ liệu ở mức phần cứng, giảm chi phí cho giai đoạn phát triển phần mềm giao tiếp với FPGA.
- Việc sử dụng ít tài nguyên cho PE cho phép triển khai nhiều PE trên một diện tích nhỏ, phù hợp cho các bài toán cần tính toán song song nhiều cặp tham khảo/truy vấn.
- Sử dụng phương pháp tổng hợp ở bậc cao (high-level synthesis methodology) để mô tả các kiến trúc phần cứng, giúp nhóm tác giả có thể triển khai thiết kế phức tạp và nhanh chóng đánh giả ưu và nhược điểm trong giai đoạn tối ưu.
- Khả năng thích ưng với mô hình multithreading thực thi ở host.
Các hạn chế tồn tại trong thiết kế này có thể liệt kê như sau:
Đánh giá và điều chỉnh giải thuật
Như đã đề cập ở các chương trước, giải thuật BWA-MEM được thiết kế để thực thi tốt trên các hệ thống song song như GPU hay các hệ thống đa xử lý. Giải thuật 3.1 trình bày giải thuật BWA-MEM gốc giai đoạn seed-extension. Một cách tự nhiên, các quá trình song song được hiện thực trên GPU (hay FPGA) sẽ tập trung tối ưu hoá các vòng lặp (từ dòng 4 đến 24).
Giải thuật 3.1 Giải thuật tính điểm nguyên thuỷ
Khi hiện thực bài toán trên GPU (hay hệ thống nhiều CPU), mỗi thread sẽ đảm nhiệm tính toán các phần tử trên cùng một hàng của ma trận Hình 3.7 minh hoạ cách tính toán ma trận Smith-Waterman bằng nhiều thread Bằng cách này,hàng dưới sẽ tính toán chậm hơn hàng trên một chu kỳ T, nhận kết quả đầu ra của hàng trên và sử dụng lại chính kết quả của cột mà thread mỗi hàng đã tính phía trước để tính toán cho phần tử ở cột tiếp theo Các nhân GPU (hay CPU) thực chất là một bộ xử lý độc lập và có khả năng tính toán tuần tự hiệu quả ở tần số cao Vì vậy mà việc chuyển đổi Giải thuật 3.1 để tính toán song song trên loại bộ xử lý này tương đối đơn giản và tự nhiên Nội dung của vòng lặp từ dòng
9 đến dòng 22 của Giải thuật 3.1 để tính điểm cho mỗi ô trong ma trận Smith- Waterman, các lệnh trong thân vòng lập được tính toán tuần tự qua các bước nạp lệnh, giải mã, nạp dữ liệu, tính toán và ghi ngược kết quả Sau mỗi vòng lặp, nhân đơn GPU (hay CPU) phụ trách thread bắt đầu tính toán ô tiếp theo trển cùng một hàng của ma trận Các nhân GPU (hay CPU) khác nhau tiến hành trao đổi dữ liệu thông quá cơ chế bộ nhớ chia sẽ, và chính cơ chế này tạo ra nút thắt trong việc tính toán Do các bộ nhớ chia sẽ khó đáp ứng được yêu cầu truy xuất đồng thời dữ liệu với khối lương lớn hoặc tốn thời gian sao chép dữ liệu giữa các bộ nhớ cục bộ.
Hình 3.7 Tính điểm ma trận Smith-Waterman trên GPU
Khác với các loại bộ xử lý đa dụng (CPU hay GPU), các kiến trúc tính toán hiện thực trên FPGA hướng đến tính toán chuyên biệt (hướng đến ứng dụng) nên cần ít chu kỳ hơn cho quá trình toán do chỉ được thiết kế để thực hiện tính toán một vài tác vụ cụ thể Vì vậy, mặc dù có tần số hoạt động thấp hơn, các bộ xử lý chuyên biệt được thiết kế trên nền tảng FPGA vẫn có sức cạnh tranh so với các bộ xử lý đa dụng Bên cạnh, việc tổ chức và sử dụng bộ nhớ trên FPGA cũng linh hoạt và hiệu quả hơn nếu so với việc sử dụng bộ nhớ chia sẽ, và thậm có thể chuyển đổi giữa việc sử dụng bộ nhớ và thanh ghi để tăng hiệu suất tính toán song song nếu cần thiết Tuy nhiên, với tần số hoạt động thấp hơn, các thiết kế trên FPGA chỉ thực sự hiệu quả khi giải thuật có mức độ tính toán song song cao ở mức lệnh Giải thuật 3.1 chỉ cung cấp mức độ song song ở mức khối, trong khi các lệnh từ dòng 10 đến dòng 21 có mức độ phụ thuộc cao, điều này sẽ làm giảm mức độ ưu việt của giải thuật khi hiện thực trên nền tảng FPGA Để hiện thực Giải thuật 3.1, có hai hướng tiếp cận:
- Chia nhỏ các tác vụ, tác vụ phụ thuộc sẽ thực hiện ở chu kỳ sau tác vụ cần thực hiện trước nó Khi áp dụng hướng tiếp cận này, cần tối thiểu chu kỳ để hoàn thành mỗi vòng lập của giải thuật này Hình 3.8 minh hoạ việc tổ chức thực hiện giải thuật Dễ dàng nhận thấy cần tối thiểu 3 chu kỳ (hay 3 bước) để hoàn thành quá trình tính toán trên vòng lặp khi hiện thực giải thuật nguyên thuỷ trên FPGA Tuy nhiên, cần lưu ý là các phép toán Max, hay Calculate trong giải thuật là các phép tính có nhiều toán tử (trên 2 toán tử) sẽ cho tốc độ thực thi rất thấp nếu chỉ thực hiện trên cùng một chu kỳ, từ đó làm giảm tần số hoạt động chung của hệ thống. Việc tiếp tục chia nhỏ các tác vụ giúp tăng tốc độ xử lý của hệ thống nhưng đồng thời cũng làm tăng số chu kỳ thực hiện Vì lý do đó, theo Bảng 3.3, ta nhận thấy tần số hoạt động của hiện thức rất thấp, chỉ đạt tối đa 133MHz khi sử dụng lập trình động trên nền tảng FPGA.
Hình 3.8 Quy trình thực hiện giải thuật theo hướng tiếp cận thứ nhất
- Hướng tiếp cận thứ hai là xây dựng thiết kế để thực hiện tất cả các tác vụ tuần tự trong cùng một chu kỳ, phương pháp này sẽ cho tần số hoạt động rất thấp nên không được xem xét trong các nghiên cứu hiện nay.
Các cơ sở lý thuyết vừa nêu chứng minh rằng giải thuật nguyên thuỷ không phù hợp khi hiện thực trên nền tảng FPGA Trong khi đó, các nghiên cứu hiện tại trên thế giới vẫn hiện thực các thiết kế dựa trên giải thuật gốc, các cải tiến về kiến trúc không ngừng được đề xuất nhưng không làm thay đổi đáng kể tần số hoạt động Qua quá trình đánh giá và phân tích, chúng tôi đề xuất một giải thuật BWA-MEM cải tiến, cung cấp một hướng tiếp cận mới so với giải thuật gốc, góp phần cho việc thiết kế BWA-MEM trên nền tảng FPGA được tự nhiên và hiệu quả hơn. Ở giải thuật được điều chỉnh nay (Giải thuật 3.2), chúng tôi hướng đến việc nâng cao khả năng hoạt động song song của giải thuật 1 nhằm tận dụng được sức mạnh của nền tảng FPGA Việc cải thiện này được thực hiện dựa trên triết lý giảm thiểu sự phụ thuộc về dữ liệu giữa các phép tính và bẻ nhỏ các phép tính phức tạp thành các thành phần nguyên tố, sau đó phân phối chúng một các hợp lý đến các tầng pipeline khác nhau Ở giải thuật 1, ta nhận thấy các giá trị của H, E, F chỉ được tính toán sau khi bộ ba giá trị này ở chu kỳ trước đó được tính toán hoàn tất, hay nói cách khác, việc tính toán H, E, F có sự phụ thược dữ liệu nặng Bên cạnh đó, hàm tìm giá trị cực đại (Max) là sự kết hợp của hai bước tính toán cơ bản (tìm giá trị cực đại khi so sánh cặp thứ nhất, sau đó mới tìm giá trị cực đại giữa kết quả với tham số còn lại) Các phép toán kết hợp sẽ gây ra độ trễ lớn (combination delay) khi tổng hợp trên FPGA, từ đó làm giảm tần số chung khi triển khai mô hình pipeline Trong khi đó, ở giải thuật 2 của chúng tôi đề xuất, hàm Max được loại bỏ bằng cách thay thế bằng nhiều phép tính giả định Điều này cho phép tất cả các phép tinh trên H, E, F được tiến hành mà không cần phải chờ điều khiển của hàm max trước đó Các phép tính giả định này dựa trên các tình huống (H là cực đại), (E là cực đại) và (F là cực đại) để đưa ra các giá trị tương ứng Các giá trị này sẽ được lựa chọn ở hàm Select trong tầng pre-calculate Khác với hàm Max, hàm Select có thể dễ dàng tổng hợp trực tiếp ra LUT, qua đó mà khai thác được tốc độ tối đa của kiến trúc FPGA đang sử dụng Ngoài ra, việc giao tiếp với bộ nhớ của giải thuật 1 của chưa thực sự hiệu quả Giải thuật 1 chỉ cập nhật bộ nhớ khi toàn bộ giá trị trên một hàng của ma trận tính điểm được hoàn thành Cần nhớ rằng kiến trúc bộ nhớ chỉ có thể cập nhật 1 ô nhớ sau 1 chu kỳ, điều đó có nghĩa là đỗi với 1 chuỗi Qstring có độ dài là qlen, cần qlen chu kỳ để tính toán đầy đủ điểm số cho hàng, và thêm qlen chu kỳ để ghi kết quả của hàng vào bộ nhớ Trong khi ở giải thuật 2, chức năng ghi vào bộ nhớ được phân tán trong từng chu kỳ Nhờ đó mà việc ghi vào bộ nhớ chỉ tốn qlen + 1 chu kỳ so với giai thuật 1 Việc chia quá trình ghi bộ nhớ về từng chu kỳ đồng thời cách ly hoàn toàn sự phụ thuộc của các vòng lặp giữa các chu kỳ tính toán trên cùng một hàng, từ đó tạo một môi trường tự nhiên để hình thánh các đơn vị chức năng độc lập dựa trên từng chu kỳ khi triển khai giải thuật xuống nền tảng FPGA Ý tưởng hiện thực và hiện thực cụ thể của giải thuật 2 sẽ được trình bày ở những phần tiếp theo của báo cáo.
Giải thuật 3.2 Giải thuật đề nghị dựa trên giải thuật nguyên thuỷ
THIẾT KẾ VÀ HIỆN THỰC LÕI SEED EXTENSION
Kiến trúc mảng systolic
Trong các kiến trúc máy tính song song, một mảng systolic là một mạng đồng nhất gồm các đơn vị xử lý dữ liệu được liên kết chặt chẽ (DPU) được gọi là các ô hoặc các nút Mỗi nút hoặc DPU độc lập tính toán một phần kết quả của bài toán với dữ liệu đầu vào nhận được từ các lân cận ngược dòng của nó (xem xét trong mô hình dòng dữ liệu), lưu trữ kết quả trong chính nó và truyền nó lân cận xuôi dòng.
Không giống như kiến trúc Von Neumann hay Havard, mà tiến trình thực thi chương trình tuân theo tập các lệnh được lưu trong bộ nhớ chung, được xử lý và giải trình tự dưới sự kiểm soát của bộ đếm chương trình (PC), các nút riêng lẻ trong một mảng systolic thu được tích cực khi có sự xuất hiện của một dữ liệu mới và luôn xử lý dữ liệu này theo cùng một cách như nhau ở tất cả các nút.Trong thực tế, việc xử lý trong mỗi nút có thể được thực hiện một khối có chức năng xác định hoặc khối khả lập trình, trong trường hợp đó các nút có thể được lập trình để hoạt động như một bộ xử lý đa dụng Hình 4.1 minh hoạ hoạt động của một mảng systolic.
Hình 4.1 Mô hình tính toán mảng systolic
Một phần (hoặc toàn bộ) đầu vào của các nút ở hàng và cột đầu tiên nhận các giá trị khởi động Mỗi DPU thực hiện tính toán độc lập và song song, kết quả tính toán của mỗi DPU được nhận như giá trị đầu vào cho DPU liền kề kết tiếp Kết quả cuối cùng là giá trị đầu ra cuối cùng trong dòng chảy dữ liệu.
Trong bối cảnh tính toán song song ngày càng trở nên phổ biến và chứng tỏ được tính hiệu quả của nó trong tính toán hiệu năng cao, kiến trúc mảng systolic được dùng phổ biến trong các thiết trong nhiều lĩnh vực như sinh học,nhận dạng và xử lý ảnh, trí tuệ nhân tạo, … Và đặc biệt, kiến trục mảng systolic cung cấp một cơ chế tự nhiên để hiện thực phương pháp lập trình động trên các kiến trúc phần cố định cũng như khả tái cấu hình.
Kiến trúc tổng quát
4.2.1.Yêu cầu của hệ thống
Trong thiết kế mà chúng tôi đặt ra, hệ thống so trùng chuỗi dựa trên giải thuật BWA-MEM là tăng tốc gia đoạn seed extension trên nền tảng phần cứng tái cấu hình FPGA, cần thoả mãn những yêu cầu sau:
- Tần số hoạt động cao.
- Sử dụng cơ chế đường ống để tăng băng thông của hệ thống.
- Sử dụng cân đối và hiệu các tài nguyên của hệ thống.
- Có khả năng mở rộng và thu hẹp phù hợp với yêu cầu bài toán.
- Thời gian triển khai nhanh, giảm chi phí phát triển cho tổng thể dự án.
- Cho phép người dùng cấu hình một phần đặc tính của hệ thống trong bài toán so trùng chuỗi DNA.
Hình 4.2 minh hoạ mô hình tổng quát của hệ thống.
Hình 4.2 Kiến trúc tổng quát của hệ thống
Về cơ bản, hệ thống được tổ chức theo mô hình datapath-controller đảm bảo khả năng hoạt động đồng bộ và tính ổn định của hệ thống Với mô hình này, kiến trúc của hệ thống phải bao gồm 4 phần chính:
1 Đường dữ liệu(datapath) là nơi tiến hành hoạt động Datapath nhận dữ liệu đầu vào là các ký tự trong chuỗi DNA đã được xử lý thô từ bộ nhớ chia sẻ thông qua bộ nhớ cục bộ và sau đó tính điểm cuối cùng của quá trình so trùng Sau đó, Datapath ghi lại điểm số cuối cùng đó vào bộ nhớ chia sẻ trước khi bắt đầu công việc tiếp theo Datapaths hoạt động tuần tự theo dòng dữ liệu và song song theo cơ chế đường ống trong cấu trúc nội của nó Tất cả các hành vi của datapath được đảm bảo tính đồng bộ cao dưới sự trợ giúp của bộ điều khiển.
2 Bộ điều khiển (controller) đóng góp một vai trò quan trọng trong hệ thống Nó đảm bảo các thành phần khác hoạt động đúng chức năng, ổn định và đồng bộ Các thành phần chịu sự kiểm soát của bộ điều khiển bao gồm:
- Các cơ chế giao tiếp giữ các khối giao tiếp được tích hợp vào hệ thống với bộ nhớ chia sẽ và tập các thanh ghi điều khiển.
- Datapath và bộ nhớ cục bộ của chúng.
- Cơ chế kiểm soát việc đọc, ghi dữ liệu.
- Giao thức giữa các đơn vị chức năng. Để thoả mãn yêu cầu về thời gian triển khai, bộ điều không được tổ chức tập trung mà có thể bị phân rã thành nhiều bộ phận nhỏ và phân phối đến các khu vực chịu sự quản lý trực tiếp về chức năng Hướng tiếp cận này giúp các khối chức năng liên quan được tổ chức gần nhau, hạn chế đường dây dài và đơn giản quá trình định tuyến.
Ngoài ra, các cơ chế điều khiển phải được tinh giản tối đa, đảm bảo tiêu chí hệ thống hoạt động ổn định với số lượng tín hiệu điều khiển tối thiểu Hướng tiếp cận này giúp cân bằng chi phí giữa điều khiển và thực thi, giúp sử dụng hiệu quả tài nguyên cho hoạt động tính toán.
3 Các khối nhớ lưu trữ dữ liệu (memory) đầu và từ hai chuỗi tham khảo/chuỗi truy vấn được sử dụng cho quá trình tính toán Ngoài ra, một phần bộ nhớ cũng được sử dụng để lưu trữ các kết quả trung gian của quá trình tính toán Hình 4.3 minh hoạ tổng quan tổ chức bộ nhớ trong thiết kế.
Hình 4.3 Giao tiếp giữa bộ nhớ và hệ thống
Có 3 loại bộ nhớ cần thiết trong thiết kế:
- Bô nhớ cục bộ: được sử dụng để lưu trữ các dữ liệu cần thiết cho quá trình tính toán cục bộ ở mỗi đơn vị PE hoặc lưu trữ các giá trị trung gian của quá trình tính toán Đặc tính của loại dữ liệu này là có số lượng không nhiều và kích thước xác định, có thể yêu cầu truy xuất đồng loạt nên thanh ghi là lựa chọn phù hợp để hiện thực bộ nhớ cục bộ Việc sử dụng Block RAM có thể đáng kể lượng tài nguyên sử dụng nhưng sẽ đánh đổi bằng số chu kỳ truy xuất dữ liệu
- Bộ nhớ chia sẽ (ghi bởi người dùng – đọc bởi hệ thống): được sử dụng để lưu trữ các dữ liệu là ký tự của chuỗi truy vấn Đặc tính của chuỗi truy vấn trong quá trình tính toán ma trận Smith-Waterman là đọc tuần tự theo mỗi chu kỳ và số lượng ký tự là khá lớn, vì vậy Block RAM rất phù hợp để lưu trữ loại dữ liệu này.
- Bộ nhớ chia sẽ (ghi bởi hệ thống – đọc bởi người dùng): được sử dụng để lưu trữ dữ liệu là kết quả cuối cùng của chuỗi tính toán Đặc tính của loại dữ liệu này là có số lượng ít và có thể được yêu cầu ghi đồng thời nên thanh ghi là lựa chọn phù hợp để lưu trữ.
4 Giao diện của hệ thống(interface) có nhiều tín hiệu điều khiển, dữ liệu khởi tạo từ người dùng cần cung cấp cho hệ thống cũng như kết quả trả về mà hệ thống trả về sau quá trình tính toán Tuỳ thuộc vào giao thức kết nối hệ thống so trùng chuỗi vào hệ thống chung (UART, Ethernet, AXI, …) mà các tín hiệu điều khiển khác sẽ được thêm vào Tuy nhiên, về cơ bản, giao diện của hệ thống cần tối thiểu 4 tín hiệu:
- clk: cung cấp xung hoạt động cho hệ thống.
- rst: tín hiệu khoả tạo các thông số cho tín hiệu điều khiển hệ thống, một vài thanh ghi dữ liệu cũng được khởi tạo giá trị ban đầu nếu cần thiết.
- start: tín hiệu cho phép hệ thống bắt đầu tính toán.
- done: tín hiệu thông báo từ hệ thống, quá trình tính toán hoàn tất, cả kết quả đã được ghi vào bộ nhớ kết quả và người dùng có thể đọc chính xác kết quả từ bộ nhớ này.
Trong thiết kế của chúng tôi, nhằm hướng đến mục tiêu tối ưu và tăng tốc hệ thống, cơ chế pipeline được áp dụng ở nhiều cấp độ, bao gồm pipeline theo khối và pipeline theo các đơn vị tính toán.
Khi xây dựng cơ chế pipeline theo khối, chúng tôi xem các phần tử tính toán (PE) như một đơn vị tính toán đơn chu kỳ và hoạt động theo đường ống. Hình 4.4, Hình 4.5 và Hình 4.6 minh hoạ cơ chế hoạt động pipeline ở mức độ hệ thống.
Hình 4.4 Pipeline trên một PE qua các chu kỳ
Cơ chế tính toán và cấu hình la truyền
Tính toán lan truyền là đặc trưng chủ đạo của mô hình tính toán động.Tương tự với mô hình tính toán MISD, dữ liệu làn lượt được chuyển tiếp qua nhiều khối tính toán trước khi kết quả cuối cùng được tạo ra Trong trường hợp các phần tử xử lý được thiết kế khả lập trình, mô hình tính toán động có vai trò tương tự với một bộ xử MISD Hình 4.8 minh hoạ sự tương quang trong hoạt động của một bộ xử lý MISD và mô hình lập trình động (DP) Phương pháp tính toán dựa trên lập trình mở ra khả năng hiện thực cao các kiến trúc trên nền tảngFPGA để giải quyết nhiều bài toán Bên cạnh đó, các kiến trúc được thiết kế trên nền tảng lập trình động cũng dễ dàng áp dụng cơ chế đường ống ở nhiều cấp độ khác nhau, góp phần tăng băng thông và tần số hoạt động của hệ thống.
Hình 4.8 So sánh mô hình MISD và DP
Bên cạnh mô hình cơ bản như trình trong Hình 4.8, tính toán lan truyền còn được phát triển thành nhiều biến thể khác nhau, trong đó Hình 4.9 minh hoạ một thiết kế tính toán lan truyền với mật độ cao.
Hình 4.9 Mảng systolic có mật độ giao tiếp caoTrong mô hình mà chúng tôi đề xuất, tính toán lan truyền được hiện thực dưới hình thức mảng systolic tương tự như hướng tiếp cận thứ nhất được trình bày ở chương trước Tuy nhiên, các vết cắt sẽ bị loại bỏ triệt tiêu các đường dây dài Thay vào đó, chúng tôi đề xuất cơ chế cấu hình lan truyền sẽ được trình bày trong mục sau Hình 4.10 minh hoạ tổ chức mảng systolic trong mô hình đề xuất.
Hình 4.10 Áp dụng mảng systolic vào hệ thống 4.3.2.Cấu hình lan truyền
Trong quá trình nghiên cứu đề tài, chúng tôi nhận thấy các nhóm nghiên cứu trên thế giới hiện nay chỉ tập trung vào cải tiến giải thuật mà không có bất kỳ nổ lực nào trong việc cải tiến giai đoạn cấu hình hệ thống Bước cấu hình thường được tiếp cận theo hai hướng tiếp cận sau:
- Host sẽ gửi các tín hiệu cấu hình đến từng đơn vị chức năng hoặc tất cả các đơn vị chức năng tại cùng thời điểm Hình 4.11 minh hoạ phương pháp cấu hình này Ưu điểm của phương pháp này là tất cả các phần tử có thể được cấu hình tại cùng một thời điểm và trong một chu kỳ duy nhất Hệ thống có tính sẵn sàng cao Hạn chế là khi các phần tử bộ trí xa nguồn cấu hình sẽ tạo ra các đường dây dài.
Hình 4.11 Cấu hình theo phương pháp truyền thống
- Để giảm độ trễ trên các đường dây, các lớp thanh ghi sẽ được bổ sung.Lục này, việc cấu hình sẽ cần nhiều chu kỳ hơn và tăng áp lực lên chi phí quản lý và định tuyến Hình 4.12 minh hoạ các tiếp cận cấu hình thứ hai.
Hình 4.12 Cấu hình theo phương pháp truyền thống kết hợp thanh ghi đệm
Hai cách tiếp cận trên đều có ưu và nhược điểm riêng, dưa trên những ưu và nhược điểm đó, chúng tôi sẽ đề xuất một phương pháp cấu hình mới ưu việc hơn Tuy nhiên, trước khi đưa ra đề xuất, chúng tôi sẽ phân tích đặc tính về tính sẵn sàng của hệ thống so trùng chuỗi để làm rõ tính phù hợp của thiết kế Dựa vào các yêu cầu độ sẵn sàng, chúng tôi phân các trong cùng một chu kỳ thành 3 nhóm Hình 4.13 minh hoá phân nhóm PE theo yêu cầu về tính sẵn sàng.
Hình 4.13 Phân nhóm PE dựa trên yêu cầu về dữ liệu theo thời gian
- Nhóm 1: Nhóm PE đã được cấu hình và sẵn sàng hoạt động.
- Nhóm 2: Nhóm PE cần được cấu hình để hoạt động ở chu kỳ tiếp theo.
- Nhóm 3: Nhóm PE chưa cần cấu hình vì chưa hoạt động ở chu kỳ tiếp theo.
Thông qua quá trình phân nhóm này, chúng tôi kết luận trạng thái sẵn sàng của PE sẽ chuyển tuần tự theo thứ tự chưa cần cấu hình, cần cấu hình, sẵn sàng theo chu kỳ thời gian Vì vậy mà việc cấu hình tất cả các phần tử xử lý này tại cùng một thời điểm là không cần thiết. Đặc điểm thứ hai cần nhắc đến là điểm khởi của giải thuật BWA-MEM là sự kết hợp giữa hai phương pháp Smith-Waterman và Needleman-Wunsch. Bảng 4.1 so sánh điểm khác biệt và tương đồng giữa BWA-MEM, Smith- Waterman và Needleman-Wunsch.
Bảng 4.1 so sánh giải thuật Smith-Waterman, BWA-MEM, Needleman-
BWA-MEM Needleman-Wunsch Điểm khởi động
Giới hạn 0 0 không có giới hạn
Như vậy, giải thuật BWA-MEM có giá trị khởi động được tính toán tích luỹ (giá trị khởi động của giải thuật Smith-Waterman luôn là 0) Tuy nhiên giá trị khởi động này luôn phải lớn hơn hoặc bằng không (giả thuật Needleman-Wunsch chấp nhận các giá trị khởi động âm) Trong hầu hết các thiết kế hiện này, các giá trị khởi động được tính toán trên host và được nạp vào device trước khi quá trình tính toán bắt đầu Trong thiết kế này, chúng tôi xem xét quá trình tính toán cấu hình và cấu hình như một toán tính toán động và tích hợp vào các phần tử xử lý Hình 4.14 minh hoạ cơ chế cấu hình lan truyền mà chúng tôi đề xuất.
Giao tiếp với host
Lõi (kernel) tính toán quá trình seed extension được hiện thực trên nề tảng FPGA có lưu đồ thực hiện tương tự với khi hiện thực bài toán trên GPU Quá trình thực hiện và cả tiến về thời thực thi được minh hoạ trong Hình 4.15 Các quá trình seed và extension được thực hiện gần như song song giữa các thread là nguyên nhân chủ yếu quyết định đến sự vượt trội khi so sánh mô hình đơn CPU và CPU kết hợp với FPGA.
Lõi tính toán hiện thực giao tiếp với CPU thông qua một giao thức giao tiếp Trong phạm vi đề tài này, chúng tôi để mở khả năng tích hợp giao tiếp để người dùng hoặc nhà phát triển sẽ quyết định lựa chọn giao thức phù hợp với hoàn cảnh cụ thể Các thí nghiệm và đánh giá được trình ở chương tiếp theo sẽ sử dụng giao thức AXI để tiến hành thí nghiệm hiệu năng của hệ thống.
Hình 4.15 So sánh tính toán giải thuật BWA-MEM trên CPU và kết hợp CPU
Thiết kế chi tiết và hiện thực
Hệ thống tổng thể (module top) bao gồm nhiều thành phần được tổ chức thành hai nhóm: Datapath và Controller và khối bộ nhớ Hệ thống bus giao tiếp không phải là một thành phần của hệ thống Hình 4.16 minh hoạ mô hình tổng thể của hệ thống.
Là tập hợp các phần tử tham có chức năng tính toán và tạo ra kết quả cuối cùng của bài toán Các đơn vị này có thể được liệt kê như sau:
- PE (Processing element): là các phần tử tham gia trực tiếp vào quá trình tính điểm cho các ô của ma trận Smith-Waterman Kiến trúc của thành phần này được thiết kế để thực giải thuật BWA-MEM giai đoạn tính điểm
- PR (Position record): các phần tử ghi nhận giá trị cực đại cục bộ Khi một giá trị vừa được tính toán được xác định là giá trị cực đại (cho đến thời điểm hiện tại), vị trí của ô nhớ có giá trị vừa được tính toán đoán sẽ được ghi nhận Giá trị cực đại cục bộ và vị trí ô nhớ có giá trị này được ghi nhận truyền cho phần tử PR tiếp theo trong dòng chảy dữ liệu để tiếp tục quá trình ghi nhận giá trị cực đại Dữ liệu đầu vào của phần tử (phần tử PR thứ n hoạt động tại thời điểm T) đến từ và Phần tử PR đầu tiên nhận giá trị cực đại là 0 ở vị trí 0.
- SC (Scoring circuit): hoạt động tương tự như PR nhưng phần tử SC đảm nhận vai trò tính toán điểm số cuối cùng của ma trận PR nhận dữ liệu từ phần tử PR trước nó nên chỉ có thể xác định giá trị cực đại tại một hàng của ma trận (Smith-Waterman) SC nhận giá trị từ phần tử PR cuối cùng, nghĩa là nó nhận được giá trị cực đại tại hàng đang được tính toán, đồng thời nhận giá trị cực đại của hàng trước đó (được tính toán tại thời điểm
T – M, với M là số lượng các phần tử PE có trong hệ thống) được lưu trữ bên trong SC Bằng cách này, SC tìm được giá trị cực đại giữa các hàng và ghi nhận vị trí của ô nhớ chứa giá trị đó.
Hình 4.16 Kiến trúc chi tiết Module top-level của hệ thống
Hoạt động của datapath trong hệ thống tổng thể có thể được tóm tắt như lưu đồ Hình 4.17.
Hình 4.17 Lưu đồ thực thi của hệ thống
1 Khi có tín hiệu bắt đầu, kí tự ở ô nhớ i (bắt đầu từ 0) của chuỗi target(chuỗi cần so trùng) từ bộ nhớ chia sẻ:
- Trường hợp 1: kí tự nạp là mã EMPTY (rỗng), Controller sẽ sinh ra tín hiệu điều khiển gây bất hoạt lan truyền lên các phần tử tính toán và khối nạp từ bộ nhớ Quá trình bất hoạt lan truyền được minh hoạt trong Hình 4.18.
- Trường hợp 2: kí tự nạp là mã khác EMPTY, Controller sẽ sinh ra tín hiệu điều khiển kích hoạt lan truyền các phần tử tính toán Quá trình kích hoạt lan truyền được minh hoạ trong.
Hình 4.18 Tác động của cơ chế cấu hình lan truyền lên các PE
2 Kí tự được nạp lần lượt đi qua các khối PE để tính điểm tích luỹ Các khối PR nhận điểm được tính từ PR để xác định giá trị cực đại và ghi nhận vị trí của giá trị cực đại.
3 Khi kí tự được nạp đã được tính toán hoàn tất bởi tất cả các PE (tính toán hoàn tất một hàng của ma trận Smith-Waterman), kết quả từ bộ PE cuối cùng sẽ được chuyển sang SC để so sánh giá trị cực đại giữa các hàng và ghi nhận vị trí nếu có thay đổi.
4 Tăng giá trị con trỏ ô nhớ để nạp ký tự target mới và bắt đầu tính toán hàng tiếp theo.
Controller, ngoài chức năng phản hồi và tác động đến các hoạt động của thệ thống thông qua các tín hiệu điều khiển Hình 4.16 minh hoạt kiến trúc chi tiết của hệ thống, trong đó, Controller được xem là tập hợp các khối thực hiện chức năng điều khiển, có thể chia ra thành hai loại:
- System controller: sinh ra các tín hiệu điều khiển phản hồi lại hoạt động của hệ thống System controller chịu trách nhiệm đảm bảo hoạt động của các khối được diễn ra đúng đắn và đồng bộ Có hai nhóm tín hiệu điều khiển được sử dụng là nhóm các tín hiệu kích hoạt và nhóm tín hiệu thiết lập Có hai phản hồi từ hệ thống dẫn đến quyết định sinh ra tính hiệu kích hoạt cho Controller: Controller bất hoạt hệ thống khi phát hiện ký tự target truyền vào là ký tự EMPTY; Controller bất hoạt hệ thống khi số ký tự truyền vào đạt giới hạn được thiết lập Tác động của phản hồi từ ký tự EMPTY đã được minh hoạ trong Hình 4.18 Tác động của cơ chế cấu hình lan truyền lên các PE Tác động của loại phản hồi thứ hai được minh hoạ trong hình Hình 4.19.
Hình 4.19 Hoạt động của dòng dữ liệu với giới hạn số lần thực thi
- Trong ví dụ này, cấu hình hệ thống 4 PE và hạn chuỗi target vào có độ dài tối đa là 3 Khi đã nạp đủ 3 ký tự từ bộ nhớ chia sẽ, Controller sinh ra tín hiệu bất hoạt gây bất hoạt lan truyền trong hệ thống các phần tử tính toán Sau khi bất, Controller chờ cho đến khi có tín hiệu khởi động mới Các cơ chế khởi động sẽ trình bày trong phần giao thức hoạt động.
Cơ chế khởi động quá trình thết lập các thông số ban đầu của hệ thống thông qua tín hiệu initcũng hoạt động tương tự như quá trình bất hoạt được điều khiển bởi System Controller Đặc tính của cấu hình lan truyền làm cho Controller chỉ tác động đến phần tử tính toán đầu tiên trong dòng dữ liệu Do vậy, khi tổng hợp mạch, mạch tổ hợp phụ trách điều khiển các phần tử tính toán sẽ đặt gần với phần tử tính toán đầu tiên và không tạo ra các đường dây dài đến các phần tử khác Hình 4.20 so sánh sự xếp đặt controller và cái khối xử lý trong mô hình truyền thống và mô hình cấu hình lan truyền.
Hình 4.20 So sánh phương pháp cấu hình truyền thống và cấu hình lan truyền
- Communication controller: như đã đề cập, chúng tôi cung cấp một giao tiếp mở Tuỳ vào điều kiện và hoàn cảnh cụ thể mà người dùng/nhà phát triển có thể tích hợp khối giao tiếp cụ thể vào hệ thống Việc xây dựng một cơ chế giao tiếp với nhiều giao thức khác nhau mà vẫn đảm bảo hệ thống hoạt động ổn định và đồng bộ cần phải có sự hỗ trợ của một giao thức đáng tin cậy Giao thức giao tiếp và vận hành hệ thống sẽ được trình bày trong phần thiết kế giao thức.
Hình 4.21 trình bày giao diện khối tổng thể sau khi được phân tích bằng phần mềm Vivado.
Hình 4.21 Sơ đồ các cổng vào ra của module top-level Bảng 4.2 mô tả chức năng của mỗi chân vào/ra của khối tổng thể.
Bảng 4.2 Các cổng vào ra của module top
Tên tín hiệu Điều hướng Độ rộng (bits)
Chức năng ap_clk nhập
(điều khiển) 1 Cung cấp clock đầu vào của hệ thống ap_rst nhập
(điều khiển) 1 Reset ap_start nhập
(điều khiển) 1 Cho phép hệ thống hoạt động ap_done xuất
(điều khiển) 1 Thông báo kết quả tính toán hoàn tất ap_continue nhập
(điều khiển) 1 Cho phép hệ thống tiếp tục hoạt động ap_idle xuất
Thông báo hệ thống đang ở trạng thái chờ ap_ready xuất
Thông báo hệ thống sẵn sàng cho lần hoạt động tiếp theo ctrl_init_V nhập
Bắt đầu quá trình cấu hình thông số ban đầu cho hệ thống target_V_address0 xuất 5 Địa chỉ của bộ nhớ chứa chuỗi cần so trùng target_V_ce0 xuất 1
Kết chương
Chương này chúng tôi trình bày thiết kế tổng quát, thiết kế chi tiết các module trong khối tính toán cho giai đoạn SEED Extension cũng như hiện thực của nó trên FPGA Khối tính toán được thiết kế và hiện thực trong chương này sẽ được kiểm thử và đánh giá kết quả trong chương tiếp theo.
TÍCH HỢP, KIỂM THỬ VÀ ĐÁNH GIÁ HỆ THỐNG
Môi trường thí nghiệm
Chương trình BWA-MEM sẽ được chạy trên bộ xử đa dụng và lấy số liệu về thời gian thực thi trên bộ xử lý đa dụng Bộ xử lý có 4 nhân vật lý với 4 luồng xử lý, hệ thống RAM 16 GB, cho băng thông tối đa là 25.6 GB/s.
Sử dụng chip FPGA Zynq-7000 SoC XC7Z020-CLG484-1 để hiện thực lõi phần cứng SEED Extension:
Zynq-7000 là chip Xilinx thế hệ thứ 7, với nhiều cải tiến lớn so với các chip FPGA thế hệ trước đó Các chip thế hệ thứ 7 cho tần số cao hơn nhiều lần với lượng tài nguyên và chi phí thấp hơn Ngoài ra, các công cụ đi kèm với chip thế hệ thứ 7 theo một triết lý phát triển mới, giúp nhà thiết kế có thể dễ dàng hiện thực các thiết kế phức tạp Bên cạnh đó, đi kèm Zedboard là bản quyền phần mềm Vivado và Vivado HLS (chỉ kích hoạt cho dòng XC7Z020) Vì vậy,Zedboard là một kit phù hợp để phát triển các ứng dụng trên FPGA với chi phí thấp.
Mô phỏng cơ chế điều khiển hệ thống
Chúng tôi tiến hành các mô phỏng dựa trên hệ thống đã thiết kế và hiện thực ở chương trước Quá trình mô phỏng sẽ làm rõ cơ chế hoạt động bên trong hệ thống mà việc chạy thực tế sẽ khó có thể thấy được Hình 5.1 minh hoạ tổng thể hoạt động của hệ thống khi mô phỏng.
Hình 5.1 Hoạt động của hệ thống - tổng thể
Hình 5.2 minh hoạ hoạt động giao tiếp với bộ nhớ của hệ thống Tại thời điểm bắt đầu, cờ cho phép ghi được tắt, dữ liệu và địa chỉ của dữ liệu lần lượt được nạp vào hệ thống Và sau cùng là bật cờ cho phép ghi để quá trình ghi vào bộ nhớ được diễn ra Hình 5.3 minh hoạ hoạt động ghi bộ nhớ chi tiết.
Hình 5.2 Hoạt động của hệ thống – giao tiếp bộ nhớ
Hình 5.3 Hoạt động ghi bộ nhớ chi tiết
Hình 5.4 mô phỏng cho quá trình thiết lập ban đầu cho hệ thống Khi tín hiệu init được kích hoạt bởi host, quá trình thiết lập được khởi động, hệ thống bước vào trạng thái không sẵn sàng Qua trình init kết thúc, hệ thống quay lại trạng thái sẵn sàng.
Hình 5.4 Kích hoạt quá trình thiết lập
Hình 5.5 mô phỏng quá trình tính toán Khi tín hiệu active tích cực, quá trình tính toán bắt đầu, các giá trị chứa ở thanh ghi kết quả không còn khả dụng (được nhận biết dựa trên giá trị thanh ghi _ap_vld) để đọc Cần lưu ý rằng các thanh ghi kết quả này không phụ thuộc vào giá trị trước nó, chỉ kết quả cuối cùng được ghi vào các thanh ghi này, nên giá trị mặc định(hay giá trị được tính toán trước đó) không ảnh hưởng đến độ chính xác của kết quả cuối cùng Khi kết quả cuối cùng của chuỗi dữ liệu được tính toán, giá trị được ghi hoàn tất vào thanh ghi và hệ thống bật tín hiệu valid tương ứng thông báo host có thể đọc được giá trị chính xác của chuỗi tính toán Song song với việc kích hoạt các tín hiệu valid, các tín hiệu thông báo quá trình tính toán được hoàn thành cũng như hệ thống đã sẵn sàng cho quá trình tính toán mới cũng được kích hoạt.
Đánh giá hiệu suất của hệ thống
Tần số tối đa mà hệ thống có thể hoạt động ổn định và số chu kỳ được yêu cầu cho quá trình tính toán được trình bày trong Bảng 5.1 Như đề cập ở chương trước, việc áp dụng triết lý thiết kế hướng đến tốc độ cao dựa trên phương pháp thêm các lớp thanh ghi giúp cho hệ thống có thể hoạt động ở các tần số khác nhau Tuy nhiên, cần lựa chọn việc cấu hình phù hợp để thời gian tính toán là tối ưu.
Bảng 5.1 Tần số hoạt động và số chu kỳ hoạt động của hệ thống
Tốc độ FPGA Độ trễ
Biểu đồ trong Hình 5.6 so sánh thời gian hoạt động ở các chip FPGA với các tần số khác nhau Dựa vào biểu đồ, ta có thể có được các đánh giá như sau:
- Speed grade (-1): thời gian tính toán tối ưu nhất trong khoảng 196 MHz đến 300 MHz.
- Speed grade (-2): thời gian tính toán tối ưu nhất trong khoảng 270 MHz đến 355 MHz.
- Speed grade (-3): thời gian tính toán tối ưu nhất trong khoảng 270 MHz đến 360 MHz.
Hình 5.6 Biểu đồ thời gian của một chu trình tính toán
Ngoài ra, chúng tôi cũng tiến hành so sánh thời gian tính toán của seed extension kernel trên FPGA với thời gian tính toán trên CPU, kết quả được thống kê ở Bảng 5.2.
Bảng 5.2 Thời gian thực thi giải thuật trên các nền tảng xử lý khác nhau tlen/qlen i5-4440 Virtex 7 Virtex 6 Virtex 5 Virtex 4
Biểu đồ trong Hình 5.7 minh hoạ tương quan mức độ tăng tốc của phần cứng FPGA so với thực hiện trên CPU.
Hình 5.7 Biểu đồ so sánh mức độ tăng tốc khi thực hiện trên các nền tảng
Biểu đồ trong Hình 5.7 cho thấy khả năng tăng tốc của phần cứng FPGA tính toán giai đoạn mở rộng hạt Thiết bị tăng tốc mang lại kết quả tích cực trong hầu hết các kịch bản thí nghiệm Trừ hai trường hợp là mở rộng hạt cho hai chuỗi 6/81 và 9/84 khi hoạt động trên nền tảng Virtex 4 và Virtex 5 Đặc điểm chung của hai chuỗi này là có hiệu độ dài chuỗi tham khảo và độ dài chuỗi đọc lớn (tỉ lệ lần đô dài chuỗi đọc / độ dài chuỗi tham khảo lần lượt là 7% và 10.7%).Hơn nữa, ta có thể nhận thấy từ biểu đồ là các chuỗi có đặc tính tương tự (hiệu chênh lệch độ dài lớn) hoặc độ dài chuỗi tham khảo quá ngắn cũng làm hiệu suất tính toán giảm Tính huống thứ nhất gây ra do khả năng linh hoạt kém hơn của nền tảng FPGA so với CPU, các chuỗi đọc ngắn sẽ được ngắt quá trình tính toán sớm khi thực hiện trên CPU trong khi phần cứng tăng tốc vẫn tiếp tục thực hiện đến hết số lượng PE trong hệ thống.
Đánh gia tài nguyên hệ thống
Sau các phần tích về hiệu suất hoạt động cũng như chứng minh các cơ chế vận hành hệ thống thông qua mô phỏng và các thông kê, chúng tôi tiếp tụ đưa ra các thống kê về tài nguyên sử dụng cần thiết cho thiết kế Bảng 5.3 trình bày số lượng Flip-Flop và LUT yêu cầu đối với từng tần số hoạt động khác nhau cho cùng một thiết kế.
Bảng 5.3 Thống kê tài nguyên cần dùng cho hệ thống
Bảng 5.4 cho biết tỉ lệ tài nguyên sử dụng tương ứng với Bảng 5.3
Bảng 5.4 Tỉ lệ tài nguyên yêu sử dụng trong chip FPGA
Hình 5.8 minh hoạ mô hình hệ thống được tổng hợp bởi Vivado
Hình 5.8 Sơ đồ mạch được tổng hợp bởi phần mềm Vivado
Hình 5.9 minh hoạ bố trí linh kiện trên chip FPGA Zynq Z-7020
Thống kê năng lượng tiêu thụ
Hình 5.10 thống kê tổng quát năng lượng tiêu thụ của kernel
Hình 5.10 Năng lượng tiêu thụ của thiết bịCác biểu đồ trong Hình 5.11 thống kê năng lượng tiêu thụ của hệ thống ở những điều kiện khác nhau.
Hình 5.11 Năng lượng tiêu thụ với các điều kiện làm việc khác nhau
Đánh giá kết quả
Các kết quả mô phỏng và thực nghiệm đưa đến các đánh giá:
- Hệ thống hoạt động đúng với các chức năng đã thiết kế.
- Hệ thống cho khả năng tăng tốc hơn các bộ xử lý đa dụng.
- Hệ thống đạt được mức độ xử lý cao với cơ chế đường ống, cho tần số lên đến 621.118 MHz với chip Zynq có speed grade -3.
- Hệ thống có quy mô lớn, kiến trúc phức tạp nhưng có thời gian tổng hợp ít, kết quả này đạt được do thiết kế tạo thuận lợi cho cơ chế kết nối giữa các khối trong hệ thống.
- Thiết kế của hệ thống cũng mang lại thuận lợi cho việc đặt các ràng buộc tối ưu về thời gian do các phép tính có thể cắt nhỏ và ít phụ thuộc lẫn nhau trong cùng một chu kỳ.
TỔNG KẾT
Các kết quả đạt được
Trải qua quá trình nghiên cứu và phát triển, chúng ta đã xây dựng được một hệ thống hỗ trợ tăng tốc giải thuật so trùng chuỗi dựa trên phần cứng tái cấu hình FPGA Các nội dung đề ra đã được đáp ứng với mức độ cao Bảng 6.1 liệt kê các yêu cầu và mức độ đáp ứng của đề tài.
Bảng 6.1 Các nội dung nghiên cứu và kết quả tương ứng
Nội dung Nội dung Mức độ hoàn thành Đánh giá
Nội dung 1 Nghiên cứu mô hình phần cứng tăng tốc giải thuật BWA-MEM
100% Hệ thống cung cấp cơ chế điều khiển hợp lý, cho hệ thống có khả năng kết hợp với một bộ xử lý đa dụng dựa trên nhiều giao thức khác nhau.
Nội dung 2 Thiết kế các kernel tính toán cho quá trình Seed Extension
100% Thiết kế được kiểm thử ở nhiều mức độ khác nhau, cho kết quả hoàn toàn chính xác so với giải thuật gốc
Nội dung 3 Hiện thực kernel tính toán cho quá trình Seed Extension đã thiết kế trong nội dung 2
100% Kernel được hiện thực và kiểm thử trên bằng các công cụ tổng hợp HDL, hệ thống hoạt động phù hợp với các yêu cầu đặt ra
Nội dung 4 Hiện thực quá trình seed và ghi kết quả
100% Quá trình seed và ghi kết quả đã được công bố dưới dạng mã nguồn mở
Nội dung 5 Hiện thực khung sườn hỗ trợ hệ thống.
100% Xây dựng được chương trình sinh ra các đặc tả phần cứng dựa trên thiết lập từ người dùng. Nội dung 6 Tích hợp và hoàn chỉnh hệ thống
Nội dung 7 Kiểm thử và đánh giá hiệu suất
100% Hệ thống đã được kiểm thử thực tế và cho các kết quả khả quan được trình bày trong chương 8
Nội dung 8 Hoàn chỉnh báo cáo tổng kết
Cải tiến giải thuật 100% Nhóm đề xuất giải thuật cải tiến cho giai đoạn mở rộng hạt so với giải thuật BWA-MEM gốc.Giải thuật mới có độ tương thích cao với nền tảng tái cấu hìnhFPGA.
Ưu và nhược điểm
Hệ thống tăng tốc mở rộng hạt được thiết kế có những ưu điểm như sau:
- Cơ chế điều khiển phù hợp.
- Tần số hoạt động cao.
- Các hạt nhân tính toán có cấu trúc đơn giản dễ tối ưu.
- Dựa trên giải thuật cải tiến cho mức độ song song cao.
- Áp dụng cơ chế đường ống cho băng thông rộng.
- Hệ thống hoạt động chính xác với giải thuật gốc.
- Kiến trúc tổng thể phức tạp nhưng có thời gian tổng hợp ngắn.
Bên cạnh các lợi ích mang lại, hệ thống cũng còn tồn tại một số hạn chế cần khắc phục:
- Tài nguyên sử dụng lớn do đặc tính của giải thuật BWA-MEM cải tiến.
- Hệ thống kém linh hoạt với các chuỗi có độ dài ngắn hơn độ dài cấu hình của hệ thống.
- Sự cân bằng trong sử dụng các loại tài nguyên khác nhau trong chipFPGA chưa hợp lý.