Spring 2008



FAQ

Design Project One: Frequently-Asked Questions

Last updated: $Date: 2008-03-18 22:04:17 -0400 (Tue, 18 Mar 2008) $


Q: Do I really need to stay within 2,500 words?

A: Yes. We expect you to adhere to the word limit. That said, we're not going to penalize you for being just a few words over the limit -- we're mostly concerned with the quality of your report. If your report contains 2,500 + X words, and you're worried whether X counts as "just a few," you should probably cut some words. Remember to print the word count at the end of your final report.

Q: Do the figure captions count against the word limit?

A: Yes. Don't skimp on captions to lower your word count however; appropriate captions are important for clarity.

Q: What does size() return? Can it change over time?

A: Size() returns the capacity of the device (after format() is called), not the current amount of free space. For the purposes of this assignment, size() is fixed over the lifetime of the device.

Q: What happens when a block is erased 100,001 times?

A: Even with a perfect wear-leveling strategy, your flash device will have a limited lifespan. Do not focus on device behavior towards the end of its life, and for simplicity assume that once one block has been erased 100,001 times, the behavior of the entire device is undefined. You should adopt a wear leveling strategy that prolongs the life of the device for as long as possible.

Q: Can we write multiple times to different bytes within a page, without performing an erasure?

A: In this project you can only write once to the data area of a page, regardless of whether you write to the entire page or a subset of bytes. You must erase the block containing the page before writing to the page data area again. While you can make four individual writes to the metadata section between erasures, you can't write to the same byte more than once.

Q: What is the exact workload the device will be subjected to? I really need to know.

A: You are designing the flash controller for a USB memory stick. You have no control over what workloads users will subject it to, so should aim to be as general as possible. Expect that the device may be subjected to random and sequential reads and writes, and that some sectors may be written more frequently than others. There will be inevitable tradeoffs involved, but you should identify these in your analysis.

Q: Do we need to store pages in RAM before returning them in response to a read() call?

Assume you can write directly from flash into the void* buffer provided by the host in a read() call - you don't need to store the page in RAM in the interim. You can also perform a flash_write() by writing directly from the buffer provided in a write() call. (ie. you can pass the same pointer from write() to flash_write() and from flash_read() to read())

Q: Can we assume the existence of a random number generator?

Yes, you may assume that the device provides support for generating high-quality (uniformly distributed) random numbers.

Questions or comments regarding 6.033? Send e-mail to the 6.033 staff at or to the 6.033 TAs at

Top // 6.033 home // $Id: faq.html,v 1.7 2007/03/21 17:55:49 benmv Exp $