System and method for error correction

By adopting error correction coding technology in autonomous driving and driver assistance systems, the writing and reading efficiency of data sub-blocks and error correction code sub-blocks is improved, and the problem of low system error correction efficiency is solved, and a higher system is achieved Reliability and performance.

CN110799947BActive Publication Date: 2024-12-24MOBILEYE VISION TECH LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN201880025612.2
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2017-04-17
Filing Date
2018-04-17
Publication Date
2024-12-24
Estimated Expiration
2038-04-17

AI Technical Summary

Technical Problem

The existing autonomous driving and driver assistance systems have problems with low error correction efficiency when processing and storing data, resulting in insufficient read and write throughput related to error correction, which affects the overall performance and reliability of the system.

Method used

By using error correction encoding (ECC) technology in the dynamic memory module, the communication link between the dynamic memory controller and the cache memory is used to realize efficient writing and reading of data sub-blocks and error correction code sub-blocks, adding writes Input and read throughput reduce the cost associated with error correction.

Benefits of technology

It improves the error correction efficiency of the system, reduces the chance of failure, provides a stronger system, reduces system costs and energy consumption, and simplifies system design.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN110799947B_ABST
    Figure CN110799947B_ABST
Patent Text Reader

Abstract

A method and system for error correction. The method may include: opening a selected row of a memory bank among a plurality of memory banks of a dynamic memory module; and when the selected row is opened, (i) receiving a selected data sub-block, wherein the selected data sub-block is targeted for writing into the selected row, (ii) calculating a selected error correction code sub-block associated with the selected data sub-block, (iii) caching the selected error correction code sub-block in a cache memory different from the dynamic memory module, and (iv) writing the selected error correction code sub-block into the selected row.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Cross-references

[0002] This application claims priority to U.S. Provisional Patent Serial No. 62 / 486,006, filed April 17, 2017, which is incorporated herein by reference. Background Art

[0003] Advanced driver assistance systems (ADAS) and autonomous vehicle (AV) systems use cameras and other sensors along with object classifiers designed to detect specific objects in the environment of a vehicle navigating on a road. Object classifiers are designed to detect predefined objects and are used in ADAS and AV systems to control the vehicle or warn the driver based on, among other things, the type of object detected at its location.

[0004] As ADAS and AV systems move toward fully autonomous operation, it will be beneficial to protect the data generated by these systems. Summary of the invention

[0005] The following detailed description refers to the accompanying drawings. Where possible, the same reference numerals are used in the drawings and the following description to refer to the same or similar parts. Although several illustrative embodiments are described herein, modifications, adaptations, and other implementations are possible. For example, the components shown in the drawings may be replaced, added, or modified, and the illustrative methods described herein may be modified by replacing, reordering, removing, or adding steps to the disclosed methods. Therefore, the following detailed description may not be limited to the disclosed embodiments and examples.

[0006] The disclosed embodiments provide systems and methods that can be used as part of or in conjunction with autonomous navigation / driving and / or driver assistance technology features. In contrast to fully autonomous driving, driver assistance technology refers to any suitable technology for assisting a driver in navigating and / or controlling their vehicle, e.g., FCW, LDW, and TSR.

[0007] A method for error correction may be provided, the method may include: opening a selected row of a memory bank among a plurality of memory banks of a dynamic memory module; when the selected row is opened, a selected data sub-block may be received by the dynamic memory module, wherein the selected data sub-block is received via a communication link and is targeted for writing into the selected row; when the selected row may be opened, calculating a selected error correction code sub-block associated with the selected data sub-block by an error correction code unit; caching the selected error correction code sub-block in a cache memory different from the dynamic memory module; when the selected row may be opened, writing the selected error correction code sub-block into the selected row; wherein writing may include sending the selected error correction code sub-block to the dynamic memory module via the communication link; and closing the selected row.

[0008] A system with error correction capability can be provided, the system can include a dynamic memory controller, a dynamic memory module that can be coupled to a communication link; a cache memory and an error correction code unit; wherein the dynamic memory controller can be arranged to: (a) open a selected row of a memory bank among a plurality of memory banks of the dynamic memory module; (b) receive a selected data sub-block when the selected row can be opened, the selected data sub-block being written to a selected row target; wherein the dynamic memory module can be configured to receive the selected data sub-block from the dynamic memory controller via the communication link; wherein the error correction code unit can be arranged to calculate a selected error correction code sub-block associated with the selected data sub-block when the selected row can be opened; wherein the cache memory is different from the dynamic memory module and can be arranged to cache the selected error correction code sub-block; wherein the dynamic memory controller can also be arranged to (a) send the selected error correction code sub-block to the dynamic memory module via the communication link; (b) write the selected error correction code sub-block to the selected row via the communication link when the selected row can be opened; and (c) close the selected row.

[0009] A computer program product storing instructions can be provided, which once executed by a computer system, can cause the computer system to perform the following steps: opening a selected row of a memory bank among a plurality of memory banks of a dynamic memory module; receiving a selected data sub-block by the dynamic memory module when the selected row can be opened; wherein the selected data sub-block is received via a communication link and is targeted to be written into the selected row; calculating a selected error correction code sub-block associated with the selected data sub-block by an error correction code unit when the selected row can be opened; caching the selected error correction code sub-block in a cache memory different from the dynamic memory module; writing the selected error correction code sub-block into the selected row when the selected row can be opened; wherein writing can include sending the selected error correction code sub-block to the dynamic memory module via the communication link; and closing the selected row. BRIEF DESCRIPTION OF THE DRAWINGS

[0010] The accompanying drawings, which are incorporated in and constitute a part of this disclosure, illustrate various disclosed embodiments.

[0011] In the attached picture:

[0012] Figure 1 is a block diagram representation of a system consistent with the disclosed embodiments;

[0013] Figure 2A is a schematic side view of an exemplary vehicle including a system consistent with the disclosed embodiments;

[0014] Figure 2B is consistent with the disclosed embodiments Figure 2AA schematic top view of the vehicle and system shown in ;

[0015] Figure 2C is a schematic top view of another embodiment of a vehicle including a system consistent with the disclosed embodiments;

[0016] Figure 2D is a schematic top view of yet another embodiment of a vehicle including a system consistent with the disclosed embodiments;

[0017] Figure 2E is a schematic diagram of an exemplary vehicle control system consistent with the disclosed embodiments;

[0018] Figure 3 is a schematic diagram of a vehicle interior including a rearview mirror and a user interface for a vehicle imaging system consistent with the disclosed embodiments;

[0019] Figure 4 is a block diagram of a dynamic memory module, a dynamic memory controller, and an error correction code unit consistent with the disclosed embodiments.

