Académique Documents
Professionnel Documents
Culture Documents
Abstract
We present MStore, an expansion board for telos and mica
family nodes that provides a non volatile memory hierarchy.
MStore has four memory chips: a 32KB FRAM, an 8MB
NOR flash, a 16MB NOR flash, and a 256MB NAND flash,
which can be expanded to 8GB if needed. All chips provide
an SPI bus interface to the node processor. MStore also
includes a Complex Programmable Logic Device (CPLD),
whose primary purpose is to be an SPI to parallel interface
for the NAND chip. The CPLD can also be used to offload
complex data processing.
Using TinyOS TEP-compliant drivers, we measure the
current draw and latencies of read, write, and erase operations of different sizes on each of the storage chips. Through
this quantitative evaluation, we show that MStores manylevel hierarchy and simple design provide an open and flexible platform for sensor network storage research and experimentation.
1.
INTRODUCTION
Permission to make digital or hard copies of all or part of this work for
personal or classroom use is granted without fee provided that copies are
not made or distributed for profit or commercial advantage and that copies
bear this notice and the full citation on the first page. To copy otherwise, to
republish, to post on servers or to redistribute to lists, requires prior specific
permission and/or a fee.
Copyright 200X ACM X-XXXXX-XX-X/XX/XX ...$5.00.
2.
BOARD DESIGN
3.
CHIPS
The MStore storage board consists of four different storage chips with varying characteristics and behaviors. It also
includes a Complex Programmable Logic Device by which
one can program logic directly into the storage board, offloading processing from the sensor mote. The board can act
as an extension to both the telosb([2]) and the micaz([13])
sensor nodes.
Total Size
Page Size
Bytes
Block Size
KB
Sector Size
KB
Read Unit
Bytes
M25P64
AT26DF161
FM25L256
K9F2G08UXA
8MB
2MB
32KB
256MB
256
256
2048
128
64
128
-
1 to
1 to
1
2048
1
1
Write Unit
Bytes
Erase Unit
KB
1 to 256
1 to 256
1
2048
64
4/32/64
NA
128
Max
50
4
15
20
20
20
Measured
1.7
4.5
4.8
4.8
Units
A
mA
mA
mA
mA
mA
3.2
The AT26DF161 [1] is a 2MB serial interface Flash memory device. It has sixteen 128-Kbyte physical sectors and
each sector can be individually protected from program and
erase operations. The chip has a flexible erase architecture
supporting four different erase granularities of 4KB, 32 KB,
64KB and full chip granularity. The data sheet claims that
the chip is designed for use in a wide variety of high-volume
consumer based applications in which program code is shadowed from flash memory into embedded or external RAM
for execution. The erase granularity also makes it ideal for
data storage.
Protection: The AT26DF161 also offers a sophisticated
method for protecting individual sectors against erroneous
or malicious program and erase operations. By providing
the ability to individually protect and unprotect sectors, a
system can unprotect a specific sector to modify its contents
while keeping the remaining sectors of the memory array securely protected. This is useful in applications where program code is patched or updated on a subroutine or module
basis, or in applications where data storage segments need to
be modified without running the risk of errant modifications
to the program code segments. In addition to individual
sector protection capabilities, the AT26DF161 incorporates
Global Protect and Global Unprotect features that allow the
entire memory array to be either protected or unprotected
all at once. This reduces overhead during the manufacturing
process since sectors do not have to be unprotected one-byone prior to initial programming.
Typ
1.4
Max
5
Units
ms
(0.4
+
n/256)
1
68
ms
3
160
sec
sec
Typ
1.5
Max
5.0
Units
ms
0.05
0.35
1.0
18
0.2
0.6
0.7
28
sec
sec
sec
sec
3.4
Table 5: AT26DF161: Current draw characteristics
Parameter
Standby Current
Deep Power-Down Current
Read Operation at 20 MHz
Page Program
Sector Erase
Bulk Erase
3.3
Typ(Max)
25(35)
4(8)
7(10)
12(18)
14(20)
14(20)
Measured
10.7
12.8
11.4
11.3
Units
A
A
mA
mA
mA
mA
FM25L256 FRAM
Typ(Max)
-(1)
15(30)
15(30)
Measured
0.70
0.71
Units
A
mA
mA
3.5
The XC2C32A [8] is a Complex Programmable Logic Device (CPLD) chip manufactured by XILINX and is a part of
its CoolRunner-II CPLD family. It provides a 100% digital
core with up to 323 MHz performance. The CPLD pro-
Typ
.2
1.5
Max
0.7
2
Units
ms
ms
Typ(Max)
10(50)
15(30)
15(30)
15(30)
Measured
NI
2
7.03
8.63
Units
A
mA
mA
mA
4.
DRIVER DESIGN
5.
EVALUATION
The datasheets for the various chips give the current usage and latency values for read, write and erase operations.
However, the actual values in practice tend to be very different due to the overhead of driver associated with each
individual operation. Hence, we decided to experimentally
measure the latency and current usage characteristics of various operations by exercising the driver code corresponding
to each individual chip.
Experimental Setup: The experiments were carried out
on an MStore chip connected to a Telosb sensor node. Each
of the chips had a single volume implementing the Block
Storage abstraction as defined by TEP 103. Read and write
characteristics were measured by reading and writing a byte,
a page, two pages, sector size and flash size worth of data.
The erase characteristics were measured by exercising the
bulk and sector erase commands4 . The sensor did not any
other application running on top of TinyOS while the measurements were taken.
5.1
Latency Characteristics
5.2
Energy Characteristics
Sector Erase
Block Erase
4KB
32KB
64KB
Bulk Erase
FM25L256
NA
M25P64
3.89
AT26DF161
18.47
NA
NA
NA
NA
NA
NA
NA
241.47
9.24
9.26
18.48
245.52
5
Standby current could not be measured due to the limited
resolution of the oscilloscope
AT26DF161
Units
Erase
Sector Erase
Bulk Erase
NA
NA
0.289
17.967
0.578
13.449
sec
sec
Read
1
256
512
Sector Size
Flash Size
0.576
6.222
12.441
NA
0.829
0.571
6.218
12.430
1.656
19.117
0.572
6.219
12.432
3.274
52.587
ms
ms
ms
sec
sec
Write
1
256
512
Sector Size
Flash Size
0.717
5.946
11.985
NA
0.772
34.198
39.309
78.760
8.985
51.806
34.301
72.690
145.382
25.066
56.502
ms
ms
ms
sec
sec
Operation
6.
DISCUSSION
6.1
7.
CONCLUSION
Acknowledgements
We would like to thank Kevin Klues for providing us with
the code to help calibrating the number of clock cycles required to execute each split phase operation. We would also
like to thank Prabal Dutta, Gaurav Mathur and Deepak
Ganesan for discussions and their feedback and general advice.
8.
REFERENCES