Trạng thái chờ bộ nhớ flash là gì?


10

Tôi đang sử dụng một vi điều khiển PowerPC miễn phí. Trong mô-đun bộ nhớ flash trong biểu dữ liệu, số lượng "trạng thái chờ của truy cập bộ nhớ flash" có thể định cấu hình được.

Sau đây là một phần của biểu dữ liệu đưa ra câu hỏi của tôi, nó được lấy từ mô tả đăng ký của các thanh ghi mô-đun PFlash:

Trường này phải được đặt thành giá trị tương ứng với tần suất hoạt động của PFlash và thời gian truy cập đọc thực tế của PFlash. Tần số hoạt động cao hơn yêu cầu cài đặt khác không cho trường này để vận hành Flash thích hợp.
0 MHz, <23 MHz, trạng thái chờ cần thiết = 0 ---
23 MHz, <45 MHz, trạng thái chờ cần thiết = 1 ---
45 MHz, <68 MHz, trạng thái chờ cần thiết = 2 ---
68 MHz, <90 MHz, trạng thái chờ cần thiết = 3 ---

(PFlash là mô-đun bộ điều khiển Flash nền tảng)

Tôi hiểu rằng bộ xử lý nhanh hơn đèn flash, đó là lý do tại sao trạng thái chờ được giới thiệu. Điều tôi không hiểu là: nếu bộ xử lý nhanh hơn flash, thì bộ xử lý là thứ cần được làm chậm không phải là flash, nhưng đoạn trên nói ngược lại (hoặc tôi không hiểu điều này?), Nó nói rằng trong trường hợp Pflash được vận hành với tần số cao, thì chúng ta cần làm chậm nó bằng cách thêm vào trạng thái chờ bổ sung !!

Có gì sai với sự hiểu biết của tôi?

Cảm ơn


1
Nếu tôi hiểu chính xác, là bộ điều khiển có thể được đặt ở các tốc độ khác nhau; do đó, phải chờ bộ nhớ Flash thực tế có sẵn dữ liệu.
clabacchio

Câu trả lời:


8

Để khuếch đại câu trả lời của stevenvh, bất kỳ loại logic nào, khi được cung cấp tín hiệu đầu vào, sẽ mất một thời gian để tạo tín hiệu đầu ra; bộ nhớ thường rất chậm so với logic khác. Thông thường, sẽ có một đảm bảo rằng tín hiệu đầu ra sẽ có hiệu lực trong một khoảng thời gian nhất định, nhưng đó là nó. Cụ thể, có thể tín hiệu có thể thay đổi nhiều lần trong khoảng đó và sẽ không có dấu hiệu nào, trước khi kết thúc khoảng đó, tín hiệu đã đạt được giá trị "chính xác" cuối cùng.

Khi một bộ vi điều khiển hoặc bộ vi xử lý thông thường đọc một byte (hoặc từ, hoặc bất kỳ đơn vị nào) của bộ nhớ, nó sẽ tạo ra một địa chỉ và một lúc sau, nhìn vào giá trị đầu ra của bộ nhớ và tác động lên nó. Giữa thời gian bộ điều khiển tạo địa chỉ và thời gian nó nhìn vào giá trị từ bộ nhớ, nó không quan tâm khi nào hoặc liệu tín hiệu đầu ra từ bộ nhớ có thay đổi hay không. Mặt khác, nếu tín hiệu từ bộ nhớ chưa ổn định đến giá trị cuối cùng vào thời điểm bộ điều khiển nhìn vào nó, bộ điều khiển sẽ đọc sai bộ nhớ vì đã giữ bất kỳ giá trị nào được đưa ra tại thời điểm nó nhìn. Thông thường bộ điều khiển sẽ xem xét giá trị từ bộ nhớ ngay khi nó sẵn sàng làm điều gì đó với nó, nhưng nếu giá trị của bộ nhớ sẽ không sẵn sàng thì điều đó có thể không hoạt động. Hậu quả là, nhiều bộ điều khiển có tùy chọn chờ thêm một chút sau khi chúng sẵn sàng xử lý dữ liệu từ bộ nhớ, để đảm bảo rằng đầu ra từ bộ nhớ thực sự hợp lệ. Lưu ý rằng việc thêm độ trễ như vậy sẽ làm chậm mọi thứ (bộ điều khiển sẽ vui lòng xử lý dữ liệu từ bộ nhớ sớm hơn), nhưng sẽ không ảnh hưởng đến tính chính xác của hoạt động (trừ khi mọi thứ bị chậm lại đến mức không thể đáp ứng các nghĩa vụ thời gian khác).


Đẹp! Cảm ơn bạn đã chi tiết hữu ích bạn giải thích!
MohamedEzz

1
@MemoryLeaks: Niềm vui của tôi. Một điều quan trọng cần lưu ý là việc giảm các trạng thái chờ dưới giới hạn đã chỉ định sẽ khiến hệ thống chạy nhanh hơn, nhưng đọc từ bộ nhớ có thể tùy ý cung cấp dữ liệu không chính xác; hơn nữa, "tùy ý mang lại dữ liệu không chính xác" có thể có nghĩa là "mang lại dữ liệu chính xác cho đến khi thiết bị bạn thiết kế nằm trong tay khách hàng của bạn và sau đó bắt đầu thu được dữ liệu không chính xác thường đủ để khiến khách hàng rất tức giận với bạn."
supercat

1
Điều này dường như rất ép xung song song, nhưng nhiều hơn một tùy chọn cấu hình của nó. Cách thú vị để ép xung MCU có lẽ.
sherrellbc