[0020] Figure 5 is a block diagram of a dynamic memory module and a dynamic memory controller including an error correction code unit consistent with the disclosed embodiments;

[0021] Figure 6 shows a timing diagram consistent with the disclosed embodiments;

[0022] Figure 7 Methods consistent with the disclosed embodiments are shown; and

[0023] Figure 8 Methods consistent with the disclosed embodiments are shown. DETAILED DESCRIPTION

[0024] Before discussing in detail examples of features of error correction coding and memory management of a dynamic memory module of the system, various features related to autonomous driving, semi-autonomous driving, and / or driver assistance technologies may be provided.

[0025] The system may be arranged to process images of the environment in front of a vehicle navigating on a road to train a neural network or deep learning algorithm to estimate the vehicle's future path based on the images, or to use a trained neural network to process images of the environment in front of a vehicle navigating on a road to estimate the vehicle's future path.

[0026] Various possible implementations and configurations of vehicle-mountable systems that can be used to perform and implement methods according to examples of the presently disclosed subject matter can be provided. In some embodiments, various examples of the system can be installed in a vehicle and can be operated while the vehicle is in motion. In some embodiments, the system can implement methods according to examples of the presently disclosed subject matter.

[0027] However, it will be understood that embodiments of the present disclosure are not limited to scenarios where suspicious upright object indications are caused by high-level roads. Suspicious upright object indications can be associated with a variety of other situations and can be generated by other types of image data, as well as data that is not image-based or not entirely image-based.

[0028] Now refer to Figure 1 1 is a block diagram representation of a system consistent with the disclosed embodiments. The system 100 may include various components depending on the requirements of a particular implementation. In some examples, the system 100 may include a processing unit 110, an image acquisition unit 120, and one or more storage units 140, 150. The processing unit 110 may include one or more processing devices. In some embodiments, the processing unit 110 may include an application processor 180, an image processor 190, or any other suitable processing device. Similarly, depending on the requirements of a particular application, the image acquisition unit 120 may include any number of image acquisition devices and components. In some embodiments, the image acquisition unit 120 may include one or more image acquisition devices (e.g., cameras), such as image acquisition device 122, image acquisition device 124, and image acquisition device 126. In some embodiments, the system 100 may also include a data interface 128 that communicatively connects the processing unit 110 to the image acquisition device 120. For example, the data interface 128 may include any one or more wired and / or wireless links for sending image data acquired by the image acquisition device 120 to the processing unit 110.

[0029] Both application processor 180 and image processor 190 may include various types of processing devices. For example, one or both of application processor 180 and image processor 190 may include one or more microprocessors, preprocessors (e.g., image preprocessors), graphics processors, central processing units (CPUs), support circuits, digital signal processors, integrated circuits, memory, or any other type of device suitable for running applications and image processing and analysis. In some embodiments, application processor 180 and / or image processor 190 may include any type of single-core or multi-core processor, mobile device microcontroller, central processing unit, etc. Various processing devices may be used, including, for example, those available from manufacturers (e.g., etc.) and may include various architectures (e.g., x86 processors, wait).

[0030] In some embodiments, the application processor 180 and / or the image processor 190 may include a processor that can be Any of the EyeQ series processor chips available from Intel. Each of these processor designs includes multiple processing units with local memory and an instruction set. Such a processor may include a video input for receiving image data from multiple image sensors, and may also include video output capabilities. In one example, Using 90nm micron technology running at 332Mhz. Architecture features two floating-point, hyperthreaded 32-bit RISC CPUs ( cores), five visual computing engines (VCEs), and three vector microcode processors Denali 64-bit mobile DDR controller, 128-bit internal supersonic interconnect, dual 16-bit video input and 18-bit video output controllers, 16-channel DMA and multiple peripherals. MIPS34K CPU manages five VCEs, three VMPs TM and DMA, a second MIPS34K CPU and multi-channel DMA, and other peripherals. Five VCEs, three and MIPS34 CPU can perform the intensive visual calculations required by the multi-function kit application. In another example, the disclosed example can be used It is a third generation processor and its performance is In yet another example, a fourth generation processor may be used in the disclosed example.

[0031] although Figure 1 Two separate processing devices are depicted as included in processing unit 110, but more or fewer processing devices may be used. For example, in some examples, a single processing device may be used to complete the tasks of application processor 180 and image processor 190. In other embodiments, these tasks may be performed by more than two processing devices.

[0032] The processing unit 110 may include various types of devices. For example, the processing unit 110 may include various devices, such as a controller, an image preprocessor, a central processing unit (CPU), support circuits, a digital signal processor, an integrated circuit, a memory, or any other type of device for image processing and analysis. The image preprocessor may include a video processor for collecting, digitizing, and processing images from an image sensor. The CPU may include any number of microcontrollers or microprocessors. The support circuit may be any number of circuits generally known in the art, including cache, power supply, clock, and input-output circuits. The memory may store software that controls the operation of the system when executed by the processor. The memory may include a database and image processing software, including, for example, a trained system, such as a neural network. The memory may include any number of random access memories, read-only memories, flash memories, disk drives, optical storage devices, removable storage devices, and other types of storage devices. In one case, the memory may be separated from the processing unit 110. In another case, the memory may be integrated into the processing unit 110.

[0033] Each memory 140, 150 may include software instructions that, when executed by a processor (e.g., application processor 180 and / or image processor 190), may control the operation of various aspects of system 100. These storage units may include various databases and image processing software. The storage unit may include a random access memory, a read-only memory, a flash memory, a disk drive, an optical storage device, a tape storage device, a removable storage device, and / or any other type of storage device. In some examples, the storage units 140, 150 may be separate from the application processor 180 and / or the image processor 190. In other embodiments, these memory units may be integrated into the application processor 180 and / or the image processor 190.

[0034] In some embodiments, the system may include a location sensor 130. The location sensor 130 may include any type of device suitable for determining a location associated with at least one component of the system 100. In some embodiments, the location sensor 130 may include a GPS receiver. Such a receiver may determine the location and velocity of a user by processing signals broadcast by global positioning system satellites. The location information from the location sensor 130 may be available to the application processor 180 and / or the image processor 190.

[0035] In some embodiments, the system 100 may be operably connected to various systems, devices, and units on a vehicle on which the system 100 may be installed, and the system 100 may communicate with the vehicle's systems via any suitable interface (e.g., a communication bus). Examples of vehicle systems with which the system 100 may cooperate include: a throttle system, a braking system, and a steering system.

[0036] In some embodiments, system 100 may include a user interface 170. User interface 170 may include any device suitable for providing information to or receiving input from one or more users of system 100, including, for example, a touch screen, a microphone, a keyboard, a pointer device, a track wheel, a camera, a knob, a button, etc. System 100 may provide information to the user through user interface 170.

