Tại sao hầu hết các bộ nhớ không bay hơi có logic 1 làm trạng thái mặc định?


14

Tôi đã sử dụng bộ nhớ không bay hơi , như bộ nhớ EEPROM và FLASH, trong các ứng dụng nhúng và tôi luôn thấy rằng các vị trí bit bộ nhớ không sử dụng (EEPROM / FLASH) luôn được đặt thành 1mặc định. Tại sao điều này được sử dụng thay vì 0?

Ví dụ: một địa chỉ, giả sử địa chỉ thứ 0 (byte đầu tiên của bộ nhớ), nếu không được ghi bởi người dùng, luôn lưu trữ 0xffvà không 0x00. Tại sao những người xây dựng chip nhớ vẫn giữ nguyên như vậy? Tôi chắc chắn giữ vị trí bộ nhớ mặc định 0xffsẽ cung cấp một số lợi thế hoặc một cái gì đó quan trọng cho nhà sản xuất.

Lý do đằng sau cấu trúc này trong chip bộ nhớ là gì?

Câu trả lời:


20

Tôi sẽ thảo luận về lập trình bộ nhớ flash, nhưng rất nhiều tài liệu sẽ tương tự như EEPROM (ROM lập trình có thể xóa bằng điện), vì bộ nhớ flash được lấy từ EEPROM vào giữa những năm 1980. Như được mô tả dưới đây, từ quan điểm vật lý, trạng thái mặc định là 1 giây. Nhưng quan trọng hơn, tôi sẽ giải thích tại sao có một trạng thái mặc định - bạn không thể chỉ tùy tiện chương trình trên đầu trang của những gì đã được lập trình từ thời gian qua.

Flash flash hầu như luôn được chọn cho flash chương trình vì giao diện phù hợp nhất để đặt dữ liệu trong bản đồ bộ nhớ của vi điều khiển - địa chỉ đầy đủ và dữ liệu bắt chước RAM và cho phép truy cập ngẫu nhiên vào bất kỳ vị trí nào. Dữ liệu có thể được đọc một từ tại một thời điểm, trong đó một từ được định nghĩa là độ rộng dữ liệu của vi điều khiển, thường là 8, 16 hoặc 32 bit. Mặt khác, đèn flash NAND được phát triển để thay thế ổ đĩa cứng và hoạt động tuần tự.

Tuy nhiên lập trình trở nên phức tạp hơn một chút. Như đã đề cập, trạng thái mặc định cho flash NOR và các bộ nhớ không bay hơi khác như flash NAND, EEPROM và thậm chí EPROM là logic 1. Bạn không thể lập trình 1 vào các thiết bị này, bạn chỉ có thể lập trình 0. Vì vậy, ví dụ nếu bạn có một byte chứa 0x0123 và bạn muốn thay đổi nó thành 0x3210, bạn không thể làm như vậy trực tiếp như ghi trên một byte trong RAM.

Thay vào đó, các bit trong bộ nhớ phải bị xóa, điều này đặt chúng vào trạng thái 1 mặc định đã được đề cập. Điều này chỉ có thể được thực hiện trong các khối, không phải từ. Trên Microchip PIC32, mà tôi đã làm việc gần đây nhất, kích thước khối tối thiểu có thể bị xóa là 4096 byte. Vì vậy, nếu bạn muốn thay đổi chỉ một từ (32 bit), bạn sẽ phải đọc 4K bộ nhớ, xóa khối, sau đó ghi lại 4K bộ nhớ thành flash nhưng bao gồm giá trị 32 bit mới nếu cần. Việc xóa này có thể mất một thời gian - một phần tốt của một giây.

Sau đây là hình ảnh của một ô nhớ flash. Flash lưu trữ dữ liệu bằng cách loại bỏ hoặc đặt các điện tử trên cổng nổi. Khi các electron có mặt trên cổng nổi, không có dòng điện chạy qua bóng bán dẫn, chỉ ra 0. Khi các electron bị loại bỏ khỏi cổng nổi, bóng bán dẫn bắt đầu tiến hành, chỉ ra 1. (Đây là theo quy ước - nó có thể là cách khác nhưng sẽ yêu cầu biến tần trên tất cả các dòng dữ liệu.)

nhập mô tả hình ảnh ở đây

Xóa hoạt động. Trạng thái mặc định của các ô nhớ flash (một ô flash đơn cấp NOR) là 1 vì các cổng nổi không mang điện tích âm. Xóa một ô nhớ flash (đặt lại 1) bằng cách đặt một điện áp trên cổng nguồn và cổng điều khiển (dòng từ). Điện áp có thể nằm trong phạm vi từ -9V đến -12V. Và cũng áp dụng khoảng 6V cho nguồn. Các electron trong cổng nổi được kéo ra và chuyển về nguồn bằng đường hầm lượng tử . Nói cách khác, các đường hầm điện tử từ cổng nổi đến nguồn và chất nền.

Bởi vì việc xóa sử dụng điện áp cao, do đó, việc xóa trong các khối đòi hỏi diện tích chết ít hơn. Vì vậy, điện áp chỉ có thể được áp dụng cho toàn bộ hàng bóng bán dẫn tại một thời điểm.

