1. A method of providing nonvolatile storage with a programmable transistor, comprising: receiving a data value to be stored in the programmable transistor; and programming the programmable transistor to store the received data value, wherein programming comprises: applying a selected voltage to the programmable transistor, wherein the selected voltage is selected to inject carriers into a gate oxide layer of the programmable transistor, wherein the carriers are maintained in the gate oxide layer of the programmable transistor in the absence of the selected voltage, thereby programming the programmable transistor with the received data value.