Học kiến trúc RISC-V qua việc gỡ lỗi - Phần 1
austinkim
Giải thích một cách dễ hiểu và chi tiết về các khái niệm cốt lõi cũng như các mẹo thực tế của RISC-V, kiến trúc CPU mới nhất dựa trên mã nguồn mở.
Cơ bản
cpu, cpu-architecture, riscv
Tác giả của cuốn sách "Cấu trúc và nguyên lý của kiến trúc Arm dành cho phát triển phần mềm hệ thống" sẽ giúp bạn nắm vững cốt lõi của kiến trúc Arm (Armv8-A) và giao diện nhân Linux!
139 học viên
Độ khó Trung cấp trở lên
Thời gian Không giới hạn


Bạn có thể nắm bắt được các phương thức hoạt động chính cấu thành nên kiến trúc Arm (Armv8-A).
Bạn có thể hiểu được giao diện giữa kiến trúc Arm và nhân Linux (tiến trình, xử lý ngắt, lời gọi hệ thống, quản lý bộ nhớ).
Bạn có thể học về các chức năng cốt lõi cấu thành nên nhân Linux như tiến trình, xử lý ngắt, lời gọi hệ thống và kỹ thuật quản lý bộ nhớ.
Bạn có thể phân tích các thanh ghi, xử lý ngoại lệ, lệnh hợp ngữ, TrustZone và phương pháp quản lý bộ nhớ thông qua mã nguồn tồn tại trong nhân Linux.
Để kỷ niệm cột mốc vượt qua 300 học viên (Phần 1, 2), chúng tôi xin phát hành mã giảm giá 30%. Xin cảm ơn các bạn. Số lượng có hạn cho 200 người đầu tiên.
Link giảm giá 30%: https://inf.run/EwJWs
Bài giảng lần này <Arm 아키텍처와 리눅스 커널 인터페이스 - 저자직강> là bài giảng nằm trong lộ trình'Arm dành cho nhà phát triển phần mềm hệ thống - advanced course'.