1
@supercat, Một câu hỏi ý nghĩa của bộ điều khiển là bộ xử lý hay bộ điều khiển bộ nhớ?
Mouin

1
@Mouin: Bộ điều khiển bộ nhớ nếu có, hoặc bộ xử lý nếu không có.
supercat

9

Các trạng thái chờ được thêm vào chu trình truy cập bộ nhớ do CPU khởi tạo. Vì vậy, nó thực sự là CPU phải chờ Flash chậm hơn. Bộ điều khiển bộ nhớ báo hiệu "chưa sẵn sàng" cho CPU trong một số chu kỳ (0 đến 3) và trong khi đó, CPU vẫn ở trạng thái hiện tại, tức là đã ghi địa chỉ Flash, nhưng chưa đọc dữ liệu. Chỉ khi bộ điều khiển bộ nhớ báo hiệu "dữ liệu sẵn sàng", CPU sẽ đọc từ bus dữ liệu và tiếp tục hướng dẫn của nó (chốt dữ liệu vào một thanh ghi hoặc vào RAM).


1
Vì vậy, bằng cách định cấu hình cài đặt đó, tôi sẽ nói với bộ điều khiển bộ nhớ khi nào báo hiệu chính xác "dữ liệu đã sẵn sàng". Tôi không thể chỉ bảo bộ nhớ báo hiệu "dữ liệu đã sẵn sàng" khi nó thực sự sẵn sàng?
MohamedEzz

1
@MemoryLeaks - Điều đó là có thể, và nó được thực hiện bởi các bộ xử lý không đồng bộ, rất hiếm. Nó phổ biến hơn và dễ dự đoán hơn, để đồng bộ hóa mọi thứ bằng đồng hồ. Vì vậy, đó là độ trễ chu kỳ đồng hồ (hoặc 2 hoặc 3) hoặc không có gì.
stevenvh

Cảm ơn câu trả lời của bạn :) Vì vậy, để tóm tắt: mô tả trong câu hỏi của tôi ở trên có nghĩa là nó sẽ trì hoãn "CPU" chứ không phải bộ điều khiển Flash
MohamedEzz

1
@stevenvh bộ xử lý thực sự treo cái này, nó nhận dữ liệu từ bộ nhớ, ý tôi là nó hoàn toàn dừng thực thi hay nó sẽ thực thi các lệnh khác trong trường hợp CPU có đường ống. Điều gì về các ngắt tôi đoán chúng sẽ được phục vụ trong khi CPU đang chờ bộ nhớ sẵn sàng?
Miguel Sanchez

3

Bộ xử lý có thể cần phải trì hoãn bộ nhớ, nhưng một thiết kế thông minh sẽ không cần.

Tôi nghĩ rằng công nghệ chính mà bạn không biết là truy cập chế độ trang / cụm . Điều đó cho phép băng thông truy cập bộ nhớ rất gần với tốc độ của bộ xử lý (nhưng có lẽ Flash vẫn là nút cổ chai vì tôi chưa bao giờ thấy MCU dựa trên Flash chạy ở tốc độ> 200MhZ)

Tuy nhiên, độ trễ vẫn giữ nguyên. Ví dụ: đối với MCU STM32F4 mà tôi đang sử dụng, #wait state = floor (clockSpeed ​​/ 30MhZ). Điều đó có nghĩa là độ trễ luôn là 33ns, bất kể tốc độ xung nhịp. Có một câu nói, "Tiền có thể mua băng thông, nhưng độ trễ là mãi mãi ..."

Ngay cả khi băng thông Flash không đủ để giữ CPU bận rộn, bạn có thể dễ dàng thiết kế bộ đệm mã lưu trữ và tìm nạp trước các hướng dẫn dự kiến ​​sẽ thực thi. ST có một gợi ý về điều này cho MCU STM32F4 của họ (168 MhZ):

Nhờ trình tăng tốc ART và bộ nhớ Flash 128 bit, số trạng thái chờ được đưa ra ở đây không ảnh hưởng đến tốc độ thực thi từ bộ nhớ Flash do trình tăng tốc ART cho phép đạt được hiệu suất tương đương với thực thi chương trình trạng thái chờ 0.

Trên thực tế, tuyên bố cũng cho thấy chế độ chụp không cần thiết và giao diện bộ nhớ rất rộng cũng đủ. Nhưng ý tưởng là như nhau (sử dụng song song để che giấu độ trễ). Trên chip, dây là miễn phí, vì vậy bộ nhớ 128 bit sẽ có ý nghĩa.


Nói chung, các dây không phải là "miễn phí" trên chip, nhưng việc tăng chiều rộng bus giữa một mảng bộ nhớ và một bộ chốt không thêm dây. Nếu một con chip có mảng flash 256kbit được tổ chức dưới dạng lưới 512x512, thì việc nối dây và logic để ngưng tụ 512 cột thành một bus 32 bit sẽ là cần thiết cho dù người ta có đặt chốt rộng 512 bit trước dây và logic "ngưng tụ" hoặc một chốt rộng 32 bit sau chúng.
supercat

1
Ý tôi là chúng "miễn phí" so với chân ngoài. Tôi biết rằng năng lượng dây thống trị những ngày này và địa phương là quan trọng, vì vậy hãy để tôi đủ điều kiện tuyên bố đó. Chúng được tự do thực hiện, nhưng không miễn phí để bật!
Yale Zhang

1
Tôi không chắc ý của bạn về "năng lượng dây", nhưng ngay cả từ góc độ không gian, xe buýt lớn rất đắt tiền, nhưng nếu tăng gấp đôi chiều rộng của xe buýt thì sẽ giảm khoảng một nửa chi phí trong tổng thể.
supercat
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.