A semiconductor device (1, 2) comprising: a main-arithmetic unit (10, 11) configured to execute a program; a sub-arithmetic unit (22, 22a, 22b, 23) configured to execute a process of a part of the program executed by the main-arithmetic unit (10, 11); and a shared memory configured to be accessed by the main-arithmetic unit (10, 11) and the sub-arithmetic unit (22, 22a, 22b, 23), wherein the sub-arithmetic unit (22, 22a, 22b, 23) comprises: a register configured to store an access permission range address value; an information processing unit configured to execute a predetermined process according to an operation instruction provided from the main-arithmetic unit (10, 11); and a memory protection unit configured to provide, among access requests issued from the information processing unit to the shared memory, an access request for an address within an access permission range specified by the access permission range address value to the shared memory, and block an access request for an address outside the access permission range specified by the access permission range address value; characterized in that: the access permission range address value is provided from the main-arithmetic unit (10, 11); the main-arithmetic unit (10, 11) executes, as the program, a reliability-verified program having high reliability and a reliability-unverified program having reliability lower than that of the reliability-verified program, and a process for storing the access permission range address value into the register of the sub-arithmetic unit (22, 22a, 22b, 23) is performed by the reliability-verified program. a main-arithmetic unit (10, 11) configured to execute a program; a sub-arithmetic unit (22, 22a, 22b, 23) configured to execute a process of a part of the program executed by the main-arithmetic unit (10, 11); and a shared memory configured to be accessed by the main-arithmetic unit (10, 11) and the sub-arithmetic unit (22, 22a, 22b, 23), wherein the sub-arithmetic unit (22, 22a, 22b, 23) comprises: a register configured to store an access permission range address value; an information processing unit configured to execute a predetermined process according to an operation instruction provided from the main-arithmetic unit (10, 11); and a memory protection unit configured to provide, among access requests issued from the information processing unit to the shared memory, an access request for an address within an access permission range specified by the access permission range address value to the shared memory, and block an access request for an address outside the access permission range specified by the access permission range address value; a register configured to store an access permission range address value; an information processing unit configured to execute a predetermined process according to an operation instruction provided from the main-arithmetic unit (10, 11); and a memory protection unit configured to provide, among access requests issued from the information processing unit to the shared memory, an access request for an address within an access permission range specified by the access permission range address value to the shared memory, and block an access request for an address outside the access permission range specified by the access permission range address value; characterized in that: the access permission range address value is provided from the main-arithmetic unit (10, 11); the main-arithmetic unit (10, 11) executes, as the program, a reliability-verified program having high reliability and a reliability-unverified program having reliability lower than that of the reliability-verified program, and a process for storing the access permission range address value into the register of the sub-arithmetic unit (22, 22a, 22b, 23) is performed by the reliability-verified program. the access permission range address value is provided from the main-arithmetic unit (10, 11); the main-arithmetic unit (10, 11) executes, as the program, a reliability-verified program having high reliability and a reliability-unverified program having reliability lower than that of the reliability-verified program, and a process for storing the access permission range address value into the register of the sub-arithmetic unit (22, 22a, 22b, 23) is performed by the reliability-verified program.