Những ai muốn học về kiến trúc Arm (Armv8-A, Armv7-A) một cách hệ thống nên tận dụng lộ trình học (giảm giá 30% cho toàn bộ khóa học). Để tham khảo, lộ trình kiến trúc Arm (toàn bộ bài giảng trực tiếp từ tác giả) bao gồm hai phần là Basic Course và Advanced Course.
Không chỉ điện thoại thông minh mà cả chip bán dẫn hệ thống SoC cho AI, ô tô điện Automotive (tự hành, thông tin giải trí), cũng như các máy chủ đám mây và MacBook, các bộ vi xử lý Arm được sử dụng đều là bộ vi xử lý Cortex-A 64-bit dựa trên Armv8-A (Cortex-A53, Cortex-A57, Cortex-A72, v.v.). Có thể coi kiến trúc Armv8-A là nội dung đòi hỏi kiến thức nền tảng cần thiết nhất trong ngành phần mềm hệ thống hiện nay.
Cùng với bộ vi xử lý Arm, nhân Linux đang được sử dụng trong điện thoại thông minh, máy chủ đám mây và hệ thống xe điện. Ngoài ra, hầu hết các nhà phát triển phần mềm hệ thống trong ngành bán dẫn hệ thống (fabless) đều thực hiện lập trình trình điều khiển (driver) để điều khiển các con chip do chính họ thiết kế bằng cách sử dụng nhân Linux hoặc trình điều khiển thiết bị Linux.
Tóm lại một lần nữa! Nhân hệ điều hành được thực thi nhiều nhất trên bộ vi xử lý Arm chính là nhân Linux.
1⃣ Thứ nhất, nếu hiểu rõ về giao diện giữa kiến trúc Arm và nhân Linux (phân tích lệnh assembly), bạn có thể hiểu rõ hơn về cách thức hoạt động chi tiết của kiến trúc Arm. Điều này là do việc phân tích mã nguồn nơi các nội dung học thuyết được triển khai sẽ giúp bạn nội hàm hóa những kiến thức đã học.
2⃣ Thứ hai, các tính năng cốt lõi tạo nên nhân Linux như tiến trình, xử lý ngắt, lời gọi hệ thống (system call) và kỹ thuật quản lý bộ nhớ đều được triển khai bằng cách tận dụng các tính năng của kiến trúc CPU. Nếu hiểu rõ giao diện giữa kiến trúc Arm và nhân Linux, bạn có thể nắm bắt sâu sắc các hoạt động chi tiết của nhân Linux.
3⃣ Thứ ba, bằng cách phân tích các thanh ghi, xử lý ngoại lệ (exception handling), lệnh hợp ngữ (assembly), TrustZone và phương pháp quản lý bộ nhớ thông qua mã nguồn có sẵn trong nhân Linux, bạn có thể đồng thời học hỏi về cấu trúc của kiến trúc Arm và nhân Linux.
4⃣ Thứ tư, bộ vi xử lý Arm và nhân Linux được sử dụng trong hơn 90% sản phẩm của ngành phần mềm hệ thống. Nếu nắm bắt được cách thức nhân Linux hoạt động trên bộ vi xử lý Arm, bạn có thể vận dụng tốt những nội dung đã học.
Hầu hết các phần mềm hệ thống được phát triển gần đây đều dựa trên môi trường bộ vi xử lý Arm và Linux, vì vậy bạn nhất định phải biết những kiến thức liên quan này.
Các nhà phát triển đã từng nghe bài giảng trực tiếp từ tác giả của 'Cấu trúc và nguyên lý của kiến trúc Arm dành cho phát triển phần mềm hệ thống' có thể sẽ thấy thắc mắc. Đó là bởi vì giảng viên về kiến trúc Arm lần này đột nhiên lại nói về nhân Linux (Linux kernel). Tuy nhiên, tôi không chỉ là tác giả sách về kiến trúc Arm mà còn là tác giả của sách về nhân Linux. Dưới đây là những kinh nghiệm chính liên quan đến nhân Linux của tôi:
Tác giả cuốn sách 'Cấu trúc và nguyên lý của Linux Kernel học qua Debugging' (Năm 2021, Giải thưởng Sách hay của Viện Hàn lâm Khoa học Quốc gia Hàn Quốc)
'Cấu trúc và nguyên lý của kiến trúc Arm dành cho phát triển phần mềm hệ thống' (Năm 2024, Giải thưởng Sách xuất sắc của Viện Hàn lâm Khoa học Quốc gia Hàn Quốc) Tác giả
Giảng viên chính của khóa học 'Programmers Dev Course: Chuyên gia Hệ thống và Nhân Linux'
Tháng 6 năm 2022, Hội nghị Tổng hợp Khoa học Máy tính Hàn Quốc (KCC2022) - Thuyết trình hướng dẫn
[Chinh phục Linux Kernel bằng cách sử dụng ftrace]
Giảng viên nội bộ về 'Linux Kernel' tại LG Electronics (bao gồm cả nhà phát triển nước ngoài) - (2020~Hiện tại)

Với tư cách là giảng viên của khóa học này, tôi tự tin rằng mình có thể giải thích về 'Giao diện giữa kiến trúc Arm và nhân Linux' tốt hơn bất kỳ ai khác.
✅ Sinh viên mới tốt nghiệp đang tìm việc và các nhà phát triển trẻ trong lĩnh vực phần mềm hệ thống, bao gồm cả lĩnh vực bán dẫn hệ thống (fabless) và xe điện (tự hành, thông tin giải trí)
✅ Các nhà phát triển phần mềm hệ thống muốn biết cách tận dụng các tính năng của kiến trúc Arm để gỡ lỗi trong thực tế
✅ Sinh viên đại học có mục tiêu học lên cao học trong lĩnh vực phần mềm hệ thống (bộ nhớ, hệ thống tệp, hệ điều hành)
Nắm vững nguyên lý hoạt động chi tiết của kiến trúc Arm
Nắm bắt cách các Subsystem chính của nhân Linux được triển khai bằng cách tận dụng các tính năng của kiến trúc Arm
Hiểu cách triển khai lập lịch ngữ cảnh (context scheduling) của nhân Linux
Hiểu cách thức hoạt động chi tiết của System Call và Exception Handler trong nhân Linux
Tìm hiểu cách thức triển khai hệ thống bộ nhớ của nhân Linux
Giới thiệu cấu trúc tổng thể của hệ thống Linux dành cho những học viên chưa quen thuộc với Linux. Giải thích chi tiết về 3 tài nguyên chính được xử lý quan trọng trong nhân Linux (Linux kernel).

