Title Image

Blog Logo

Embedded Memory

🌱 Embedded Memory

    Embedded Memory - Bộ nhớ trong hệ thống nhúng, là các bộ nhớ nhằm lưu trữ chương trình, dữ liệu của các ứng dụng nhúng. Đối với Hệ nhúng, thường có tài nguyên hạn chế, việc lựa chọn, quản lý bộ nhớ là rất quan trọng. Bộ nhớ trong một hệ nhúng có thể được tích hợp trong một SoC (System on Chip) hoặc có thể là những chip nhớ / thẻ nhớ riêng. Ở bài viết này, mình sẽ cùng các bạn tìm hiểu về một vài bộ nhớ sử dụng trong hệ nhúng.

    👉 Volatile vs Non-Volatile Memory

  1. Volatile Memory là loại bộ nhớ mà chỉ lưu trữ được thông tin (chương trình / dữ liệu) khi được duy trì nguồn điện, khi cắt nguồn điện, volatile memoy sẽ mất hết dữ liệu. Và RAM là một loại Volatile memory.
    Volatile Memory thường dùng để lưu trữ dữ liệu trong quá trình Run-time. 
  2. Non-Volatile Memory là loại bộ nhớ lưu trữ thông tin (chương trình / dữ liệu) khi duy trì nguồn điện, và vẫn giữ được thông tin sau khi điện bị cắt. Điển hình của Non-Volatile Memory là Flash, EEPROM, ...
    Non-Volatile Memory thường dùng để lưu trữ chương trình, các cấu hình của hệ thống.

    👉 Primary vs Secondary Memory

  1. Primary Memory là bộ nhớ chính của hệ thống, thường đươc truy cập trực tiếp bởi CPU, thường là loại bộ nhớ Volatile Memory. Bộ nhớ này thường có tốc độ cao hơn so với Secondary Memory.
  2. Secondary Memory là bộ nhớ thứ cấp của hệ thống, và không thể truy cập trực tiếp bởi CPU, thường là loại bộ nhớ Non-Volatile. 

    👉 RAM - Random Access Memory

    Các hệ nhúng hiện nay thường sử dụng các loại bộ nhớ có thể truy cập trực tiếp bởi CPU. Đối với Primary Memory, bộ nhớ thường được sử dụng là RAM, có 2 loại chính là DRAM (Dynamic RAM) và SRAM (Static RAM). Cả 2 đều là Volatile Memory, tuy nhiên chúng có một số đặc điểm khác nhau:

  • SRAM - Static Memory là bộ nhớ RAM có tốc độ truy cập cực nhanh (cụ thể nhanh hơn khoảng 4 lần so với DRAM). Một ưu điểm nữa là nó tiêu thụ ít năng lượng hơn so với DRAM. 
    Tuy nhiên, điểm yếu là giá thành đắt hơn khá nhiều. Vì vậy, SRAM thường được tích hợp sẵn trên các chip/ Vi điều khiển, ví dụ gần bạn nhất là con STM32. 
  • DRAM - Dynamic Memory là bộ RAM có tốc độ truy cập thấp hơn SRAM, và nó chỉ duy trì dữ liệu trong một thời gian ngắn, mặc dù nguồn không bị cắt. Để duy trì dữ liệu trên DRAM, cần phải có một bộ điều khiển DRAM để liên tục làm mới dữ liệu. Chính vì thế, nó tốn năng lượng hơn SRAM. 
    Vì giá thành rẻ nên DRAM vẫn được sử dụng khi ứng dụng yêu cầu dung lượng bộ nhớ lớn.
  • SDRAM - Là một loại DRAM phổ biến nhất, chúng được đồng bộ hóa với xung clock của Vi xử lý, điều này làm Bộ xử lý có thể xử lý nhiều hơn 1 lệnh trong một chu kỳ máy. 

    Bảng so sánh SRAM và DRAM:

SRAM vs DRAM

    👉 ROM - Read Only Memory

    ROM là loại bộ nhớ Non-Volatile, trong hệ thống nhúng, chúng có thể sử dụng dưới 2 dạng:

  • Masked ROM - Loại ROM này được nhà sản xuất ghi dữ liệu (Mã chip, thông tin nhà sản xuất, ...) và sau đó nội dung của chúng không thể thay đổi. Loại này thì giá rất là rẻ nhưng không lập trình được 😆
  • PROM - Programmable ROM - Loại bộ nhớ này thì có thể lập trình, nhưng chỉ có thể làm việc này một lần duy nhất. Có thể dùng để lưu firmware và các constants mà người dùng không phải thay đổi, chẳng hạn như các mã số series, các cấu hình truyền thông cố định, ...

    👉 Hybrid

    Để làm việc với hệ thống nhúng thì chúng ta không thể sử dụng RAM và ROM, vì RAM thì mất dữ liệu khi mất điện, nên khó dùng để lưu chương trình (firmware), trong khi ROM thì chỉ có thể lập trình một lần. Chúng ta cần loại bộ nhớ có thể lập trình được nhiều lần, và không bị mất dữ liệu khi mất điện, các ví dụ tiêu biểu nhất đó là EEPROM và FLASH. 

  • EEPROM - Electrically Erasable Programmable Read Only Memory - Là loại bộ nhớ có thể lập trình được bằng điện.
    EEPROM phù hợp để lưu trữ chương trình khi làm sản phẩm cụ thể (tức là những sản phẩm đã được bán ra và ít phải nạp lại code). Lí do là vì số lần ghi/xóa cũng khá hạn chế của nó - khoảng 10.000 lần.
  • FLASH - Đây là bộ nhớ mà có lẽ không xa lạ gì với các bạn, rất nhiều loại vi điều khiển sử dụng nó, đặc biệt là các vi điều khiển 32-bit như STM32. FLASH là bộ nhớ có thể lập trình lại, có chi phí thấp. 
    Một điểm khác biệt với EEPROM là EEPROM có thể ghi/xóa từng byte trong bộ nhớ, còn Flash thì phải xóa từng Sector. 
    Có 2 loại Flash là NAND Flash và NOR Flash.

    👉 External Memory 

    Một số hệ thống nhúng cần lưu trữ dung lượng dữ liệu lớn thường sử dụng bộ nhớ ngoài.

  • SSD - Solid State Drive - là một loại phương tiện lưu trữ dữ liệu liên tục trên bộ nhớ Flash trạng thái rắn. Bộ nhớ này có tốc độ truy cập rất nhanh và tiêu thụ ít điện năng (Giống SSD trên máy tính đó 😅)
  • SD Card (Secure Digital Card) - Là loại bộ nhớ Non-Volatile dùng để lưu trữ dữ liệu, tích hợp dạng thẻ để sử dụng cho các thiết bị di động.

    Ngoài ra thì còn rất nhiều loại bộ nhớ khác mà các bạn có thể tham khảo đọc thêm ở trên Internet. Trên đây mình chỉ giới thiệu một số loại bộ nhớ thường gặp.

    Chúc các bạn học tập tốt 😊

Đọc thêm: Bộ nhớ đệm Cache

Đăng nhận xét

0 Nhận xét