[0037] In some embodiments, the system 100 may include a map database 160. The map database 160 may include any type of database for storing digital map data. In some examples, the map database 160 may include data related to the location of various items (including roads, water features, geographic features, points of interest, etc.) in a reference coordinate system. The map database 160 may store not only the locations of these items, but also descriptors related to those items, including, for example, names associated with any stored features and other information about them. For example, the database may include the location and type of known obstacles, information about the terrain of the road or the slope of certain points along the road, etc. In some embodiments, the map database 160 may be physically located with other components of the system 100. Alternatively or additionally, the map database 160 or a portion thereof may be located away from other components of the system 100 (e.g., the processing unit 110). In such an embodiment, information from the map database 160 may be downloaded to a network (e.g., via a cellular network and / or the Internet, etc.) via a wired or wireless data connection.

[0038] Image acquisition devices 122, 124, and 126 may each include any type of device suitable for acquiring at least one image from the environment. In addition, any number of image acquisition devices may be used to acquire images for input to the image processor. Some examples of the presently disclosed subject matter may include or may be implemented using only a single image acquisition device, while other examples may include or may be implemented using two, three, or even four or more image acquisition devices. Figure 2B-2E Image acquisition devices 122, 124, and 126 are further described.

[0039] It should be understood that the system 100 may include or may be operably associated with other types of sensors, including, for example, acoustic sensors, RF sensors (e.g., radar transceivers), LIDAR sensors. Such sensors may be used independently of the image acquisition device 120 or in conjunction with the image acquisition device 120. For example, data from a radar system (not shown) may be used to verify processed information received from processed images acquired by the image acquisition device 120, for example, to filter certain false positives caused by processed images acquired by the image acquisition device 120, or it may be combined with or otherwise supplement image data from the image acquisition device 120, or certain processed variations or derivatives of image data from the image acquisition device 120.

[0040] The system 100 or its various components may be incorporated into a variety of different platforms. In some embodiments, the system 100 may be included in a vehicle 200, such as Figure 2A For example, vehicle 200 may be equipped with processing unit 110 and any other components of system 100, as described above with respect to Figure 1 Although in some embodiments the vehicle 200 may be equipped with only a single image acquisition device (e.g., a camera), in other embodiments, for example, a combination of Figure 2B-2E As discussed, multiple image acquisition devices may be used. For example, Figure 2A As shown, either of the image acquisition devices 122 and 124 of vehicle 200 may be part of an ADAS (Advanced Driver Assistance System) imaging set.

[0041] The image acquisition device included as part of the image acquisition unit 120 on the vehicle 200 can be positioned in any suitable location. In some embodiments, Figure 2A-2E and Figure 3 As shown, the image acquisition device 122 can be located near the rearview mirror. This location can provide a similar line of sight to the driver of the vehicle 200, which can help determine what is visible and invisible to the driver.

[0042] Other locations of the image acquisition devices of the image acquisition unit 120 may also be used. For example, the image acquisition device 124 may be located on or in the bumper of the vehicle 200. Such a location may be particularly suitable for an image acquisition device with a wide field of view. The line of sight of an image acquisition device located on the bumper may be different from the line of sight of the driver. The image acquisition devices (e.g., image acquisition devices 122, 124, and 126) may also be located in other locations. For example, the image acquisition device may be located on or in one or both of the side mirrors of the vehicle 200, on the roof of the vehicle 200, on the hood of the vehicle 200, on the trunk of the vehicle 200, on the side of the vehicle 200, mounted on any window of the vehicle 200, located behind it or located in front of it, and mounted in or near the light figure in front of and / or behind the vehicle 200. The image acquisition unit 120 or an image acquisition device that is one of a plurality of image acquisition devices used in the image acquisition unit 120 may have a field of view (FOV) that is different from the field of view (FOV) of the driver of the vehicle and may not always see the same objects. In one example, the FOV of the image acquisition unit 120 can extend beyond the FOV of a typical driver, and thus can image objects outside the driver's FOV. In yet another example, the FOV of the image acquisition unit 120 is some portion of the driver's FOV. In some embodiments, the FOV of the image acquisition unit 120 corresponds to an area covering the road in front of the vehicle and may also cover sectors around the road.

[0043] In addition to the image acquisition device, the vehicle 200 may also include various other components of the system 100. For example, the processing unit 110 may be included on the vehicle 200, integrated with or separate from the vehicle's engine control unit (ECU). The vehicle 200 may also be equipped with a position sensor 130, such as a GPS receiver, and may also include a map database 160 and storage units 140 and 150.

[0044] Figure 2A is a schematic side view of a vehicle imaging system according to an example of the presently disclosed subject matter. Figure 2B yes Figure 2A Schematic top view of the example shown. Figure 2B As shown, the disclosed example may include a vehicle 200 that includes a system 100 in its body having a first image capture device 122 positioned near a rearview mirror and / or near a driver of the vehicle 200, a second image capture device 124 positioned on or in a bumper area (e.g., one of the bumper areas 210) of the vehicle 200, and a processing unit 110.

[0045] like Figure 2CAs shown, both image acquisition devices 122 and 124 may be located near the rearview mirror of vehicle 200 and / or near the driver. Figure 2B and 2C Two image acquisition devices 122 and 124 are shown in FIG. 1 , but it should be understood that other embodiments may include more than two image acquisition devices. Figure 2D In the illustrated embodiment, first, second, and third image acquisition devices 122 , 124 , and 126 are included in the system 100 of a vehicle 200 .

[0046] like Figure 2D As shown, image capture devices 122, 124, and 126 may be located near a rearview mirror and / or near a driver's seat of vehicle 200. The disclosed examples are not limited to any particular number and configuration of image capture devices, and image capture devices may be positioned at any suitable location in and / or on vehicle 200.

[0047] It should also be understood that the disclosed embodiments are not limited to a particular type of vehicle 200 and may be applicable to all types of vehicles, including automobiles, trucks, trailers, motorcycles, bicycles, self-balancing transporters, and other types of vehicles.

[0048] The first image acquisition device 122 may include any suitable type of image acquisition device. The image acquisition device 122 may include an optical axis. In one example, the image acquisition device 122 may include an Aptina M9V024WVGA sensor with a global shutter. In another example, a rolling shutter sensor may be used. The image acquisition unit 120 and any image acquisition device implemented as part of the image acquisition unit 120 may have any desired image resolution. For example, the image acquisition device 122 may provide a resolution of 1280×960 pixels and may include a rolling shutter.