Giải thích về tiến trình (không gian người dùng và không gian hạt nhân, tiến trình người dùng, luồng hạt nhân), vốn là cốt lõi của nhân Linux.

Giải thích cấu trúc dữ liệu của tiến trình phụ thuộc vào kiến trúc Arm. Đặc biệt, tập trung vào các thanh ghi liên quan đến chuyển đổi ngữ cảnh (context switch) để trình bày chi tiết nguyên lý hoạt động.

Giải thích chi tiết hoạt động của chuyển đổi ngữ cảnh (context switching) phụ thuộc vào kiến trúc Arm thông qua việc phân tích các lệnh hợp ngữ.

Giải thích luồng xử lý ngắt theo bức tranh tổng thể. Giải thích chi tiết cách xử lý ngắt thông qua việc phân tích 'Bảng vector ngoại lệ của kiến trúc Armv8'.

Giải thích luồng xử lý ngắt dựa trên 2 kịch bản (ngắt xảy ra khi đang thực thi ứng dụng người dùng và ngắt xảy ra khi đang thực thi mã kernel). Tiếp theo, xem xét chi tiết mã trình xử lý ngoại lệ (mã hợp ngữ).

Xem xét toàn bộ luồng thực thi của system call và giải thích chi tiết nội dung của bảng vector exception liên quan đến system call.

Phân tích quy trình lệnh SVC được thực thi khi kích hoạt system call từ không gian người dùng (user space). Tiếp theo, giải thích chi tiết quy trình của trình xử lý ngoại lệ (exception handler) được thực thi trong không gian nhân (kernel space) trong quá trình system call được kích hoạt.

Giải thích các API cốt lõi của kernel được xử lý trong quá trình trình xử lý hệ thống gọi (system call handler) được gọi trong không gian kernel sau khi lệnh gọi hệ thống được kích hoạt (thực thi lệnh SVC). Ngoài ra, nội dung cũng sẽ đề cập chi tiết đến các thông tin ký hiệu (symbol) quan trọng của trình xử lý hệ thống gọi.

Giới thiệu các chức năng chính cấu thành việc quản lý bộ nhớ trong nhân Linux, đồng thời giải thích các tính năng liên quan đến quản lý bộ nhớ cần biết dưới góc độ kiến trúc Arm.

Giới thiệu các cấu hình (config) thiết lập phạm vi địa chỉ ảo trong nhân Linux. Tiếp theo, giải thích các giao diện mà nhân Linux hỗ trợ cho bảng trang đa cấp (multi-level page table).

Giải thích chi tiết về nguyên lý hoạt động của việc tra cứu trang (page lookup) được xử lý bằng các giao diện hỗ trợ trong nhân Linux và cấu trúc của macro fixup.

<Cấu trúc và nguyên lý của kiến trúc Arm dành cho phát triển phần mềm hệ thống - Phần 1/2 Bài giảng trực tiếp từ tác giả>