Để viết, một ô flash NOR có thể được lập trình hoặc đặt thành 0 theo quy trình sau. Trong khi viết, một điện áp cao khoảng 12V được đặt vào cổng điều khiển (dòng từ). Nếu điện áp cao khoảng 7V được đặt vào Đường dây bit (đầu cuối cống), thì 0 được lưu trong ô. Kênh hiện được bật, vì vậy các electron có thể chảy từ nguồn đến cống. Dòng thoát nguồn đủ cao để khiến một số electron năng lượng cao nhảy qua lớp cách điện lên cổng nổi thông qua một quá trình gọi là phun electron nóng.

Để đọc, điện áp khoảng 5V được đặt vào cổng điều khiển và khoảng 1V cho cống. Trạng thái của ô nhớ được phân biệt bởi dòng chảy giữa cống và nguồn.

Tuổi thọ có thể sử dụng của bộ nhớ không bay hơi được đo bằng các chu kỳ xóa. Nhược điểm của NOR là số chu kỳ xóa là khoảng 1/10 so với bộ nhớ NAND. Nhiều phiên bản của PIC32 chỉ cho phép bộ nhớ flash được cập nhật 1000 lần, ít hơn 100.000 chu kỳ xóa thông thường cho EEPROM.

Vì vậy, nó không quá quan trọng nếu các nhà thiết kế đưa ra trạng thái mặc định là 1 hoặc 0 (họ đã chọn giá trị cho phép thực hiện dễ dàng nhất); điều quan trọng là người ta phải xóa một khối flash trước (cần có thời gian), sau đó lập trình lại toàn bộ khối (ngay cả khi một từ duy nhất đang được thay đổi (cần một lượng RAM đáng kể).

Việc xóa khối này của thiết bị quay trở lại các EPROM đầu tiên (ROM có thể lập trình xóa được), tiến hành EEPROM Mã được lập trình thành chip (như 16KB 27128) và được đặt trong ổ cắm. Những con chip này có một cửa sổ nhỏ trên đỉnh cho phép ánh sáng chiếu vào khuôn. Khi chương trình phải được thay đổi, các con chip được đưa vào một cục tẩy UV trong 20 phút hoặc lâu hơn, nó sẽ xóa toàn bộ con chip. Sau đó, chip sẽ được lập trình với chương trình mới.

Một số EEPROM yêu cầu xóa các khối bộ nhớ trước khi lập trình; những người khác cho phép viết một byte tại một thời điểm (bộ điều khiển EEPROM thực sự xóa byte đầu tiên và các chương trình của nó).


2
Đây là một tổng quan tuyệt vời về cách truy cập các bộ nhớ không dễ bay hơi, nhưng nó không thực sự giải quyết TẠI SAO trạng thái bị xóa là '1' chứ không phải '0'.
akohlsmith

1
@akohlsmith Tôi đã thêm thông tin đó để đầy đủ hơn. Nhưng vấn đề thực sự không phải là ô mặc định là 1 hay 0; điều này có thể được đảo ngược chỉ bằng cách đặt biến tần trên mỗi dòng dữ liệu. Vấn đề thực sự là tại sao có một trạng thái mặc định ở vị trí đầu tiên; tức là bạn có thể viết 0 bằng không phải 1 - cái sau yêu cầu xóa trong các khối.
tcrosley 12/07/2015

1
Tôi không đồng ý, câu hỏi có vẻ khá cụ thể về lý do tại sao trạng thái bị xóa là 'được đặt' thay vì 'rõ ràng' - dù sao tôi cũng thích câu trả lời của bạn và +1 từ tôi (không phải tôi là ai, chỉ là một người lạ trên mạng ngẫu nhiên thích Câu trả lời của bạn)
akohlsmith

1
@akohlsmith Tôi đồng ý với bạn rằng theo quy ước, các trạng thái thiết lập thường là 1 và trên thực tế đó là cách các ô riêng lẻ hoạt động. Sẽ cần một số phần cứng bổ sung (không nhiều) để đảo ngược nó và không cần phải làm như vậy: 1 vì mặc định là tốt.
tcrosley

Đây là một câu trả lời tuyệt vời. Nhưng tôi nghĩ sẽ dễ hiểu hơn nếu nói: bạn không thể lập trình 1 vào các thiết bị này, bạn chỉ có thể lập trình 0. Nếu bạn muốn lập trình 1, bạn phải xóa các thiết bị và khôi phục toàn bộ khối trở về trạng thái 1 mặc định, sau đó lập trình 0 là cần thiết. . Ví dụ: để lập trình 0101tới 1010, bạn phải thực hiện theo trình tự này: 0101-> (xóa) -> 1111-> (chương trình 0's) ->1010 . Hoặc về cơ bản, nó có nghĩa là việc viết 1 và viết 0 được thực hiện ở mức độ chi tiết khác nhau .
smwikipedia

4

Trong bộ nhớ flash hiện đại, tôi không biết bất kỳ lý do nào để chọn các số trên số 0 làm mặc định. Việc đọc được thực hiện thông qua các bộ khuếch đại cảm giác dòng vi sai, vì vậy về nguyên tắc bạn có thể lấy đầu ra từ hai phía. (Các EEPROM đầu tiên có thể có các mạch đọc đơn giản hơn - tôi không chắc chắn.)

một lý do chính đáng không thêm biến tần thêm - nó sẽ làm tăng sự chậm trễ tuyên truyền từ bộ nhớ đến CPU. Trong vi điều khiển, cơ sở dữ liệu flash đến CPU có ảnh hưởng rất lớn đến hiệu năng tổng thể của hệ thống, vì nó xác định thời gian cần thiết để tìm nạp các hướng dẫn mới.

Các nhà thiết kế mạch kỹ thuật số thường mong đợi số 0 có nghĩa là xóa / đặt lại / xóa. Nhưng bóng bán dẫn flash và mạch đọc là tương tự. Từ quan điểm đó, mô tả trạng thái dẫn của bóng bán dẫn flash là một logic hợp lý có ý nghĩa hơn. Và thực tế là việc chuyển từ số một thành số 0 là rất nhiều, nhanh hơn nhiều so với việc chuyển từ số 0 sang số một, do đó, người ta trở thành trạng thái "bị xóa" trong khi số 0 trở thành trạng thái "được lập trình".

Phiên bản ngắn: Các nhà vật lý bán dẫn và nhà thiết kế mạch tương tự không quan tâm đến trực giác kỹ thuật số của bạn. :-)


1

Tôi không chắc bạn đang trích dẫn từ cái gì, nhưng đi ra khỏi trang Wikipedia cho bộ nhớ flash, nó dường như là kết quả của phần cứng đằng sau bộ nhớ flash:

Một tế bào flash NOR một cấp ở trạng thái mặc định tương đương về mặt logic với giá trị "1" nhị phân, bởi vì dòng điện sẽ chạy qua kênh dưới ứng dụng của một điện áp thích hợp đến cổng điều khiển, để điện áp bitline được kéo xuống. "

Nếu bạn sử dụng một loại đèn flash khác, ví dụ NAND, trạng thái mặc định sẽ là 1 vì đầu ra của NAND là 1 khi bất kỳ đầu ra nào của bóng bán dẫn đều nằm dưới điện áp ngưỡng cao / thấp của chúng.

Xin lỗi nếu tôi hoàn toàn bỏ lỡ chiếc thuyền về những gì bạn đang hỏi, tôi cũng khá mới với tất cả những điều này.


1
Nhưng do có một mạch giữa các ô và các chân, giống như hầu hết các cấu trúc logic có thể thực hiện một số nghịch đảo ngầm, tại sao trạng thái bị xóa nhất thiết phải được sử dụng là "0" chứ không phải là "1"?
Chris Stratton

Tôi hoàn toàn không hiểu câu hỏi của bạn - trạng thái ERASE không được sử dụng là "1"? Tôi yêu cầu liên quan đến vấn đề này (trong phần "EEPROM MEMOR CELL OPERATION AND CHARACTERISTICS").
llee94

Trạng thái điện nào của tế bào tự tương ứng với trạng thái logic nào của giao diện bên ngoài có vẻ gần như tùy ý, vì có nhiều phần tử, có thể có nghĩa là đảo ngược các phần tử mạch giữa hai phần.
Chris Stratton

1
@ChrisStratton Tôi tin rằng Ilee94 nói rằng trạng thái bị xóa thực sự là 1. Nhưng nó thực sự là tùy ý - nếu bạn đặt bộ biến tần trên các dòng dữ liệu thì nó sẽ giống như bạn mô tả. 1 là trạng thái mặc định đơn giản chỉ cần phần cứng ít hơn một chút.
tcrosley

Hoặc một chút hơn phần cứng - nó thực sự phụ thuộc của nếu có một số lẻ hoặc thậm chí các yếu tố mạch ngầm đảo ngược giữa các tế bào và sản lượng.
Chris Stratton

1

Các ROM và Prom trở lại khi phải thao tác bằng cách thêm kim loại vào lớp mặt nạ trong quá trình sản xuất hoặc đốt cháy nó trong lập trình và cả hai quá trình đều có trạng thái cao mặc định khi được sản xuất. Để chúng mặc định ở mức THẤP sẽ có chi phí nhiều bóng bán dẫn hơn, làm giảm sự thuận tiện trong lập trình hoặc tốc độ vận hành theo một cách nào đó.

Nó đã trở thành quy ước bởi vì việc thêm một biến tần tại một số điểm trong đường dẫn dữ liệu ngày nay là có thể.

Quy ước có thể đã bắt đầu vào thời của các mảng bộ nhớ logic diode có điốt để kéo xuống các dòng dữ liệu khi chúng được xử lý và các từ bộ nhớ không sử dụng sẽ không có điốt thay vì tất cả các điốt. Hầu hết các tiêu chuẩn logic kỹ thuật số ban đầu đã chủ động kéo THẤP và nổi cao nếu không.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.