[0049] The image acquisition unit 120 and any image acquisition device implemented as part of the image acquisition unit 120 may include various optical elements. In some embodiments, one or more lenses may be included, for example, to provide a desired focal length and field of view for the image acquisition unit 120 and any image acquisition device implemented as part of the image acquisition unit 120. In some examples, an image acquisition device implemented as part of the image acquisition unit 120 may include or be associated with any optical element, for example, a 6 mm lens or a 12 mm lens. In some examples, the image acquisition device 122 may be arranged to acquire an image with a desired (and known) field of view (FOV).

[0050] The first image acquisition device 122 may have a scan rate associated with the acquisition of each of the first series of image scan lines. The scan rate may refer to the rate at which the image sensor may acquire image data associated with each pixel included in a particular scan line.

[0051] Figure 2E is a diagram of a vehicle control system according to an example of the presently disclosed subject matter. Figure 2E As shown, the vehicle 200 may include a throttle system 220, a brake system 230, and a steering system 240. The system 100 may provide input (e.g., control signals) to one or more of the throttle system 220, the brake system 230, and the steering system 240 via one or more data links (e.g., any one or more wired and / or wireless links for transmitting data). For example, based on the analysis of images acquired by the image acquisition devices 122, 124, and / or 126, the system 100 may provide control signals to one or more of the throttle system 220, the brake system 230, and the steering system 240 to navigate the vehicle 200 (e.g., by causing acceleration, turning, changing lanes, etc.). In addition, the system 100 may receive input indicating the operating conditions of the vehicle 200 (e.g., speed, whether the vehicle 200 is braking and / or turning, etc.) from one or more of the throttle system 220, the brake system 230, and the steering system 240.

[0052] like Figure 3 As shown, the vehicle 200 may also include a user interface 170 for interacting with a driver or passenger of the vehicle 200. For example, the user interface 170 in the vehicle application may include a touch screen 320, a knob 330, a button 340, and a microphone 350. The driver or passenger of the vehicle 200 may also interact with the system 100 using a handle (e.g., located on or near the steering column of the vehicle 200, including, for example, a turn signal handle), a button (e.g., located on the steering wheel of the vehicle 200), etc. In some embodiments, the microphone 350 may be positioned adjacent to the rearview mirror 310. Similarly, in some embodiments, the image acquisition device 122 may be located near the rearview mirror 310. In some embodiments, the user interface 170 may also include one or more speakers 360 (e.g., speakers of a vehicle audio system). For example, the system 100 may provide various notifications (e.g., alarms) via the speaker 360.

[0053] As will be appreciated by those skilled in the art who benefit from this disclosure, various changes and / or modifications may be made to the aforementioned disclosed embodiments. For example, not all components are essential for the operation of the system 100. In addition, any component may be located in any appropriate portion of the system 100, and the components may be rearranged into various configurations and simultaneously provide the functionality of the disclosed embodiments. Therefore, the aforementioned configurations are examples and are independent of the configurations discussed above, and the system 100 may provide a wide range of functionality to analyze the surroundings of the vehicle 200, and in response to the analysis, navigate and / or otherwise control and / or operate the vehicle 200. The navigation, control and / or operation of the vehicle 200 may include enabling and / or disabling various features, components, devices, modes, systems and / or subsystems associated with the vehicle 200 (directly or via an intermediate controller, such as the controller described above). Navigation, control, and / or operation may alternatively or additionally include interaction with a user, driver, passenger, passerby, and / or other vehicles or users located inside or outside the vehicle 200, for example, by providing visual, audible, tactile, and / or other sensory alerts and / or indications.

[0054] As discussed in further detail below and consistent with various disclosed embodiments, the system 100 can provide a variety of features related to autonomous driving, semi-autonomous driving, and / or driver assistance technology. For example, the system 100 can analyze image data, location data (e.g., GPS location information), map data, speed data, and / or data from sensors included in the vehicle 200. The system 100 can collect data from, for example, the image acquisition unit 120, the location sensor 130, and other sensors for analysis. In addition, the system 100 can analyze the collected data to determine whether the vehicle 200 should take a certain action, and then automatically take the determined action without human intervention. It should be understood that in some cases, the actions taken automatically by the vehicle are under human supervision, and in some cases or at any time, human intervention is enabled to adjust the ability to suspend or override mechanical actions. For example, when the vehicle 200 is navigating without human intervention, the system 100 can automatically control the braking, acceleration, and / or steering of the vehicle 200 (e.g., by sending control signals to one or more of the throttle system 220, the braking system 230, and the steering system 240). In addition, the system 100 can analyze the collected data and issue warnings, instructions, suggestions, alarms, or instructions to the driver, passengers, users, or other people inside or outside the vehicle (or other vehicles) based on the analysis of the collected data. Additional details about various embodiments provided by the system 100 are provided below.

[0055] The system can apply error correction coding in an efficient manner in terms of throughput and low latency. Arranging data sub-blocks and error correction code sub-blocks on the same row, writing the data sub-blocks and error correction sub-blocks to the row when the row of the dynamic memory module is opened can increase the write throughput by a factor of two, and caching the error correction blocks in the cache memory can also increase the read throughput by a factor of two.

[0056] This increase in read and write throughput greatly reduces the cost associated with error correction and even allows error correction coding (ECC) to be applied to (but not necessarily to) all areas in a dynamic memory module, such as (but not limited to) sensor images, not just code.

[0057] Applying ECC to sensor images, especially those with lower resolution (e.g., images acquired by radar sensors and images acquired by LIDAR sensors), improves the reliability of such images and reduces the required redundancy, thereby allowing the use of a smaller number of sensors, thereby reducing system cost, simplifying the system, and reducing system size and energy consumption. Therefore, applying ECC to LIDAR images can replace the need to use redundant LIDAR sensors to compensate for LIDAR image errors.

[0058] The low losses associated with applying ECC can simplify the application of ECC to images acquired by the image acquisition unit 120, as well as any processed images (or temporary data) generated during any of autonomous driving operations, semi-autonomous driving operations, and / or driver assistance technology operations (such as but not limited to automatic lane tracking, pedestrian detection, autonomous parking, etc.).

[0059] Applying ECC to various types of code and data can improve the reliability of system output and allow vehicles to be operated in a more optimized manner, even with lower protection measures.

[0060] Applying ECC to various types of code and data can reduce the chance of failures, reduce system failure in time (FIT) parameters, and provide a more robust system.

[0061] Figure 4 and Figure 5 An example of a dynamic memory module 410 and a dynamic memory controller 420 is shown. The dynamic memory module may be a DRAM and / or a DDR (Double Data Rate) memory module. In some of the following examples, it is assumed that the dynamic memory module is a DDR memory module.