Rất khuyến khích bạn nên nghe bài giảng trực tiếp từ tác giả của khóa học 'Cấu trúc và nguyên lý của kiến trúc Arm dành cho phát triển phần mềm hệ thống' (Phần 1/2) trước khi bắt đầu.
Kiến thức tiên quyết bao gồm Exception Level của kiến trúc Arm, Exception, AAPCS và quản lý bộ nhớ (MMU).
Sẽ rất tốt nếu bạn biết sơ lược về cách thức hoạt động của Linux.
Không cần kiến thức chuyên sâu về nhân Linux.
Khóa học này dành cho ai?
Sinh viên mới tốt nghiệp đang tìm việc và nhà phát triển trẻ trong lĩnh vực phần mềm hệ thống
Nhà phát triển phần mềm hệ thống muốn biết phương pháp gỡ lỗi tận dụng các tính năng của kiến trúc Arm
Nhà phát triển từ các lĩnh vực khác đang muốn chuyển hướng sự nghiệp sang lĩnh vực phần mềm hệ thống
Sinh viên đại học có mục tiêu học lên cao học trong lĩnh vực phần mềm hệ thống
Cần biết trước khi bắt đầu?
Kiến trúc máy tính
Hệ điều hành
Xác minh sự nghiệp
6,586
Học viên
265
Đánh giá
102
Trả lời
4.9
Xếp hạng
23
Các khóa học
Tác giả toàn cầu & Nhà phát triển phần mềm hệ thống Linux (Kiến trúc Arm, RISC-V)
Là tác giả duy nhất và chưa từng có tiền lệ trong lĩnh vực phần mềm hệ thống tại Hàn Quốc đã viết sách về 'Kiến trúc Arm (Armv8-A, Armv7-A)' và 'Linux Kernel' (cả hai cuốn sách đều được Viện Hàn lâm Khoa học Quốc gia Hàn Quốc chọn là Sách ưu tú), đồng thời là tác giả toàn cầu đầu tiên tại Hàn Quốc viết cuốn sách "Reverse Engineering Armv8-A Systems" (bằng tiếng Anh) thông qua nhà xuất bản nước ngoài (Packt). Trên hết, ông là một nhà phát triển đang làm việc thực tế, người nắm rõ nhất các xu hướng phần mềm hệ thống mới nhất (xe điện, bán dẫn hệ thống - phần mềm hệ thống). Ngoài ra, ông còn là một nhà giáo dục hoạt động tích cực nhất trong việc truyền bá kiến thức trong lĩnh vực phần mềm hệ thống.
Người chia sẻ kiến thức chuyên môn và Tư vấn viên
Làm việc tại nhóm Mã nguồn mở Linux Kernel của LG Electronics (~tháng 5 năm 2026)
'Reverse Engineering Armv8-A Systems: A practical guide to Kernel, Firmware, and TrustZone analysis' Tác giả sách (tiếng Anh), (Nhà xuất bản Packt)
Tác giả cuốn 'Cấu trúc và nguyên lý của kiến trúc Arm dành cho phát triển phần mềm hệ thống' (Giải thưởng Sách hay của Viện Hàn lâm Khoa học Quốc gia Hàn Quốc năm 2024))
Tác giả cuốn sách 'Cấu trúc và nguyên lý của nhân Linux học qua việc gỡ lỗi' (Giải thưởng Sách hay của Viện Hàn lâm Khoa học Quốc gia Hàn Quốc năm 2021)
Giảng viên chính của khóa học 'Programmers Dev Course: Chuyên gia Hệ thống và Nhân Linux'
Tôi có thể tự tin khẳng định rằng mình là một nhà giáo dục có khả năng giải thích về nhân Linux và kiến trúc Arm (Armv8-A, Armv7-A) tốt hơn bất kỳ ai khác tại Hàn Quốc.
Liên hệ bài giảng: austindh.kim@gmail.com
'Arm dành cho nhà phát triển phần mềm hệ thống - khóa học cơ bản'
'Arm dành cho nhà phát triển phần mềm hệ thống - khóa học nâng cao'
Linux kernel dành cho nhà phát triển phần mềm hệ thống - khóa học cơ bản
Tất cả
25 bài giảng ∙ (3giờ 51phút)
Tất cả
8 đánh giá
4.6
8 đánh giá
Đánh giá 10
∙
Đánh giá trung bình 4.9
Đánh giá 128
∙
Đánh giá trung bình 5.0
5
2024/07/30/Thứ ba 10:40 Tôi rất thích bài giảng. Tôi đã học được rất nhiều điều từ lộ trình (Arm cơ bản/nâng cao) mà bạn cung cấp. Tất cả các bài giảng đều tốt. Trong khi nghe, "Wow~~" Tôi cảm thấy rất cô đơn. Cảm ơn Bây giờ em sẽ nghe nốt phần còn lại của bài giảng và nghe lộ trình mà thầy đưa cho em. Cảm ơn
Đánh giá 24
∙
Đánh giá trung bình 5.0
Đánh giá 6
∙
Đánh giá trung bình 5.0
Đánh giá 4
∙
Đánh giá trung bình 5.0
Hãy khám phá các khóa học khác của giảng viên!
Khám phá các khóa học khác trong cùng lĩnh vực!
Ưu đãi có thời hạn, kết thúc sau 3 ngày ngày
35.420 ₫
30%
1.072.724 ₫