1. A method for dynamic separation of transactionally-accessed and non-transactionally accessed data comprising: providing protect/unprotect operations to designate data as transactionally-accessed and non-transactionally-accessed; and providing strong semantics to a program that designates data for a correct access mode prior to access, the correct access mode being transactional access for transactionally accessed data.