[0062] A tandem ECC configuration may be used in which an error correction sub-block (also referred to as an ECC sub-block) and a data sub-block are sent in a serial manner over the same communication link (from dynamic memory module to dynamic memory module). Thus, the ECC bits and the data bits are sent in a serial manner over the same pins (or other interfaces) of the dynamic memory module. The tandem ECC configuration may require only a single dynamic memory module for storing ECC and data and is compliant with LPDDR4.

[0063] The dynamic memory module can be, for example, Figure 1 Any one of the memory modules 140 and 150.

[0064] The dynamic memory module 410 may receive (via the communication link 411) sub-blocks of data originating from a data generator, e.g. Figure 1 application processor 180 and image processor 190 (or any other data generator).

[0065] Dynamic memory module 410 may output sub-blocks of data (via communication link 411) to data consumers, such as, Figure 1 application processor 180 and image processor 190 (or any other data consumer).

[0066] exist Figure 4 In, the dynamic memory controller is coupled to the ECC unit 430. Figure 5 In the example embodiment, the ECC unit 430 is included in the dynamic memory controller 420 .

[0067] The dynamic memory module 410 may include one or more memory banks.

[0068] Figure 4 A single memory bank 418 is shown, while Figure 5 Eight memory banks 411-418 are shown. The dynamic memory module 410 may include any number of memory banks. For DDR performance considerations, it is beneficial to store ECC blocks with corresponding data blocks in the same DDR row.

[0069] During a write operation, ECC unit 430 may apply ECC operations to incoming data sub-blocks to provide ECC sub-blocks.

[0070] Each data written to the DDR requires a corresponding ECC generation and subsequent ECC write to the ECC cache / buffer (432).

[0071] Any ECC that is buffered in the DDR controller for write data should be written to memory at some point.

[0072] There may be various possible triggers for writing ECC to DDR. For example:

[0073] oOther data commands need to be buffered and the LRU ECC may need to be replaced

[0074] oDDR controller state needs to be cleared before entering low power mode

[0075] During a read operation, the ECC unit 430 may apply an ECC check to the data sub-blocks read from the dynamic memory module 410 to detect errors and correct them. Each data read from the DDR requires a subsequent corresponding ECC read unless this particular ECC already exists in the ECC cache / buffer.

[0076] The ECC unit 430 may perform an ECC operation (generation or check) on all data stored in the dynamic memory module 410 or a predefined area of ​​the dynamic memory module 410 that requires ECC protection.

[0077] Figure 5 Row 418(2) of memory bank 418 of dynamic memory module 410 is shown storing seven data blocks 401-407 and ECC block 408. Memory bank 418 may have any number of rows, and rows 418(1), 418(2), and 418(80) are merely examples of some rows of memory bank 418.

[0078] Each data block may include a plurality of data sub-blocks, such as data sub-blocks 410(1)-401(8) of data block 401. The data sub-blocks may be transmitted during one or more data bursts.

[0079] ECC block 408 may include ECC sub-blocks, such as ECC sub-blocks 408 ( 1 , 1 )- 408 ( 1 , 8 ) associated with data sub-blocks 401 ( 1 )- 401 ( 8 ).

[0080] The length of the data block and ECC block can be 512 bytes, and the length of each sub-block can be 64 bytes. Other sizes may be supported. The relationship between the size and / or number of ECC blocks per row and the size and / or number of data blocks may be different than Figure 5 The relationship shown in .

[0081] An ECC sub-block may be calculated by the ECC unit 430 whenever a data sub-block is received or at a later point in time.

[0082] The ECC sub-blocks may be cached in the ECC cache 432 before being written to the dynamic memory module 410. The ECC sub-blocks may be written to the dynamic memory module 410 at any time after the ECC sub-blocks are calculated. The ECC cache 432 is only an example or storage unit that may store the ECC sub-blocks. For example, a buffer may be used to store the ECC sub-blocks.

[0083] The dynamic memory module 410 may include one or more memory banks. In each memory bank, at most one row may be opened (activated) at a time.

[0084] A write operation to a particular row (currently closed) of the dynamic memory module 410 requires closing another row (currently open), activating the particular row, and writing one or more sub-blocks of data to the particular row.

[0085] It has been found to be particularly beneficial to write to a particular row all ECC sub-blocks that (a) are associated with data sub-blocks stored in that particular row, and (b) are generated while the particular row is still open, before the particular row is closed.

[0086] Writing an ECC sub-block associated with a particular row after the particular row has been closed requires closing the currently active row, (re)activating the particular row and writing one or more ECC sub-blocks to the particular row. This process consumes time and DDR bandwidth.

[0087] For example, to write an ECC sub-block associated with a specific row after the specific row is closed, every 7 data bursts, the current row should be precharged and another ECC row should be activated and written. The delay is:

[0088] 7*(tRP+tRCD+WL+8 数据 *4+tRP+tRCD+WL+1 ECC *4) = 1092 cycles

[0089] Where tRP is the row precharge time; tRCD is the RAS to CAS delay (RAS is the row activation strobe, CAS is the column activation strobe) and WL is the write delay. And where, assuming tRP = tRCD = RL = WL = 20 cycles and burst length = 16 (64 bytes, 4 cycles).

[0090] For example, before a specific row is closed, an ECC sub-block associated with the specific row is written. For every 7 data bursts, another 1 ECC burst should be written to the same row. ECC does not require additional PRECHARGE / ACTIVATE commands and can be written back together with the data. The delay is: tRP+tRCD+WL+7*(8 数据 +l ECC )*4=312 cycles. For another example of parameters that may be used, activate: tRP=tRCD=RL=WL=20 cycles, and burst length=16 (64 bytes, 4 cycles).

[0091] The dynamic memory controller 420 controls various operations related to the dynamic memory module 410, including a write operation, a precharge operation, and an activate operation, and may determine when to perform writing of one or more ECC sub-blocks before a specific row is closed.

[0092] The dynamic memory controller 420 may receive an access request (at Figure 5 442 in FIG. 4 and converts these access requests into dynamic memory controller commands, such as precharge row, activate row, and read or write row (see FIG. Figure 5 443 in the figure).

[0093] Figure 5 Two triple dynamic memory controller commands are shown:

[0094] 1. Precharge row 418(1).

[0095] 2. Activate row 418(2).

[0096] 3. Write data to row 418(2).

[0097] 4. Precharge row 418 (2)

[0098] 5. Activate another row.

[0099] 6. Read or write another line.

[0100] It should be noted that after activating a row, multiple read and / or write commands may be executed.

[0101] It may be beneficial to write all ECC sub-blocks computed during execution of the third command (read or write row 418(2)) to row 418(2) before executing the fourth command (precharge row 418(2)).

[0102] Thus, a dynamic memory controller command may include:

[0103] 1. Precharge row 418(1).

[0104] 2. Activate row 418(2).

[0105] 3. Write data to row 418(2).

[0106] i. Write ECC to row 418(2).

[0107] 4. Precharge row 418(2).

[0108] 5. Activate another row.

[0109] 6. Read or write another line.

[0110] Figure 6 Two timing diagrams 600 and 602 are shown.

[0111] Timing diagram 600 shows the following sequence of events (T represents a time point):

[0112] 1. Tl 611 - Activate a specific row 601.

[0113] 2. T2 612 —Receive data sub-block 602 .

[0114] 3. T3 613 - Calculate the ECC sub-block associated with the data sub-block 603.

[0115] 4. T4 614 —Write the data sub-block to the dynamic memory module 604 .

[0116] 5. T15 625 —Write the ECC sub-block into the dynamic memory module 605 .

[0117] 6. T16 626 - Precharge specific row 606.

[0118] Note that event 603 may occur after event 604, and events 603 and 604 may occur simultaneously.

[0119] It should be noted that writing a sub-block of data to a dynamic memory module may be performed upon receipt of a single sub-block of data, multiple sub-blocks of data may be aggregated before being written to the dynamic memory module, and so on.

[0120] Timing diagram 602 shows two repetitions of events 602 , 603 , and 604 before event 605 occurs.

[0121] Timing diagram 600 shows the following sequence of events (T represents a time point):

[0122] 1. TL 611 - Activates a specific row 601.

[0123] 2. T2 612 —Receive data sub-block 602 .

[0124] 3. T3 613 - Calculate the ECC sub-block associated with the data sub-block 603.

[0125] 4. T4 614 —Write the data sub-block to the dynamic memory module 604 .

[0126] 5. T5 615 —Receive data sub-block 602 .

[0127] 6. T6 616 - Calculate the ECC sub-block associated with the data sub-block 603.

[0128] 7. T7 617 —Write the data sub-block to the dynamic memory module 604 .

[0129] 8.T15 625—Write the ECC sub-block into the dynamic memory module 605.

[0130] 9. T16 626 - Precharge specific row 606.

[0131] Figure 7 is a flow chart illustrating method 700 .

[0132] Method 700 may begin by activating a particular row of a dynamic memory module at step 702 .

[0133] Step 702 may be triggered by a write command received by the dynamic memory controller.

[0134] Step 702 may be followed by step 704 of receiving (by the dynamic memory controller) a sub-block of data to be written to a particular row of the dynamic memory module.

[0135] A sub-block of data to be written (or targeted) to a particular row may be associated (by a dynamic memory controller or another entity) with address information indicating that the sub-block of data for the particular row should be written.

[0136] Step 704 may be followed by steps 706 and 708 .

[0137] Step 706 may include calculating an ECC sub-block associated with the (protection) data sub-block.

[0138] Step 708 may include writing the sub-block of data to the dynamic memory module over the communication link.

[0139] Steps 706 and 708 may be followed by step 720 of writing one or more ECC sub-blocks to the particular row before the particular row is precharged.

[0140] Writing the data unit to the dynamic memory module includes sending the data unit over the communication link.

[0141] The method 700 utilizes a tandem ECC configuration where the same communication line is used to transmit data bits and ECC bits at different points in time.

[0142] Steps 702-720 may be repeated for multiple rows, in particular one row after another. Each iteration selects a row, and after performing steps 702-720, the method may be performed with respect to the newly selected row. Figure 7 The specific rows are examples of selected rows.

[0143] The method 700 may be performed, for example, as part of ADAS operation and / or automated vehicle operation. The method 700 may be used for any other purpose.

[0144] Figure 8The method 700 is shown, which further includes step 707, storing the ECC sub-block associated with the data sub-block in a cache memory (e.g., Figure 5 Step 707 is after step 706 and before step 708.

[0145] Multiple iterations of steps 704 , 706 , and 708 may occur between the performance of steps 702 and 720 .

[0146] Any reference to the system shall apply mutatis mutandis to the method performed by the system and / or to a computer program product storing instructions which, once executed by the system, will cause the system to perform the method. The computer program product is non-transitory and may be, for example, an integrated circuit, a magnetic memory, an optical memory, a disk, etc.

[0147] Any reference to a method shall apply mutatis mutandis to a system configured to perform the method and / or to a computer program product storing instructions which, when executed by a system, will cause the system to perform the method.

[0148] Any reference to a computer program product shall apply mutatis mutandis to methods performed by the system and / or systems configured to execute the instructions stored in the computer program product.

[0149] The term "and / or" is additionally or alternatively.

[0150] In the foregoing specification, the invention has been described with reference to specific examples of embodiments of the invention. It will, however, be evident that various modifications and changes may be made therein without departing from the broader spirit and scope of the invention as set forth in the appended claims.

[0151] Furthermore, the terms "front", "rear", "top", "bottom", "above", "below", etc., if any, in the specification and claims are used for descriptive purposes only and are not necessarily used to describe permanent relative positions. It is understood that the terms so used are interchangeable under appropriate circumstances, such that the embodiments of the invention described herein are capable of operation in other orientations than those shown or otherwise described herein, for example.

[0152] Any arrangement of components for achieving the same functionality is effectively "associated" to achieve the desired functionality. Thus, any two components combined herein to achieve a particular functionality may be considered "associated" with each other to achieve the desired functionality, regardless of architecture or intermediate components. Likewise, any two components so associated may also be considered "operably connected" or "operably coupled" to each other to achieve the desired functionality.

[0153] Furthermore, those skilled in the art will recognize that the boundaries between the above operations are exemplary only. Multiple operations may be combined into a single operation, a single operation may be distributed among additional operations, and operations may be performed at least partially overlapping in time. Furthermore, alternative embodiments may include multiple instances of a particular operation, and the order of the operations may be changed in various other embodiments.

[0154] However, other modifications, changes, and substitutions are possible. Accordingly, the specification and drawings are to be regarded in an illustrative rather than a restrictive sense.

[0155] The phrase "may be X" means that condition X may be satisfied. This phrase also implies that condition X may not be satisfied. For example, any reference to a system including a specific component should also cover the case where the system does not include the specific component.

[0156] The terms "comprising", "including", "having", "consisting of", and "consisting essentially of" are used in an interchangeable manner. For example, any method may include at least the steps included in the drawings and / or the description, or only the steps included in the drawings and / or the description. The same applies to the system and the mobile computer.

[0157] It should be understood that for simplicity and clarity of illustration, the elements shown in the drawings are not necessarily drawn to scale. For example, for clarity, the dimensions of some elements may be exaggerated relative to other elements. In addition, reference numerals may be repeated between the drawings to indicate corresponding or similar elements where deemed appropriate.

[0158] Furthermore, for example, in one embodiment, the illustrated examples may be implemented as circuits located on a single integrated circuit or within the same device. Alternatively, the examples may be implemented as any number of separate integrated circuits or separate devices interconnected with each other in a suitable manner.

[0159] Furthermore, for example, the examples or portions of the examples may be implemented as software or code representations of physical circuitry or logical representations convertible into physical circuitry, for example, in any appropriate type of hardware description language.

[0160] Furthermore, the present invention is not limited to physical devices or units implemented in non-programmable hardware, but may also be applied to programmable devices or units capable of performing the desired device functions by operating according to appropriate program codes, such as mainframes, minicomputers, servers, workstations, personal computers, notepads, personal digital assistants, electronic games, automobiles and other embedded systems, cellular phones and various other wireless devices, generally referred to in this application as "computer systems".

[0161] However, other modifications, changes, and substitutions are possible. Accordingly, the specification and drawings are to be regarded in an illustrative rather than a restrictive sense.

[0162] In the claims, any reference symbols placed between brackets shall not be interpreted as limiting the claims. In addition, "comprising" does not exclude the presence of other elements or steps than those listed in the claims. In addition, the terms "one", "an" and "one" as used herein are defined as one or more. In addition, the use of introductory phrases such as "at least one" and "one or more" in the claims shall not be interpreted as implying that the introduction of another claim element by the indefinite article "one" or "one" will limit any particular claim containing such introduced claim element to an invention containing only one such element, even if the same claim includes the introductory phrases "one or more" or "at least one" and the indefinite article, for example, "one" or "one". The same is true for the use of definite articles. Unless otherwise specified, terms such as "first" and "second" are used to arbitrarily distinguish the elements described by such terms. Therefore, these terms are not necessarily intended to indicate the time or other priority of these elements, and the fact that certain measures are recorded only in different claims does not mean that the combination of these measures cannot be used advantageously.

[0163] Although certain features of the present invention have been illustrated and described herein, many modifications, substitutions, changes and equivalents will now occur to those skilled in the art. It is therefore to be understood that the appended claims are intended to cover all such modifications and changes that fall within the true spirit of the invention.

[0164] Any combination of any components and / or any components of any units of the systems shown in any figures and / or description and / or claims may be provided.

[0165] Any combination of any systems shown in any figures and / or description and / or claims may be provided.

[0166] Any combination of the steps, operations and / or methods shown in any drawings and / or description and / or claims may be provided.

[0167] Any combination of the operations shown in any of the figures and / or description and / or claims may be provided.

[0168] Any combination of the methods shown in any of the figures and / or description and / or claims may be provided.

[0169] In addition, although illustrative embodiments have been described herein, those skilled in the art will understand the scope of any and all embodiments with equivalent elements, modifications, omissions, combinations (e.g., various aspects of various embodiments), adaptations and / or changes based on this disclosure. The limitations in the claims should be interpreted broadly based on the language used in the claims and are not limited to the examples described in this specification or during the conduct of this application. These examples should be interpreted as non-exclusive. In addition, the steps of the disclosed method can be modified in any way, including by reordering steps and / or inserting or deleting steps. Therefore, this specification and examples are considered to be illustrative only, and the true scope and spirit are indicated by the full scope of the attached claims and their equivalents.

Claims

1. A method for error correction, the method comprising: opening a selected row of a memory bank among a plurality of memory banks of a dynamic memory module; receiving, by the dynamic memory module, a selected sub-block of data when the selected row is opened, wherein the selected sub-block of data is received via a communication link and is targeted for writing to the selected row; When the selected row is turned on, calculating, by an error correction code unit, a selected error correction code sub-block associated with the selected data sub-block; caching the selected error correction code sub-block in a cache memory different from the dynamic memory module; writing the selected error correction code sub-block to the selected row when the selected row is open, wherein the writing comprises sending the selected error correction code sub-block to the dynamic memory module via the communication link; close the selected row; receiving a request to read a first plurality of sub-blocks of data stored at different memory banks among the plurality of memory banks of the dynamic memory module; checking whether the cache memory stores an error correction sub-block associated with any one of the first plurality of data sub-blocks; retrieving the first plurality of sub-blocks of data from the dynamic memory module via the communication link; retrieving an error correction sub-block associated with the first plurality of data sub-blocks, wherein the retrieving comprises: retrieving from the cache memory, but not from the dynamic memory module, any error correction sub-block stored in the cache memory and associated with any one of the first plurality of data sub-blocks; and The first plurality of data sub-blocks are error corrected using the error correction sub-blocks associated with the first plurality of data sub-blocks to provide a first plurality of error-corrected data sub-blocks.

2. The method according to claim 1, wherein: Turning off the selected row includes precharging the selected row.

3. The method of claim 1, comprising storing more data sub-blocks than error correction code sub-blocks in the selected row.

4. The method of claim 1 , comprising storing a data block and a single error correction code block in the selected row; wherein: Each data block comprises data sub-blocks, and wherein the single error-correction code block comprises error-correction code sub-blocks.

5. The method according to claim 1, comprising: opening a new selected row belonging to any one of the plurality of memory banks; When the newly selected row is opened, the dynamic memory module receives a newly selected data sub-block through the communication link, the newly selected data sub-block being targeted for writing into the newly selected row; When the newly selected row is opened, calculating, by the error correction code unit, a new selected error correction code sub-block associated with the newly selected data sub-block; caching the newly selected error correction code sub-block in the cache memory; When the newly selected row is opened, writing the newly selected error correction code sub-block to the newly selected row, wherein the writing comprises sending the newly selected error correction code sub-block to the dynamic memory module through the communication link; and Closes the newly selected row.

6. The method according to claim 1, comprising: The first plurality of error-corrected sub-blocks of data are processed during at least one of an autonomous driving operation, a semi-autonomous driving operation, and a driver assistance technology operation.

7. The method of claim 1 , comprising initiating a human takeover of control of the vehicle, wherein: The control is handed over from an autonomous control module of the vehicle.

8. The method according to claim 1, wherein: The selected sub-block of data includes a segment of one or more images acquired by the radar.

9. The method according to claim 1, wherein: The selected sub-block of data includes segments of one or more images acquired by a LIDAR sensor.

10. The method according to claim 1, wherein: The selected sub-block of data includes segments of one or more camera images.

11. The method according to claim 1, wherein: The selected sub-block of data includes executable code.

12. A system with error correction capability, the system comprising: Dynamic memory controller; a dynamic memory module coupled to the communication link; Cache memory; and Error correction code unit; Wherein, the dynamic memory controller is arranged to: (a) open a selected row of a memory bank among a plurality of memory banks of a dynamic memory module; (b) when the selected row is opened, receive a selected data sub-block, the selected data sub-block being targeted for writing into the selected row; wherein the dynamic memory module is configured to receive the selected data sub-block from the dynamic memory controller via a communication link; wherein the error correction code unit is arranged to calculate a selected error correction code sub-block associated with the selected data sub-block when the selected row is turned on; wherein the cache memory is different from the dynamic memory module and is arranged to cache the selected error correction code sub-block; Wherein, the dynamic memory controller is further arranged as follows: (a) sending the selected error correction code sub-block to the dynamic memory module via the communication link; (b) writing the selected error correction code sub-block into the selected row via the communication link when the selected row is turned on; (c) closing the selected row; (d) receiving a request for reading a first plurality of data sub-blocks stored at different memory banks among the plurality of memory banks of the dynamic memory module; (e) checking whether the cache memory stores an error correction sub-block associated with any one of the first plurality of data sub-blocks; (f) retrieving the first plurality of sub-blocks of data from the dynamic memory module; and (g) retrieving an error correction sub-block associated with the first plurality of data sub-blocks, wherein the retrieval of the error correction sub-block comprises: retrieving, from the cache memory but not from the dynamic memory module, any error correction sub-block stored in the cache memory and associated with any one of the first plurality of data sub-blocks; and wherein the error correction code unit is arranged to error correct the first plurality of data sub-blocks using the error correction sub-block associated with the first plurality of data sub-blocks to provide a first plurality of error-corrected data sub-blocks.

13. The system according to claim 12, wherein: The dynamic memory controller includes the error correction code unit and the cache memory.

14. The system according to claim 12, wherein: The dynamic memory controller does not include the error correction code unit and the cache memory.

15. The system of claim 12, wherein: The dynamic memory controller is arranged to shut down the selected row by precharging the selected row.

16. The system of claim 12, wherein: The dynamic memory module is arranged to store more data sub-blocks than error correction code sub-blocks in the selected row.

17. The system of claim 12, wherein: The dynamic memory module is arranged to store data blocks and a single error correction code block in the selected row; wherein each data block comprises data sub-blocks, and wherein the single error correction code block comprises error correction code sub-blocks.

18. The system of claim 12, wherein: The dynamic memory controller is arranged to: (a) open a newly selected row of any one of the plurality of memory banks; (b) when the newly selected row is opened, receive a newly selected sub-block of data, the newly selected sub-block of data being targeted for writing into the newly selected row; (c) sending the newly selected data sub-block to the dynamic memory module via the communication link, wherein the error correction code unit is arranged to calculate a new selected error correction code sub-block associated with the newly selected data sub-block when the newly selected row is opened; and wherein the dynamic memory controller is further arranged to: (a) write the newly selected error correction code sub-block to the newly selected row via the communication link when the newly selected row is opened; and (b) close the newly selected row.

19. The system of claim 12, wherein: The processing unit is arranged to process the first plurality of error-corrected sub-blocks of data during at least one of an autonomous driving operation, a semi-autonomous driving operation, and a driver assistance technology.

20. The system of claim 12, wherein: The processing unit is arranged to initiate a human takeover of control of a vehicle, wherein said control is handed over from an autonomous control module of said vehicle.

21. The system of claim 12, wherein: The selected sub-block of data includes a segment of one or more images acquired by the radar.

22. The system of claim 12, wherein: The selected sub-block of data includes segments of one or more images acquired by a LIDAR sensor.

23. The system of claim 12, wherein: The selected sub-block of data includes segments of one or more camera images.

24. The system of claim 12, wherein: The selected sub-block of data includes executable code.

25. A computer program product storing instructions, which, when executed by a computer system, cause the computer system to perform the following steps: opening a selected row of a memory bank among a plurality of memory banks of a dynamic memory module; When the selected row is opened, a selected data sub-block is received by the dynamic memory module, wherein: The selected sub-block of data is received via a communication link and targeted for writing to the selected row; When the selected row is turned on, calculating, by an error correction code unit, a selected error correction code sub-block associated with the selected data sub-block; caching the selected error correction code sub-block in a cache memory different from the dynamic memory module; writing the selected error correction code sub-block to the selected row when the selected row is open, wherein the writing comprises sending the selected error correction code sub-block to the dynamic memory module via the communication link; close the selected row; receiving a request to read a first plurality of sub-blocks of data stored at different memory banks among the plurality of memory banks of the dynamic memory module; checking whether the cache memory stores an error correction sub-block associated with any one of the first plurality of data sub-blocks; retrieving the first plurality of sub-blocks of data from the dynamic memory module; retrieving an error correction sub-block associated with the first plurality of data sub-blocks, wherein the retrieving comprises: retrieving from the cache memory, but not from the dynamic memory module, any error correction sub-block stored in the cache memory and associated with any one of the first plurality of data sub-blocks; as well as The first plurality of data sub-blocks are error corrected using the error correction sub-blocks associated with the first plurality of data sub-blocks to provide a first plurality of error-corrected data sub-blocks.

26. The computer program product of claim 25, wherein: Turning off the selected row includes precharging the selected row.

27. The computer program product of claim 25 storing instructions for storing more data sub-blocks than error correction code sub-blocks in the selected row.

28. The computer program product of claim 25 storing instructions for storing a data block and a single error correction code block in the selected row; wherein: Each data block comprises data sub-blocks, and wherein the single error-correction code block comprises error-correction code sub-blocks.

29. The computer program product of claim 25 storing instructions for: opening a new selected row belonging to any one of the plurality of memory banks; When the newly selected row is opened, the dynamic memory module receives a newly selected data sub-block through the communication link, the newly selected data sub-block being targeted for writing into the newly selected row; When the newly selected row is opened, calculating, by the error correction code unit, a new selected error correction code sub-block associated with the newly selected data sub-block; caching the newly selected error correction code sub-block in the cache memory; When the newly selected row is opened, writing the newly selected error correction code sub-block to the newly selected row, wherein the writing comprises sending the newly selected error correction code sub-block to the dynamic memory module through the communication link; and Closes the newly selected row.

30. The computer program product of claim 25 storing instructions for processing the first plurality of error-corrected sub-blocks of data during at least one of an autonomous driving operation, a semi-autonomous driving operation, and a driver assistance technology operation.

31. The computer program product of claim 25 storing instructions for initiating a human takeover of control of a vehicle, wherein: The control is handed over from an autonomous control module of the vehicle.

32. The computer program product of claim 25, wherein: The selected sub-block of data includes a segment of one or more images acquired by the radar.

33. The computer program product of claim 25, wherein: The selected sub-block of data includes segments of one or more images acquired by a LIDAR sensor.

34. The computer program product of claim 25, wherein: The selected sub-block of data includes segments of one or more camera images.

35. The computer program product of claim 25, wherein: The selected sub-block of data includes executable code.